Common functionality for all attributes.
An attribution module.
Common support for attribution of syntax trees in a functional style.
Common support for attribution of syntax trees in a functional style. Includes circular and constant attributes but needs to be augmented with basic attributes and parameterised attributes.
Reusable implementation of attribution of syntax trees in a functional style with attribute values cached so that each value is computed at most once.
Decorators are higher-order operations that provide common patterns of tree attribution based on simple attributes or functions.
Decorators are higher-order operations that provide common patterns of
tree attribution based on simple attributes or functions. A Tree
must
be supplied to give the decorators access to the tree structure.
Support for parameterised attributes: argument, node pair comparison.
Reusable implementation of attribution of syntax trees in a functional style with attribute values computed each time they are accessed.
Module for uncached attributes.
An attribution module. Use an instance of this module to encapuslate related attributes. You should ensure that more than one circular attribute evaluation from a single module is not executing at the same time because the current implementation has shared state between related circular attributes. If your attributes are unrelated (i.e., can't possibly call each other) you should base them on different attribution module instances and then it is safe for attributes from different collections to execute in parallel.