org.kiama.attribution.AttributionBase
An optional name, used in debugging output if present.
An optional name, used in debugging output if present.
Return the value of this attribute for node t
.
Return the value of this attribute for node t
. Essentially Figure 6
from the CRAG paper.
Report a cycle in the calculation of this attribute discovered when
evaluating the attribute on value t
.
Report a cycle in the calculation of this attribute discovered when
evaluating the attribute on value t
. Throws an IllegalStateException
.
An attribute of a node type
T
with value of typeU
which has a circular definition. The value of the attribute is computed by the function f which may itself use the value of the attribute. init specifies an initial value for the attribute. The attribute (and any circular attributes on which it depends) are evaluated until no value changes (i.e., a fixed point is reached). The final result is memoised so that subsequent evaluations return the same value.This code implements the basic circular evaluation algorithm from "Circular Reference Attributed Grammars - their Evaluation and Applications", by Magnusson and Hedin from LDTA 2003.