PAG/WWW builds custom analyses from the text description you enter.
You have to specify the framework of your analysis by providing information
about the direction of your analysis, the datatypes it uses,
the transfer function that calculates the actual analysis data at each statement
and how incoming information is combined at each node.
PAG/WWW features a functional language to annotate the transfer functions,
the definition of custom data types and specification of the analysis parameters.
PAG/WWW supports interprocedural analyses with call strings of length 0.
Future versions of PAG/WWW may even support call strings of any non-zero length
specified by the user.
An analysis specification consists of four sections:
In this section you specify datatypes that are used in your analysis.
This section is optional if the built-in types are sufficient for your analysis.
The problem section is used to describe the framework that your analysis uses.
You specify the direction of the analysis, the complete lattice your analysis works on
(also called the carrier type), initialization values and
a combine function (usually just the LUB or GLB function on the carrier type,
but arbitrarily complex functions are allowed here).
The problem section is mandatory as it defines the heart of your analysis.
In the transfer section you define functions (similar to kill and gen)
that compute the exit information at a certain label
from the entry information of that label.
The transfer section is mandatory.
The support section is the place to define common functions and subexpressions
that you need in your transfer functions.
The support section is optional.
- Specifying datatypes in the TYPE section
- Specifying the framework of your analysis in the PROBLEM section
- The FULA language
- Global FULA variables
- Specifying the TRANSFER section
- The SUPPORT section
- Built-in PAG/WWW functions
- A formal description of the analysis specification syntax