Syntax-Directed Translation
Gist: Semantic actions are attached to gramatical rules. Most importantly, these actions make intermediate code generation and type checking.
        Rule:     Semantic Action:
Ei ® Ej + Ek { Ei.a := Ej.a + Ek.a}
Ei ® Ej * Ek { Ei.a := Ej.a * Ek.a}
Ei ® (Ej) { Ei.a := Ej.a }
Ei  ®  i { Ei.a  := i.val }
+
*
i
i
i
Example:
1
+
2
*
3
Rule:
Action:
E1
E1   ®  i
E2
E2   ®  i
E3
E3   ®  i
E4
E4 ® E2 * E3
E5
E5 ® E1 + E4
E1.a:= i.val
E1.a = 1
E2.a:= i.val
E2.a = 2
E3.a:= i.val
E3.a = 3
E4.a:= E2.a*E3.a
E4.a = 6
E5.a:= E1.a+E4.a
E5.a = 7
2/69