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.
The program analyzer generator PAG supports the implementation of static program analyzers. PAG automatically generates efficient data flow analyzers from concise specifications. 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:
PAG runs under various Unix dialects including Linux. The generated analyzers are produced in ANSI C.
As of June 1st, 2007, PAG is no longer available as a stand-alone product. However, static program analysis can be experienced with the web interface of PAG.