org.antlr.tool
Class AttributeScope

java.lang.Object
  extended by 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
protected  java.util.LinkedHashMap<java.lang.String,Attribute> attributes
          The list of Attribute objects
 antlr.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, java.lang.String name, antlr.Token derivedFromToken)
           
AttributeScope(java.lang.String name, antlr.Token derivedFromToken)
           
 
Method Summary
 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.
 Attribute getAttribute(java.lang.String name)
           
 java.util.List<Attribute> getAttributes()
          Used by templates to get all attributes
 java.lang.String getName()
           
 java.util.Set intersection(AttributeScope other)
          Return the set of keys that collide from this and other.
 int size()
           
 java.lang.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 antlr.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

Constructor Detail

AttributeScope

public AttributeScope(java.lang.String name,
                      antlr.Token derivedFromToken)

AttributeScope

public AttributeScope(Grammar grammar,
                      java.lang.String name,
                      antlr.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)

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 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 class java.lang.Object


Copyright © 2013. All Rights Reserved.