Data-Flow Analysis

How to Generate Control-Flow Graph

Recall Control-Flow Graph Definition from the end of Lecture 10

In Scala:

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

Idea of Data Flow Analysis for Variable Ranges