Direct Generation of 3AC
15/69
a
+
b
c
*
Input:
Gist: BU parser directs the generation of 3AC directly.
Example:
Rule:       Semantic Action:
1: S   ® i = Ek { generate(‘=’, Ek .loc,   , i.loc)}
2: Ei ® Ej + Ek { generate(‘+’, Ej .loc, Ek .loc, Ei .loc)}
3: Ei ® Ej * Ek { generate(‘*’, Ej .loc, Ek .loc, Ei .loc)}
4: Ei ® (Ej) { generate(‘=’, Ej .loc,   , Ei .loc)}
5: Ei   ®  i { generate(‘=’, i.loc,   , Ei .loc)}
x
=
Output:
E1
i
5
(‘=’, Ea,   , E1.loc)
i
E2
5
(‘=’, Eb,   , E2 .loc)
5
i
E3
(‘=’, Ec,   , E3 .loc)
3
E4
*
(‘*’, E2.loc,E3.loc,E4.loc)
2
E5
+
(‘+’, E1.loc,E4.loc,E5.loc)
(‘=’, E5 .loc,   , Ex)
S
=
i
1