An attribute of a node type T with value of type U, supported by a memo
table and circularity test.
A variation of the CachedAttribute class for parameterised attributes.
An attribute of a node type T with value of type U which has a circular
definition.
Support for parameterised attributes: argument, node pair comparison.
Define an attribute of T nodes of type U by the function f, which
should not depend on the value of this attribute.
Define an attribute of T nodes of type U by the function f, which
should not depend on the value of this attribute. The computed
attribute value is cached so it will be computed at most once.
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 generically.
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.
Initialise the Attributable tree rooted at t so that it is ready for
attribution.
Initialise the Attributable tree rooted at t so that it is ready for
attribution. At present, the only initialisation performed is to set node
attributes such as parent and children so that nodes can generically refer
to their neighbours. If you wish to use any of these properties, you must
call this method before doing so. Otherwise, the node properties should
not be used and there is no need to call this method.
Define an attribute of T nodes of type U by the function f,
which takes an argument of type A.
Define an attribute of T nodes of type U by the function f,
which takes an argument of type A. The computed attribute value
for a given T and A pair is cached so it will be computed at most
once.
Lazily reset all memoisation tables.
Define an attribute as per attr, except that the attribute must
have a tree value and will be spliced into the tree to have the
same parent as the node on which it is defined.
Define an attribute as per attr, except that the attribute must
have a tree value and will be spliced into the tree to have the
same parent as the node on which it is defined. This kind of
attribute is used to generate new trees that must share context
with the node on which they are defined.
Reusable implementation of attribution of syntax trees in a functional style with attribute values cached so that each value is computed at most once.