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
Source and Target CFG Vertices
In Scala:
Interpreting CFG
Idea of Data Flow Analysis for Variable Ranges
Lattices
References
- Tiger book, chapters 10, 17
- Abstract Interpretation in a Nutshell by Patrick Cousot (also a course at MIT)