Package org.antlr.analysis
Class PredicateLabel
- java.lang.Object
-
- org.antlr.analysis.Label
-
- org.antlr.analysis.PredicateLabel
-
-
Field Summary
Fields Modifier and Type Field Description 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
Constructors Constructor Description PredicateLabel(SemanticContext semCtx)
Make a semantic predicates labelPredicateLabel(GrammarAST predicateASTNode)
Make a semantic predicate label
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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)
-
-
-
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
-
isSemanticPredicate
public boolean isSemanticPredicate()
- Overrides:
isSemanticPredicate
in classLabel
-
getSemanticContext
public SemanticContext getSemanticContext()
- Overrides:
getSemanticContext
in classLabel
-
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.
-
-