org.bitbucket.inkytonik.kiama.attribution

AttributionCore

trait AttributionCore extends AttributionCommon

Reusable implementation of attribution of syntax trees in a functional style with attribute values cached so that each value is computed at most once.

Source
AttributionCore.scala
Linear Supertypes
AttributionCommon, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. AttributionCore
  2. AttributionCommon
  3. AnyRef
  4. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Type Members

  1. class CachedAttribute[T, U] extends Attribute[T, U]

    An attribute of a node type T with value of type U, supported by a memo table and circularity test.

  2. class CachedDynamicAttribute[T, U] extends CachedAttribute[T, U]

    A cached dynamic attribute of a node type T with value of type U, supported by a memo table and circularity test.

  3. class CachedParamAttribute[A, T, U] extends (A) ⇒ Attribute[T, U]

    A variation of the CachedAttribute class for parameterised attributes.

  4. class CircularAttribute[T, U] extends Attribute[T, U]

    An attribute of a node type T with value of type U which has a circular definition.

  5. class ConstantAttribute[T, U] extends Attribute[T, U]

    A constant attribute of a node type T with value of type U.

Value Members

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

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

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

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

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

    Definition Classes
    Any
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def attr[T, U](f: (T) ⇒ U): CachedAttribute[T, U]

    Define a cached attribute of T nodes of type U by the function f, which should not depend on the value of this attribute.

    Define a cached 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.

    Annotations
    @macroImpl( ... )
  8. def attrWithName[T, U](name: String, f: (T) ⇒ U): CachedAttribute[T, U]

    As for the other attr with the first argument specifying a name for the constructed attribute.

  9. def circular[T, U](init: U)(f: (T) ⇒ U): CircularAttribute[T, U]

    Define an optionally named circular attribute of T nodes of type U by the function f.

    Define an optionally named 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.

    Annotations
    @macroImpl( ... )
  10. def circularWithName[T, U](name: String, init: U)(f: (T) ⇒ U): CircularAttribute[T, U]

    As for the other circular with the first argument specifying a name for the constructed attribute.

  11. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  12. def constant[T, U](name: String, u: ⇒ U): Attribute[T, U]

    As for the other constant with the first argument specifying a name for the constructed attribute.

    As for the other constant with the first argument specifying a name for the constructed attribute.

    Definition Classes
    AttributionCommon
  13. def constant[T, U](u: ⇒ U): Attribute[T, U]

    Define a constant attribute of T nodes of type U given by the value u.

    Define a constant attribute of T nodes of type U given by the value u. u is evaluated at most once.

    Definition Classes
    AttributionCommon
    Annotations
    @macroImpl( ... )
  14. def dynAttr[T, U](f: (T) ⇒ U): CachedDynamicAttribute[T, U]

    Define a cached dynamic attribute of T nodes of type U by the partial function f, which should not depend on the value of this attribute.

    Define a cached dynamic attribute of T nodes of type U by the partial 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.

    Annotations
    @macroImpl( ... )
  15. def dynAttrWithName[T, U](name: String, f: (T) ⇒ U): CachedDynamicAttribute[T, U]

    As for the other dynAttr with the first argument specifying a name for the constructed attribute.

  16. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  17. def equals(arg0: Any): Boolean

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

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

    Definition Classes
    AnyRef → Any
  20. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  21. implicit def internalToDynamicAttribute[T, U](f: (T) ⇒ U): CachedDynamicAttribute[T, U]

    Implicitly converts functions to dynamic attributes.

    Implicitly converts functions to dynamic attributes. This conversion allows us to use simpler types for dynamic attributes, but still extend them later.

  22. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  23. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  24. final def notify(): Unit

    Definition Classes
    AnyRef
  25. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  26. def paramAttr[V, T, U](f: (V) ⇒ (T) ⇒ U): CachedParamAttribute[V, T, U]

    Define a parameterised attribute of T nodes of type U by the function f, which takes an argument of type V.

    Define a parameterised attribute of T nodes of type U by the function f, which takes an argument of type V. The computed attribute value for a given V and T pair is cached so it will be computed at most once.

    Annotations
    @macroImpl( ... )
  27. def paramAttrWithName[V, T, U](name: String, f: (V) ⇒ (T) ⇒ U): CachedParamAttribute[V, T, U]

    As for the other paramAttr with the first argument specifying a name for the constructed attribute.

  28. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  29. def toString(): String

    Definition Classes
    AnyRef → Any
  30. final def wait(): Unit

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

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

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AttributionCommon

Inherited from AnyRef

Inherited from Any

Ungrouped