Class SemanticContext.PrecedencePredicate

    • Field Detail

      • precedence

        public final int precedence
    • Constructor Detail

      • PrecedencePredicate

        protected PrecedencePredicate()
      • PrecedencePredicate

        public PrecedencePredicate​(int precedence)
    • 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 class SemanticContext
      • 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 class SemanticContext
        Parameters:
        parser - The parser instance.
        Returns:
        The simplified semantic context after precedence predicates are evaluated, which will be one of the following values.
        • SemanticContext.Empty.Instance: 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.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object