Translating Syntax Tree to CFG
Similar to
- fresh variable names instead of stack for expressions
 - edges in CFG instead of jump instructions
 - test edges to encode conditional branches
 
Example of translation
Building a Translator to CFG
Simulating “next” instruction
- the command to emit next instruction adds a successor edge in the graph
 - makes code generation similar to bytecode generation
 
Translating Expressions
- emit instructions, return stored variable name - like stack
 - alternative: passing the destination of assignment
 
Example:
len = (a + b + c) * 2; len = (a + len + c) * 2;
Number of introduced variables
- we will worry about this later
 
Translating Control-Flow
- what do we need to pass into translation functions?