Lecture 12a: Data-Flow Analysis

Translating Trees to Control-Flow Graphs

Translation of syntax trees to control-flow graphs is (at a high-level) similar to translation from regular expressions to finite-state machines (see closure properties of finite state machines).

Decomposing Complex Expressions

If Statements to CFG

While Statements to CFG

Source and Target CFG Vertices

In Scala:

Interpreting CFG - Meaning of CFG

Idea of Data Flow Analysis for Variable Ranges

Scala Code for Data-Flow Analysis