org.antlr.analysis
Class PredicateLabel

java.lang.Object
  extended by org.antlr.analysis.Label
      extended by org.antlr.analysis.PredicateLabel
All Implemented Interfaces:
java.lang.Cloneable, java.lang.Comparable

public class PredicateLabel
extends Label


Field Summary
protected  SemanticContext semanticContext
          A tree of semantic predicates from the grammar AST if label==SEMPRED.
 
Fields inherited from class org.antlr.analysis.Label
ACTION, DOWN, EOF, EOR_TOKEN_TYPE, EOT, EPSILON, EPSILON_STR, INVALID, label, labelSet, MAX_CHAR_VALUE, MIN_ATOM_VALUE, MIN_CHAR_VALUE, MIN_TOKEN_TYPE, NUM_FAUX_LABELS, SEMPRED, SET, UP
 
Constructor Summary
PredicateLabel(GrammarAST predicateASTNode)
          Make a semantic predicate label
PredicateLabel(SemanticContext semCtx)
          Make a semantic predicates label
 
Method Summary
 boolean equals(java.lang.Object o)
           
 SemanticContext getSemanticContext()
           
 int hashCode()
           
 boolean isSemanticPredicate()
           
 java.lang.String toString()
          Predicates are lists of AST nodes from the NFA created from the grammar, but the same predicate could be cut/paste into multiple places in the grammar.
 java.lang.String toString(Grammar g)
           
 
Methods inherited from class org.antlr.analysis.Label
add, clone, compareTo, getAtom, getSet, intersect, isAction, isAtom, isEpsilon, isSet, matches, matches, matches, setSet
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

semanticContext

protected SemanticContext semanticContext
A tree of semantic predicates from the grammar AST if label==SEMPRED. In the NFA, labels will always be exactly one predicate, but the DFA may have to combine a bunch of them as it collects predicates from multiple NFA configurations into a single DFA state.

Constructor Detail

PredicateLabel

public PredicateLabel(GrammarAST predicateASTNode)
Make a semantic predicate label


PredicateLabel

public PredicateLabel(SemanticContext semCtx)
Make a semantic predicates label

Method Detail

hashCode

public int hashCode()
Overrides:
hashCode in class Label

equals

public boolean equals(java.lang.Object o)
Overrides:
equals in class Label

isSemanticPredicate

public boolean isSemanticPredicate()
Overrides:
isSemanticPredicate in class Label

getSemanticContext

public SemanticContext getSemanticContext()
Overrides:
getSemanticContext in class Label

toString

public java.lang.String toString()
Description copied from class: Label
Predicates are lists of AST nodes from the NFA created from the grammar, but the same predicate could be cut/paste into multiple places in the grammar. I must compare the text of all the predicates to truly answer whether {p1,p2} .equals {p1,p2}. Unfortunately, I cannot rely on the AST.equals() to work properly so I must do a brute force O(n^2) nested traversal of the Set doing a String compare. At this point, Labels are not compared for equals when they are predicates, but here's the code for future use.

Overrides:
toString in class Label

toString

public java.lang.String toString(Grammar g)
Overrides:
toString in class Label