Package org.antlr.analysis
Class PredicateLabel
java.lang.Object
org.antlr.analysis.Label
org.antlr.analysis.PredicateLabel
- All Implemented Interfaces:
Cloneable
,Comparable<Label>
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected 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
ConstructorsConstructorDescriptionPredicateLabel
(SemanticContext semCtx) Make a semantic predicates labelPredicateLabel
(GrammarAST predicateASTNode) Make a semantic predicate label -
Method Summary
-
Field Details
-
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 Details
-
PredicateLabel
Make a semantic predicate label -
PredicateLabel
Make a semantic predicates label
-
-
Method Details
-
hashCode
public int hashCode() -
equals
-
isSemanticPredicate
public boolean isSemanticPredicate()- Overrides:
isSemanticPredicate
in classLabel
-
getSemanticContext
- Overrides:
getSemanticContext
in classLabel
-
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. -
toString
-