Class SemanticContext

    • Constructor Detail

      • SemanticContext

        public SemanticContext()
    • Method Detail

      • eval

        public abstract boolean eval​(Recognizer<?,​?> 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.

      • evalPrecedence

        public SemanticContext evalPrecedence​(Recognizer<?,​?> parser,
                                              RuleContext parserCallStack)
        Evaluate the precedence predicates for the context and reduce the result.
        Parameters:
        parser - The parser instance.
        parserCallStack -
        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.