org.antlr.tool
Class AttributeScope

java.lang.Object
  extended by org.antlr.tool.AttributeScope
Direct Known Subclasses:
RuleLabelScope

public class AttributeScope
extends 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
 LinkedHashMap<String,GrammarAST> actions
           
protected  LinkedHashMap<String,Attribute> attributes
          The list of Attribute objects
 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
AttributeScope(Grammar grammar, String name, Token derivedFromToken)
           
AttributeScope(String name, Token derivedFromToken)
           
 
Method Summary
 void addAttribute(String name, String decl)
           
 void addAttributes(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(String name)
           
 List<Attribute> getAttributes()
          Used by templates to get all attributes
 String getName()
           
 Set intersection(AttributeScope other)
          Return the set of keys that collide from this and other.
 int size()
           
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

tokenScope

public static 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 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 LinkedHashMap<String,Attribute> attributes
The list of Attribute objects


actions

public LinkedHashMap<String,GrammarAST> actions
Constructor Detail

AttributeScope

public AttributeScope(String name,
                      Token derivedFromToken)

AttributeScope

public AttributeScope(Grammar grammar,
                      String name,
                      Token derivedFromToken)
Method Detail

getName

public String getName()

addAttributes

public void addAttributes(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(String name,
                         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(String name)

getAttributes

public List<Attribute> getAttributes()
Used by templates to get all attributes


intersection

public Set intersection(AttributeScope other)
Return the set of keys that collide from this and other.


size

public int size()

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2011. All Rights Reserved.