Interface AttributeResolver

  • All Known Implementing Classes:
    Alternative, Grammar, Interpreter.IgnoreTokenVocabGrammar, LeftRecursiveRule, LexerGrammar, Rule

    public interface AttributeResolver
    Grammars, rules, and alternatives all have symbols visible to actions. To evaluate attr exprs, ask action for its resolver then ask resolver to look up various symbols. Depending on the context, some symbols are available at some aren't. Alternative level: $x Attribute: rule arguments, return values, predefined rule prop. AttributeDict: references to tokens and token labels in the current alt (including any elements within subrules contained in that outermost alt). x can be rule with scope or a global scope. List label: x is a token/rule list label. $x.y Attribute: x is surrounding rule, rule/token/label ref $s::y Attribute: s is any rule with scope or global scope; y is prop within Rule level: $x Attribute: rule arguments, return values, predefined rule prop. AttributeDict: references to token labels in *any* alt. x can be any rule with scope or global scope. List label: x is a token/rule list label. $x.y Attribute: x is surrounding rule, label ref (in any alts) $s::y Attribute: s is any rule with scope or global scope; y is prop within Grammar level: $s AttributeDict: s is a global scope $s::y Attribute: s is a global scope; y is prop within