An attribute of a node type T with value of type U which has a circular definition.
A partial function composed of an ordered, mutable buffer of PartialFunction instances.
Support for parameterised attributes: argument, node pair comparison.
Define an attribute of T nodes of type U by the function f.
Define an attribute of T nodes of type U by the function f, which takes the current node and its parent as its arguments.
Define an attribute of T nodes of type U by the function f, which takes the current node and its parent as its arguments. T must be Attributable so that parents can be accessed.
Define a circular attribute of T nodes of type U by the function f.
Define a circular attribute of T nodes of type U by the function f. f is allowed to depend on the value of this attribute, which will be given by init initially and will be evaluated iteratively until a fixed point is reached (in conjunction with other circular attributes on which it depends). The final value is cached.
Define an attribute of T nodes of type U given by the constant value u.
Define an attribute of T nodes of type U given by the constant value u. u is evaluated at most once.
Deactivates a module that defines dynamic attributes,
activated using #use
.
Implicitly converts partial functions to support the + operator.
Implicitly converts partial functions to support the + operator.
Lazily resets all memoisation tables.
Activates a module that defines dynamic attributes,
allowing it to be deactivated again using #endUse
.
Defines a new scope in which a dynamic attribution module is active.
Defines a new scope in which a dynamic attribution module is active. At the end of the scope, the module is unloaded again.
A module defining dynamic attributes.
A block to evaluate.
Support for dynamic attribution of syntax trees. Dynamic attributes definitions can be extended at runtime.