# 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)