PAG: The Program Analyzer Generator

Discontinuation notice: As of June 1st, 2007, PAG is no longer available as a stand-alone product. For further information, contact

Static program analysis made easy.

Producing high quality code means that compilers have to perform efficiency-enhancing program transformations. These transformations usually depend on preceding program analyses known as data flow analyses or abstract interpretations. They may range from “simple” intraprocedural bit vector frameworks to highly complex interprocedural alias analyses. Their implementation is usually difficult and expensive.

Structure of PAG and integration of generated analyzersThe program analyzer generator PAG supports the imple­mentation of static program analyzers. PAG automatically generates efficient data flow analyzers from concise speci­fications. The generative approach frees the PAG user from having to implement the domain functionality, the traversal of the control flow graph, and suitable fixpoint algorithms. Thus, saving valuable development time.

The underlying theory of abstract interpretation provides the relation to the programming language semantics, thus enabling the systematic derivation of provably correct and terminating analyses.



PAG has been used in several projects by numerous companies and universities to implement: