Lesson 8: Bottom Up Parsing and Derivations in Compiler Theory

Lesson 8: Bottom Up Parsing and Derivations in Compiler Theory
paly

In this lesson, teacher Linus Kllberg explains the concept of bottom up parsing and how it is used in compiler theory. The lesson also covers derivations and reductions in grammar, with examples provided.

  • Uploaded on | 1 Views
  • agate agate

About Lesson 8: Bottom Up Parsing and Derivations in Compiler Theory

PowerPoint presentation about 'Lesson 8: Bottom Up Parsing and Derivations in Compiler Theory'. This presentation describes the topic on In this lesson, teacher Linus Kllberg explains the concept of bottom up parsing and how it is used in compiler theory. The lesson also covers derivations and reductions in grammar, with examples provided.. The key topics included in this slideshow are bottom up parsing, derivations, reductions, grammar, compiler theory,. Download this presentation absolutely free.

Presentation Transcript


1. Lesson 8 CDT301 Compiler Theory, Spring 2011 Teacher: Linus Kllberg

2. 2 Outline Bottom-up parsing: Derivations and reductions Shift-reduce parsing LR parsing

3. BOTTOM-UP PARSING 3

4. Derivations and reductions Grammar: E E + T | T T T * F | F F ( E ) | id 4

5. Derivations and reductions id * id F T F T E id * id F T F T E id * id F T F T E id * id F T F T E id * id F T F T E id * id F T F T E E T T * F F * F id * F id * id

6. Derivations and reductions Leftmost derivation, E * lm id * id : E T T * F F * F id * F id * id Rightmost derivation, E * rm id * id : E T T * F T * id F * id id * id 6

7. Derivations and reductions Reduction = reverse derivation Rightmost derivation: E T T * F T * id F * id id * id Leftmost reduction: id * id F * id T * id T * F T E 7

8. Handles 8 Reduction Handle id * id F * id T * id T * F T E F id T F F id T T * F E T

9. Derivations and reductions id * id F T F T E id * id F T F T E id * id F T F T E id * id F T F T E id * id F T F T E id * id F T F T E id * id F * id T * id T * F T E

10. Exercise (1) Given the previous expression grammar, E E + T | T T T * F | F F ( E ) | id a) write down the leftmost reduction of the string ( id + id ). b) write down the handles in all the sentential forms along the reduction. 10

11. Shift-reduce parsers Performs a leftmost reduction More powerful than top-down parsers Commonly generated by parser generators 11

12. Shift-reduce parsers Four actions: Shift: consume and shift a terminal onto a stack Reduce: pop a handle from the stack and push the nonterminal Accept Error 12

13. Shift-reduce parsing in action Stack Input Action $ id * id $ sh. id $ id * id $ red. by F id $ F * id $ red. by T F $ T * id $ sh. * $ T * id $ sh. id $ T * id $ red. by F id $ T * F $ red. by T T * F $ T $ red. by E T $ E $ accept 13 id * id F * id T * id T * F T E

14. Exercise (2) Similar to the previous demonstration, do a shift-reduce parse of the same string, ( id + id ), as in the previous exercise, using the same grammar: E E + T | T T T * F | F F ( E ) | id Tip: reuse your leftmost reduction from the previous exercise. 14

15. LR(k) parsing Implementation of shift-reduce parsing L eft-to-right scanning of the input, R ightmost derivation in reverse k = 0 or k = 1: nr of lookahead tokens 15

16. Why LR parsing? LR(k) more powerful than LL(k) Efficient Early detection of syntax errors 16

17. Overview of LR parsing Table-driven Shifts states onto the stack One state represents: symbol + context 17

18. (1) E E + T (2) E T (3) T T * F (4) T F (5) F ( E ) (6) F id 18 State ACTION GOTO id + * ( ) $ E T F 0 s5 s4 1 2 3 1 s6 acc 2 r2 s7 r2 r2 3 r4 r4 r4 r4 4 s5 s4 8 2 3 5 r6 r6 r6 r6 6 s5 s4 9 3 7 s5 s4 10 8 s6 s11 9 r1 s7 r1 r1 10 r3 r3 r3 r3 11 r5 r5 r5 r5

19. LR parsing algorithm push state 0 repeat until success: s state on stack top a lookahead token case ACTION [s, a] of shift t: consume a push t reduce by A : pop | | states t state on stack top push GOTO [t, A] accept: success true empty: handle error 19

20. LR parsing in action Stack Input Action $ 0 id * id $ sh. 5 $ 0 5 id * id $ red. by (6) F id $ 0 3 F * id $ red. by (4) T F $ 0 2 T * id $ sh. 7 $ 0 2 T 7 * id $ sh. 5 $ 0 2 T 7 * 5 id $ red. by (6) F id $ 0 2 T 7 * 10 F $ red. by (3) T T * F $ 0 2 T $ red. by (2) E T $ 0 1 E $ accept 20

21. Exercise (3) Parse the string hxe. (1) S h B e (2) B B A (3) B (4) A x (5) A t 21 State ACTION GOTO h x t e $ S B A 0 s2 1 1 acc 2 r3 r3 r3 3 3 s6 s7 s4 5 4 r1 5 r2 r2 r2 6 r4 r4 r4 7 r5 r5 r5

22. Constructing the parsing table Several methods: Simple LR (SLR) Canonical LR LookAhead LR (LALR) Next time: SLR 22

23. Conclusion Bottom-up parsing vs. top-down parsing Derivations and reductions Sentential forms Handles Shift-reduce parsing LR parsing 23

24. Next time Creating LR parsing tables using the simple LR method 24