Package org.antlr.v4.runtime.atn
Class SemanticContext.PrecedencePredicate
- java.lang.Object
-
- org.antlr.v4.runtime.atn.SemanticContext
-
- org.antlr.v4.runtime.atn.SemanticContext.PrecedencePredicate
-
- All Implemented Interfaces:
Comparable<SemanticContext.PrecedencePredicate>
- Enclosing class:
- SemanticContext
public static class SemanticContext.PrecedencePredicate extends SemanticContext implements Comparable<SemanticContext.PrecedencePredicate>
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.antlr.v4.runtime.atn.SemanticContext
SemanticContext.AND, SemanticContext.Operator, SemanticContext.OR, SemanticContext.PrecedencePredicate, SemanticContext.Predicate
-
-
Field Summary
Fields Modifier and Type Field Description int
precedence
-
Fields inherited from class org.antlr.v4.runtime.atn.SemanticContext
NONE
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
PrecedencePredicate()
PrecedencePredicate(int precedence)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
compareTo(SemanticContext.PrecedencePredicate o)
boolean
equals(Object obj)
boolean
eval(Recognizer<?,?> parser, RuleContext parserCallStack)
For context independent predicates, we evaluate them without a local context (i.e., null context).SemanticContext
evalPrecedence(Recognizer<?,?> parser, RuleContext parserCallStack)
Evaluate the precedence predicates for the context and reduce the result.int
hashCode()
String
toString()
-
Methods inherited from class org.antlr.v4.runtime.atn.SemanticContext
and, or
-
-
-
-
Method Detail
-
eval
public boolean eval(Recognizer<?,?> parser, RuleContext parserCallStack)
Description copied from class:SemanticContext
For context independent predicates, we evaluate them without a local context (i.e., null context). That way, we can evaluate them without having to create proper rule-specific context during prediction (as opposed to the parser, which creates them naturally). In a practical sense, this avoids a cast exception from RuleContext to myruleContext.For context dependent predicates, we must pass in a local context so that references such as $arg evaluate properly as _localctx.arg. We only capture context dependent predicates in the context in which we begin prediction, so we passed in the outer context here in case of context dependent predicate evaluation.
- Specified by:
eval
in classSemanticContext
-
evalPrecedence
public SemanticContext evalPrecedence(Recognizer<?,?> parser, RuleContext parserCallStack)
Description copied from class:SemanticContext
Evaluate the precedence predicates for the context and reduce the result.- Overrides:
evalPrecedence
in classSemanticContext
- Parameters:
parser
- The parser instance.- Returns:
- The simplified semantic context after precedence predicates are
evaluated, which will be one of the following values.
SemanticContext.NONE
: if the predicate simplifies totrue
after precedence predicates are evaluated.null
: if the predicate simplifies tofalse
after precedence predicates are evaluated.this
: if the semantic context is not changed as a result of precedence predicate evaluation.- A non-
null
SemanticContext
: the new simplified semantic context after precedence predicates are evaluated.
-
compareTo
public int compareTo(SemanticContext.PrecedencePredicate o)
- Specified by:
compareTo
in interfaceComparable<SemanticContext.PrecedencePredicate>
-
-