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
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
Lattices
References
- Lecture notes on static analysis by Michael Schwartzbach, especially chapters 4,5,6
- Compiler Construction by Niklaus Wirth, chapters 9,10, 11
- Tiger book, Chapters 7-11, 17
- Abstract Interpretation in a Nutshell by Patrick Cousot (also a course at MIT)