Package org.antlr.tool
Class AttributeScope
- java.lang.Object
-
- org.antlr.tool.AttributeScope
-
- Direct Known Subclasses:
RuleLabelScope
public class AttributeScope extends java.lang.Object
Track the attributes within a scope. A named scoped has just its list of attributes. Each rule has potentially 3 scopes: return values, parameters, and an implicitly-named scope (i.e., a scope defined in a rule). Implicitly-defined scopes are named after the rule; rules and scopes then must live in the same name space--no collisions allowed.
-
-
Field Summary
Fields Modifier and Type Field Description java.util.LinkedHashMap<java.lang.String,GrammarAST>
actions
protected java.util.LinkedHashMap<java.lang.String,Attribute>
attributes
The list of Attribute objectsorg.antlr.runtime.Token
derivedFromToken
This scope is associated with which input token (for error handling)?Grammar
grammar
boolean
isDynamicGlobalScope
Not a rule scope, but visible to all rules "scope symbols { ...}"boolean
isDynamicRuleScope
Visible to all rules, but defined in rule "scope { int i; }"boolean
isParameterScope
boolean
isPredefinedLexerRuleScope
boolean
isPredefinedRuleScope
boolean
isReturnScope
static AttributeScope
tokenScope
All token scopes (token labels) share the same fixed scope of of predefined attributes.
-
Constructor Summary
Constructors Constructor Description AttributeScope(java.lang.String name, org.antlr.runtime.Token derivedFromToken)
AttributeScope(Grammar grammar, java.lang.String name, org.antlr.runtime.Token derivedFromToken)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAttribute(java.lang.String name, java.lang.String decl)
void
addAttributes(java.lang.String definitions, int separator)
From a chunk of text holding the definitions of the attributes, pull them apart and create an Attribute for each one.void
defineNamedAction(GrammarAST nameAST, GrammarAST actionAST)
Given @scope::name {action} define it for this attribute scope.Attribute
getAttribute(java.lang.String name)
java.util.List<Attribute>
getAttributes()
Used by templates to get all attributesjava.lang.String
getName()
java.util.Set<java.lang.String>
intersection(AttributeScope other)
Return the set of keys that collide from this and other.int
size()
java.lang.String
toString()
-
-
-
Field Detail
-
tokenScope
public static final AttributeScope tokenScope
All token scopes (token labels) share the same fixed scope of of predefined attributes. I keep this out of the runtime.Token object to avoid a runtime space burden.
-
derivedFromToken
public org.antlr.runtime.Token derivedFromToken
This scope is associated with which input token (for error handling)?
-
grammar
public Grammar grammar
-
isDynamicGlobalScope
public boolean isDynamicGlobalScope
Not a rule scope, but visible to all rules "scope symbols { ...}"
-
isDynamicRuleScope
public boolean isDynamicRuleScope
Visible to all rules, but defined in rule "scope { int i; }"
-
isParameterScope
public boolean isParameterScope
-
isReturnScope
public boolean isReturnScope
-
isPredefinedRuleScope
public boolean isPredefinedRuleScope
-
isPredefinedLexerRuleScope
public boolean isPredefinedLexerRuleScope
-
attributes
protected java.util.LinkedHashMap<java.lang.String,Attribute> attributes
The list of Attribute objects
-
actions
public java.util.LinkedHashMap<java.lang.String,GrammarAST> actions
-
-
Constructor Detail
-
AttributeScope
public AttributeScope(java.lang.String name, org.antlr.runtime.Token derivedFromToken)
-
AttributeScope
public AttributeScope(Grammar grammar, java.lang.String name, org.antlr.runtime.Token derivedFromToken)
-
-
Method Detail
-
getName
public java.lang.String getName()
-
addAttributes
public void addAttributes(java.lang.String definitions, int separator)
From a chunk of text holding the definitions of the attributes, pull them apart and create an Attribute for each one. Add to the list of attributes for this scope. Pass in the character that terminates a definition such as ',' or ';'. For example, scope symbols { int n; List names; } would pass in definitions equal to the text in between {...} and separator=';'. It results in two Attribute objects.
-
addAttribute
public void addAttribute(java.lang.String name, java.lang.String decl)
-
defineNamedAction
public final void defineNamedAction(GrammarAST nameAST, GrammarAST actionAST)
Given @scope::name {action} define it for this attribute scope. Later, the code generator will ask for the actions table.
-
getAttribute
public Attribute getAttribute(java.lang.String name)
-
getAttributes
public java.util.List<Attribute> getAttributes()
Used by templates to get all attributes
-
intersection
public java.util.Set<java.lang.String> intersection(AttributeScope other)
Return the set of keys that collide from this and other.
-
size
public int size()
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-