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 SemanticContextsemanticContextA 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 booleanequals(java.lang.Object o)SemanticContextgetSemanticContext()inthashCode()booleanisSemanticPredicate()java.lang.StringtoString()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.StringtoString(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:
isSemanticPredicatein classLabel
-
getSemanticContext
public SemanticContext getSemanticContext()
- Overrides:
getSemanticContextin classLabel
-
toString
public java.lang.String toString()
Description copied from class:LabelPredicates 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.
-
-