bottoms up
play

Bottoms Up! One View of a Bottom-Up Parse E E T E E + T T T int - PowerPoint PPT Presentation

Different Types of Parsing Top Down Parsing Beginning with the start symbol, try to guess the productions to apply to end up at the user's program. Bottom-Up Parsing Beginning with the user's program, try to apply productions in


  1. Different Types of Parsing • Top Down Parsing • Beginning with the start symbol, try to guess the productions to apply to end up at the user's program. • Bottom-Up Parsing • Beginning with the user's program, try to apply productions in reverse to convert the program back into the start symbol. Wednesday, April 10, 13

  2. Bottoms Up!

  3. One View of a Bottom-Up Parse E E → T E → E + T T T → int T → ( E ) E E E E T T T T int + ( int + int + int )

  4. A Second View of a Bottom-Up Parse E → T ⇒ int + (int + int + int) E → E + T ⇒ T + (int + int + int) T → int ⇒ E + (int + int + int) T → ( E ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) ⇒ E + ( E + T + int) ⇒ E + ( E + int) ⇒ E + ( E + T ) ⇒ E + ( E ) ⇒ E + T ⇒ E

  5. A Second View of a Bottom-Up Parse E → T ⇒ int + (int + int + int) E → E + T ⇒ T + (int + int + int) T → int ⇒ E + (int + int + int) T → ( E ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) ⇒ E + ( E + T + int) ⇒ E + ( E + int) ⇒ E + ( E + T ) ⇒ E + ( E ) ⇒ E + T ⇒ E

  6. A left-to-right, bottom-up parse is a rightmost derivation traced in reverse.

  7. A Third View of a Bottom-Up Parse ⇒ int + (int + int + int) ⇒ T + (int + int + int) ⇒ E + (int + int + int) Each step in this bottom-up Each step in this bottom-up ⇒ E + ( T + int + int) parse is called a reduction . parse is called a reduction . ⇒ E + ( E + int + int) We reduce a substring of We reduce a substring of ⇒ E + ( E + T + int) the sentential form back to the sentential form back to ⇒ E + ( E + int) a nonterminal. a nonterminal. ⇒ E + ( E + T ) ⇒ E + ( E ) ⇒ E + T ⇒ E

  8. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) T E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T int + ⇒ E + ( E + T + int) E T ⇒ E + ( E + int) + int ⇒ E + ( E + T ) T int ⇒ E + ( E ) ⇒ E + T int ⇒ E int + ( int + int + int )

  9. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) T E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T int + ⇒ E + ( E + T + int) E T ⇒ E + ( E + int) + int ⇒ E + ( E + T ) T int ⇒ E + ( E ) ⇒ E + T int ⇒ E int + ( int + int + int )

  10. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) T E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T int + ⇒ E + ( E + T + int) E T ⇒ E + ( E + int) + int ⇒ E + ( E + T ) T int ⇒ E + ( E ) ⇒ E + T int ⇒ E int + ( int + int + int )

  11. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) T E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T + ⇒ E + ( E + T + int) E T ⇒ E + ( E + int) + int ⇒ E + ( E + T ) T int ⇒ E + ( E ) ⇒ E + T int ⇒ E int + ( int + int + int )

  12. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) T E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T + ⇒ E + ( E + T + int) E T ⇒ E + ( E + int) + int ⇒ E + ( E + T ) T int ⇒ E + ( E ) ⇒ E + T int ⇒ E int + ( int + int + int )

  13. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T + ⇒ E + ( E + T + int) E T ⇒ E + ( E + int) + int ⇒ E + ( E + T ) T int ⇒ E + ( E ) ⇒ E + T int ⇒ E int + ( int + int + int )

  14. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T + ⇒ E + ( E + T + int) E T ⇒ E + ( E + int) + int ⇒ E + ( E + T ) T int ⇒ E + ( E ) ⇒ E + T int ⇒ E int + ( int + int + int )

  15. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T + ⇒ E + ( E + T + int) E T ⇒ E + ( E + int) + int ⇒ E + ( E + T ) T int ⇒ E + ( E ) ⇒ E + T ⇒ E int + ( int + int + int )

  16. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T + ⇒ E + ( E + T + int) E T ⇒ E + ( E + int) + int ⇒ E + ( E + T ) T int ⇒ E + ( E ) ⇒ E + T ⇒ E int + ( int + int + int )

  17. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T + ⇒ E + ( E + T + int) E T ⇒ E + ( E + int) + int ⇒ E + ( E + T ) int ⇒ E + ( E ) ⇒ E + T ⇒ E int + ( int + int + int )

  18. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T + ⇒ E + ( E + T + int) E T ⇒ E + ( E + int) + int ⇒ E + ( E + T ) int ⇒ E + ( E ) ⇒ E + T ⇒ E int + ( int + int + int )

  19. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T + ⇒ E + ( E + T + int) E T ⇒ E + ( E + int) + int ⇒ E + ( E + T ) ⇒ E + ( E ) ⇒ E + T ⇒ E int + ( int + int + int )

  20. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T + ⇒ E + ( E + T + int) E T ⇒ E + ( E + int) + int ⇒ E + ( E + T ) ⇒ E + ( E ) ⇒ E + T ⇒ E int + ( int + int + int )

  21. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T + ⇒ E + ( E + T + int) ⇒ E + ( E + int) int ⇒ E + ( E + T ) ⇒ E + ( E ) ⇒ E + T ⇒ E int + ( int + int + int )

  22. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T + ⇒ E + ( E + T + int) ⇒ E + ( E + int) int ⇒ E + ( E + T ) ⇒ E + ( E ) ⇒ E + T ⇒ E int + ( int + int + int )

  23. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T + ⇒ E + ( E + T + int) ⇒ E + ( E + int) ⇒ E + ( E + T ) ⇒ E + ( E ) ⇒ E + T ⇒ E int + ( int + int + int )

  24. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) E T + ⇒ E + ( E + T + int) ⇒ E + ( E + int) ⇒ E + ( E + T ) ⇒ E + ( E ) ⇒ E + T ⇒ E int + ( int + int + int )

  25. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) ⇒ E + ( E + T + int) ⇒ E + ( E + int) ⇒ E + ( E + T ) ⇒ E + ( E ) ⇒ E + T ⇒ E int + ( int + int + int )

  26. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) E ( ) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) ⇒ E + ( E + T + int) ⇒ E + ( E + int) ⇒ E + ( E + T ) ⇒ E + ( E ) ⇒ E + T ⇒ E int + ( int + int + int )

  27. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) ⇒ E + ( E + T + int) ⇒ E + ( E + int) ⇒ E + ( E + T ) ⇒ E + ( E ) ⇒ E + T ⇒ E int + ( int + int + int )

  28. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) E T + ⇒ T + (int + int + int) ⇒ E + (int + int + int) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) ⇒ E + ( E + T + int) ⇒ E + ( E + int) ⇒ E + ( E + T ) ⇒ E + ( E ) ⇒ E + T ⇒ E int + ( int + int + int )

  29. A Third View of a Bottom-Up Parse E ⇒ int + (int + int + int) ⇒ T + (int + int + int) ⇒ E + (int + int + int) ⇒ E + ( T + int + int) ⇒ E + ( E + int + int) ⇒ E + ( E + T + int) ⇒ E + ( E + int) ⇒ E + ( E + T ) ⇒ E + ( E ) ⇒ E + T ⇒ E int + ( int + int + int )

Recommend


More recommend