Download presentation

Presentation is loading. Please wait.

Published byAaron Bannister Modified over 3 years ago

1
AST Generation Prepared by Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Programming Language Concepts Lecture 9

2
Replacing Recursion with Iteration Not all the nonterminals are needed. The recursion in SL, X, Y and Z can be replaced with iteration.

3
Replacing Recursion with Iteration (cont’d) proc S; {S → begin SL end → id := E; case Next_Token of T_begin :Read(T_begin); repeat S; until Next_Token {T_begin,T_id}; Read(T_end); T_id : Read(T_id); Read (T_:=); E; Read (T_;); otherwiseError; end end; Replaces recursion on Z. Replaces call to SL. SL SL → S Z Z → S Z → }

4
Replacing Recursion with Iteration (cont’d) proc E; {E → TY Y → +TY → } T; while Next_Token = T_+ do Read (T_+); T; od end; Replaces recursion on Y.

5
Replacing Recursion with Iteration (cont’d) proc T; {T → PX X → *T → } P; if Next_Token = T_* thenRead (T_*); T; end; Replaces call to X.

6
Replacing Recursion with Iteration (cont’d) proc P;{P → (E) → id } case Next_Token of T_(: Read (T_(); E; Read (T_)); T_id: Read (T_id); otherwise Error; end end;

7
Construction of Derivation Tree for the Original Grammar (Bottom Up) proc S; { (1)S → begin SL end (2)S → begin SL end → id := E; → id := E; SL → SZ SL → SL S Z → SZ → S → } case Next_Token of T_begin : Read(T_begin); S; Write (SL → S); while Next_Token in {T_begin,T_id} do S; Write (SL → SL S); od Read(T_end); Write (S → begin SL end);

8
Construction of Derivation Tree for the Original Grammar (Bottom Up) (cont’d) T_id : Read(T_id); Read (T_:=); E; Read (T_;); Write (S → id :=E ;); otherwise Error; end end;

9
Construction of Derivation Tree for the Original Grammar (Bottom Up) (cont’d) proc E; {(1)E → TY (2) E → E+T Y → +TY → T → } T; Write (E → T); while Next_Token = T_+ do Read (T_+); T; Write (E → E+T); od end

10
Construction of Derivation Tree for the Original Grammar (Bottom Up) (cont’d) proc T; {(1)T → PX (2) T → P*T X → *T → P → } P; if Next_Token = T_* thenRead (T_*); T; Write (T → P*T) else Write (T → P); end;

11
Construction of Derivation Tree for the Original Grammar (Bottom Up) (cont’d) proc P;{(1)P → (E) (2)P → (E) → id → id } // SAME AS BEFORE end;

12
Example Input String : begin id := (id + id) * id; end Output : P → id T → P E → T P → id T → P E → E+T P → (E) P → id T → P T → P*T E → T S → id:=E; SL → S S → begin SL end

14
Generating the Abstract Syntax Tree, Bottom Up, for the Original Grammar proc S; { S → begin S+ end 'block' → id := E; 'assign' var N:integer; case Next_Token of T_begin :Read(T_begin); S; N:=1; while Next_Token in {T_begin,T_id} do S; N:=N+1; od Read(T_end); Build Tree ('block',N); T_id : Read(T_id); Read (T_:=); E; Read (T_;); Build Tree ('assign',2); otherwise Error end end; Assume this builds a node. Build Tree (‘x’,n) pops n trees from the stack, builds an ‘x’ node as their parent, and pushes the resulting tree.

15
Generating the Abstract Syntax Tree, Bottom Up, for the Original Grammar (cont’d) proc E; {E → E+T '+' → T } T; while Next_Token = T_+ do Read (T_+) T; Build Tree ('+',2); od end; Left branching in tree!

16
Generating the Abstract Syntax Tree, Bottom Up, for the Original Grammar (cont’d) proc T; {T → P*T '*' → P } P; if Next_Token = T_* thenRead (T_*) T; Build Tree ('*',2); end; Right branching in tree!

17
Generating the Abstract Syntax Tree, Bottom Up, for the Original Grammar (cont’d) proc P;{P → (E) → id } // SAME AS BEFORE, // i.e.,no trees built end;

18
Example Input String : begin id 1 := (id 2 + id 3 ) * id 4 ; end Sequence of events : id 1 id 2 id 3 id 4 BT( ' + ',2) BT( ' * ',2) BT( ' assign ',2) BT( ' block ',1)

20
Summary Bottom-up or top-down tree construction. Original or modified grammar. Derivation Tree or Abstract Syntax Tree. Technique of choice (Hint: project) Top-down, recursive descent parser. Bottom-up tree construction for the original grammar.

21
AST Generation Prepared by Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Programming Language Concepts Lecture 9

Similar presentations

OK

Exercise 1 A ::= B EOF B ::= | B B | (B) Tokens: EOF, (, ) Generate constraints and compute nullable and first for this grammar. Check whether first.

Exercise 1 A ::= B EOF B ::= | B B | (B) Tokens: EOF, (, ) Generate constraints and compute nullable and first for this grammar. Check whether first.

© 2018 SlidePlayer.com Inc.

All rights reserved.

Ads by Google

Simple machines for kids ppt on batteries Ppt on natural numbers meaning Ppt on indian politics movie Ppt on art and craft movement wikipedia Ppt on heritage sites of india Ppt on index numbers lecture Ppt on building information modeling school Ppt on online advertising in india Ppt on nuclear family vs joint family Ppt on area of parallelogram and triangle for class 9