org.kiama.attribution.AttributionBase

CircularAttribute

class CircularAttribute [T <: AnyRef, U] extends $eq$eq$greater[T, U]

An attribute of a node type T with value of type U 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.

Linear Supertypes
PartialFunction[T, U], (T) ⇒ U, AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Hide All
  2. Show all
  1. CircularAttribute
  2. PartialFunction
  3. Function1
  4. AnyRef
  5. Any
Visibility
  1. Public
  2. All

Instance Constructors

  1. new CircularAttribute (init: U, f: $eq$eq$greater[T, U])

Value Members

  1. def != (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  2. def != (arg0: Any): Boolean

    Attributes
    final
    Definition Classes
    Any
  3. def ## (): Int

    Attributes
    final
    Definition Classes
    AnyRef → Any
  4. def == (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  5. def == (arg0: Any): Boolean

    Attributes
    final
    Definition Classes
    Any
  6. def andThen [C] (k: (U) ⇒ C): PartialFunction[T, C]

    Definition Classes
    PartialFunction → Function1
  7. def apply (t: T): U

    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.

    Definition Classes
    CircularAttribute → Function1
  8. def asInstanceOf [T0] : T0

    Attributes
    final
    Definition Classes
    Any
  9. def clone (): AnyRef

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  10. def compose [A] (g: (A) ⇒ T): (A) ⇒ U

    Definition Classes
    Function1
  11. def eq (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  12. def equals (arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  13. def finalize (): Unit

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  14. def getClass (): java.lang.Class[_]

    Attributes
    final
    Definition Classes
    AnyRef
  15. def hashCode (): Int

    Definition Classes
    AnyRef → Any
  16. def isDefinedAt (t: T): Boolean

    A circular attribute is defined at the same places as its defining function.

    A circular attribute is defined at the same places as its defining function.

    Definition Classes
    CircularAttribute → PartialFunction
  17. def isInstanceOf [T0] : Boolean

    Attributes
    final
    Definition Classes
    Any
  18. def lift : (T) ⇒ Option[U]

    Definition Classes
    PartialFunction
  19. def ne (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  20. def notify (): Unit

    Attributes
    final
    Definition Classes
    AnyRef
  21. def notifyAll (): Unit

    Attributes
    final
    Definition Classes
    AnyRef
  22. def orElse [A1 <: T, B1 >: U] (that: PartialFunction[A1, B1]): PartialFunction[A1, B1]

    Definition Classes
    PartialFunction
  23. def synchronized [T0] (arg0: ⇒ T0): T0

    Attributes
    final
    Definition Classes
    AnyRef
  24. def toString (): String

    Definition Classes
    Function1 → AnyRef → Any
  25. def wait (): Unit

    Attributes
    final
    Definition Classes
    AnyRef
    Annotations
    @throws()
  26. def wait (arg0: Long, arg1: Int): Unit

    Attributes
    final
    Definition Classes
    AnyRef
    Annotations
    @throws()
  27. def wait (arg0: Long): Unit

    Attributes
    final
    Definition Classes
    AnyRef
    Annotations
    @throws()

Inherited from PartialFunction[T, U]

Inherited from (T) ⇒ U

Inherited from AnyRef

Inherited from Any