Top Description Inners Fields Constructors Methods
org.antlr.v4.runtime.atn

public abstract Class SemanticContext

extends Object
Class Inheritance
Known Direct Subclasses
org.antlr.v4.runtime.atn.SemanticContext.Predicate, org.antlr.v4.runtime.atn.SemanticContext.PrecedencePredicate, org.antlr.v4.runtime.atn.SemanticContext.Operator
Imports
org.antlr.v4.runtime.Recognizer, .RuleContext, org.antlr.v4.runtime.misc.MurmurHash, .NotNull, .Utils, java.util.ArrayList, .Arrays, .Collection, .Collections, .HashSet, .Iterator, .List, .Set

A tree structure used to record the semantic context in which an ATN configuration is valid. It's either a single predicate, a conjunction p1&&p2, or a sum of products p1||p2.

I have scoped the AND, OR, and Predicate subclasses of SemanticContext within the scope of this outer class.

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static class
SemanticContext.AND

A semantic context which is true whenever none of the contained contexts is false.

public abstract static class
SemanticContext.Operator

This is the base class for semantic context "operators", which operate on a collection of semantic context "operands".

public static class
SemanticContext.OR

A semantic context which is true whenever at least one of the contained contexts is true.

public static class
public static class

Field Summary

Modifier and TypeField and Description
public static final SemanticContext
NONE

The default SemanticContext, which is semantically equivalent to a predicate of the form {true}?

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public static SemanticContext
public abstract <T> boolean
eval(Recognizer<T, ?> parser, RuleContext parserCallStack)

For context independent predicates, we evaluate them without a local context (i.e., null context).

public SemanticContext

Returns:

The simplified semantic context after precedence predicates are evaluated, which will be one of the following values.
  • NONE: if the predicate simplifies to true after precedence predicates are evaluated.
  • null: if the predicate simplifies to false 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.
evalPrecedence
(Recognizer<?, ?>
The parser instance.
parser
,
RuleContext parserCallStack)

Evaluate the precedence predicates for the context and reduce the result.

private static List<SemanticContext.PrecedencePredicate>
public static SemanticContext
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

NONEback to summary
public static final SemanticContext NONE

The default SemanticContext, which is semantically equivalent to a predicate of the form {true}?.

Constructor Detail

SemanticContextback to summary
public SemanticContext()

Method Detail

andback to summary
public static SemanticContext and(SemanticContext a, SemanticContext b)
evalback to summary
public abstract <T> boolean eval(Recognizer<T, ?> parser, RuleContext parserCallStack)

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.

evalPrecedenceback to summary
public SemanticContext evalPrecedence(Recognizer<?, ?> parser, RuleContext parserCallStack)

Evaluate the precedence predicates for the context and reduce the result.

Parameters
parser:Recognizer<?, ?>

The parser instance.

Returns:SemanticContext

The simplified semantic context after precedence predicates are evaluated, which will be one of the following values.

  • NONE: if the predicate simplifies to true after precedence predicates are evaluated.
  • null: if the predicate simplifies to false 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.
filterPrecedencePredicatesback to summary
private static List<SemanticContext.PrecedencePredicate> filterPrecedencePredicates(Collection<? extends SemanticContext> collection)
orback to summary
public static SemanticContext or(SemanticContext a, SemanticContext b)
See Also
ParserATNSimulator#getPredsForAmbigAlts
org.antlr.v4.runtime.atn back to summary

public Class SemanticContext.AND

extends Operator
Class Inheritance

A semantic context which is true whenever none of the contained contexts is false.

Field Summary

Modifier and TypeField and Description
public final SemanticContext[]

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public boolean
equals(Object
the reference object with which to compare.
obj
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.
public <T> boolean
eval(Recognizer<T, ?> parser, RuleContext parserCallStack)

Implements abstract org.antlr.v4.runtime.atn.SemanticContext.eval.

For context independent predicates, we evaluate them without a local context (i.e., null context).
public SemanticContext
evalPrecedence(Recognizer<?, ?>
The parser instance.
parser
,
RuleContext parserCallStack)

Overrides org.antlr.v4.runtime.atn.SemanticContext.evalPrecedence.

Evaluate the precedence predicates for the context and reduce the result.
public Collection<SemanticContext>
getOperands()

Implements abstract org.antlr.v4.runtime.atn.SemanticContext.Operator.getOperands.

Gets the operands for the semantic context operator.
public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for the object.
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

Field Detail

opndsback to summary
public final SemanticContext[] opnds
Annotations
@NotNull

Constructor Detail

ANDback to summary
public AND(SemanticContext a, SemanticContext b)

Method Detail

equalsback to summary
public boolean equals(Object obj)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
obj:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
evalback to summary
public <T> boolean eval(Recognizer<T, ?> parser, RuleContext parserCallStack)

Implements abstract org.antlr.v4.runtime.atn.SemanticContext.eval.

Doc from org.antlr.v4.runtime.atn.SemanticContext.eval.

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.

The evaluation of predicates by this context is short-circuiting, but unordered.

Annotations
@Override
evalPrecedenceback to summary
public SemanticContext evalPrecedence(Recognizer<?, ?> parser, RuleContext parserCallStack)

Overrides org.antlr.v4.runtime.atn.SemanticContext.evalPrecedence.

Doc from org.antlr.v4.runtime.atn.SemanticContext.evalPrecedence.

Evaluate the precedence predicates for the context and reduce the result.

Parameters
parser:Recognizer<?, ?>

The parser instance.

Returns:SemanticContext

The simplified semantic context after precedence predicates are evaluated, which will be one of the following values.

  • NONE: if the predicate simplifies to true after precedence predicates are evaluated.
  • null: if the predicate simplifies to false 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.
Annotations
@Override
getOperandsback to summary
public Collection<SemanticContext> getOperands()

Implements abstract org.antlr.v4.runtime.atn.SemanticContext.Operator.getOperands.

Doc from org.antlr.v4.runtime.atn.SemanticContext.Operator.getOperands.

Gets the operands for the semantic context operator.

Returns:Collection<SemanticContext>

a collection of SemanticContext operands for the operator.

Annotations
@Override
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object.

Annotations
@Override
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object.

Returns:String

a string representation of the object.

Annotations
@Override
org.antlr.v4.runtime.atn back to summary

public abstract Class SemanticContext.Operator

extends SemanticContext
Class Inheritance
Known Direct Subclasses
org.antlr.v4.runtime.atn.SemanticContext.AND, org.antlr.v4.runtime.atn.SemanticContext.OR

This is the base class for semantic context "operators", which operate on a collection of semantic context "operands".
Since
4.3

Field Summary

Inherited from org.antlr.v4.runtime.atn.SemanticContext:
NONE

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public abstract Collection<SemanticContext>

Returns:

a collection of SemanticContext operands for the operator.
getOperands
()

Gets the operands for the semantic context operator.

Inherited from org.antlr.v4.runtime.atn.SemanticContext:
andevalevalPrecedenceor

Constructor Detail

Operatorback to summary
public Operator()

Method Detail

getOperandsback to summary
public abstract Collection<SemanticContext> getOperands()

Gets the operands for the semantic context operator.

Returns:Collection<SemanticContext>

a collection of SemanticContext operands for the operator.

Annotations
@NotNull
Since
4.3
org.antlr.v4.runtime.atn back to summary

public Class SemanticContext.OR

extends Operator
Class Inheritance

A semantic context which is true whenever at least one of the contained contexts is true.

Field Summary

Modifier and TypeField and Description
public final SemanticContext[]

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public boolean
equals(Object
the reference object with which to compare.
obj
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.
public <T> boolean
eval(Recognizer<T, ?> parser, RuleContext parserCallStack)

Implements abstract org.antlr.v4.runtime.atn.SemanticContext.eval.

For context independent predicates, we evaluate them without a local context (i.e., null context).
public SemanticContext
evalPrecedence(Recognizer<?, ?>
The parser instance.
parser
,
RuleContext parserCallStack)

Overrides org.antlr.v4.runtime.atn.SemanticContext.evalPrecedence.

Evaluate the precedence predicates for the context and reduce the result.
public Collection<SemanticContext>
getOperands()

Implements abstract org.antlr.v4.runtime.atn.SemanticContext.Operator.getOperands.

Gets the operands for the semantic context operator.
public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for the object.
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

Field Detail

opndsback to summary
public final SemanticContext[] opnds
Annotations
@NotNull

Constructor Detail

ORback to summary
public OR(SemanticContext a, SemanticContext b)

Method Detail

equalsback to summary
public boolean equals(Object obj)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
obj:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
evalback to summary
public <T> boolean eval(Recognizer<T, ?> parser, RuleContext parserCallStack)

Implements abstract org.antlr.v4.runtime.atn.SemanticContext.eval.

Doc from org.antlr.v4.runtime.atn.SemanticContext.eval.

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.

The evaluation of predicates by this context is short-circuiting, but unordered.

Annotations
@Override
evalPrecedenceback to summary
public SemanticContext evalPrecedence(Recognizer<?, ?> parser, RuleContext parserCallStack)

Overrides org.antlr.v4.runtime.atn.SemanticContext.evalPrecedence.

Doc from org.antlr.v4.runtime.atn.SemanticContext.evalPrecedence.

Evaluate the precedence predicates for the context and reduce the result.

Parameters
parser:Recognizer<?, ?>

The parser instance.

Returns:SemanticContext

The simplified semantic context after precedence predicates are evaluated, which will be one of the following values.

  • NONE: if the predicate simplifies to true after precedence predicates are evaluated.
  • null: if the predicate simplifies to false 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.
Annotations
@Override
getOperandsback to summary
public Collection<SemanticContext> getOperands()

Implements abstract org.antlr.v4.runtime.atn.SemanticContext.Operator.getOperands.

Doc from org.antlr.v4.runtime.atn.SemanticContext.Operator.getOperands.

Gets the operands for the semantic context operator.

Returns:Collection<SemanticContext>

a collection of SemanticContext operands for the operator.

Annotations
@Override
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object.

Annotations
@Override
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object.

Returns:String

a string representation of the object.

Annotations
@Override
org.antlr.v4.runtime.atn back to summary

public Class SemanticContext.PrecedencePredicate

extends SemanticContext
implements Comparable<SemanticContext.PrecedencePredicate>
Class Inheritance
All Implemented Interfaces
java.lang.Comparable

Field Summary

Modifier and TypeField and Description
public final int
Inherited from org.antlr.v4.runtime.atn.SemanticContext:
NONE

Constructor Summary

AccessConstructor and Description
protected
public
PrecedencePredicate(int precedence)

Method Summary

Modifier and TypeMethod and Description
public int
compareTo(SemanticContext.PrecedencePredicate
the object to be compared.
o
)

Implements java.lang.Comparable.compareTo.

Compares this object with the specified object for order.
public boolean
equals(Object
the reference object with which to compare.
obj
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.
public <T> boolean
eval(Recognizer<T, ?> parser, RuleContext parserCallStack)

Implements abstract org.antlr.v4.runtime.atn.SemanticContext.eval.

For context independent predicates, we evaluate them without a local context (i.e., null context).
public SemanticContext
evalPrecedence(Recognizer<?, ?>
The parser instance.
parser
,
RuleContext parserCallStack)

Overrides org.antlr.v4.runtime.atn.SemanticContext.evalPrecedence.

Evaluate the precedence predicates for the context and reduce the result.
public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for the object.
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.
Inherited from org.antlr.v4.runtime.atn.SemanticContext:
andor

Field Detail

precedenceback to summary
public final int precedence

Constructor Detail

PrecedencePredicateback to summary
protected PrecedencePredicate()
PrecedencePredicateback to summary
public PrecedencePredicate(int precedence)

Method Detail

compareToback to summary
public int compareTo(SemanticContext.PrecedencePredicate o)

Implements java.lang.Comparable.compareTo.

Doc from java.lang.Comparable.compareTo.

Compares this object with the specified object for order. Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.

The implementor must ensure signum(x.compareTo(y)) == -signum(y.compareTo(x)) for all x and y. (This implies that x.compareTo(y) must throw an exception if and only if y.compareTo(x) throws an exception.)

The implementor must also ensure that the relation is transitive: (x.compareTo(y) > 0 && y.compareTo(z) > 0) implies x.compareTo(z) > 0.

Finally, the implementor must ensure that x.compareTo(y)==0 implies that signum(x.compareTo(z)) == signum(y.compareTo(z)), for all z.

Parameters
o:SemanticContext.PrecedencePredicate

the object to be compared.

Returns:int

a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.

Annotations
@Override
equalsback to summary
public boolean equals(Object obj)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
obj:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
evalback to summary
public <T> boolean eval(Recognizer<T, ?> parser, RuleContext parserCallStack)

Implements abstract org.antlr.v4.runtime.atn.SemanticContext.eval.

Doc from org.antlr.v4.runtime.atn.SemanticContext.eval.

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.

Annotations
@Override
evalPrecedenceback to summary
public SemanticContext evalPrecedence(Recognizer<?, ?> parser, RuleContext parserCallStack)

Overrides org.antlr.v4.runtime.atn.SemanticContext.evalPrecedence.

Doc from org.antlr.v4.runtime.atn.SemanticContext.evalPrecedence.

Evaluate the precedence predicates for the context and reduce the result.

Parameters
parser:Recognizer<?, ?>

The parser instance.

Returns:SemanticContext

The simplified semantic context after precedence predicates are evaluated, which will be one of the following values.

  • NONE: if the predicate simplifies to true after precedence predicates are evaluated.
  • null: if the predicate simplifies to false 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.
Annotations
@Override
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object.

Annotations
@Override
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object.

Returns:String

a string representation of the object.

Annotations
@Override
org.antlr.v4.runtime.atn back to summary

public Class SemanticContext.Predicate

extends SemanticContext
Class Inheritance

Field Summary

Modifier and TypeField and Description
public final boolean
public final int
public final int
Inherited from org.antlr.v4.runtime.atn.SemanticContext:
NONE

Constructor Summary

AccessConstructor and Description
protected
public
Predicate(int ruleIndex, int predIndex, boolean isCtxDependent)

Method Summary

Modifier and TypeMethod and Description
public boolean
equals(Object
the reference object with which to compare.
obj
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.
public <T> boolean
eval(Recognizer<T, ?> parser, RuleContext parserCallStack)

Implements abstract org.antlr.v4.runtime.atn.SemanticContext.eval.

For context independent predicates, we evaluate them without a local context (i.e., null context).
public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for the object.
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.
Inherited from org.antlr.v4.runtime.atn.SemanticContext:
andevalPrecedenceor

Field Detail

isCtxDependentback to summary
public final boolean isCtxDependent
predIndexback to summary
public final int predIndex
ruleIndexback to summary
public final int ruleIndex

Constructor Detail

Predicateback to summary
protected Predicate()
Predicateback to summary
public Predicate(int ruleIndex, int predIndex, boolean isCtxDependent)

Method Detail

equalsback to summary
public boolean equals(Object obj)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
obj:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
evalback to summary
public <T> boolean eval(Recognizer<T, ?> parser, RuleContext parserCallStack)

Implements abstract org.antlr.v4.runtime.atn.SemanticContext.eval.

Doc from org.antlr.v4.runtime.atn.SemanticContext.eval.

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.

Annotations
@Override
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object.

Annotations
@Override
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object.

Returns:String

a string representation of the object.

Annotations
@Override