WG211/M11Hedin
Parameterized reference attributes: examples and properties by Gorel Hedin
Reference attribute grammars (RAGs) have proven useful for building practical extensible compilers, as exemplified by compilers for Java and Modelica.
Reference attributes allow graphs to be programmed declaratively on top of an abstract syntax tree. Examples include decl-use graphs, inheritance graphs, and call graphs. Another important ingredient in RAGs is parameterized attributes. These differ from ordinary attributes in that they correspond to an unbounded set of values: one for each combination of parameter values.
In the talk I will discuss how parameterized attributes can be used for solving various compilation problems, giving examples from existing compilers. I will also discuss how they result in a fine-grained dependency structure, making RAGs suitable as a basis for incremental evaluation.