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