| // Copyright (c) 2012-2022 The ANTLR Project. All rights reserved. |
| // Use of this file is governed by the BSD 3-clause license that |
| // can be found in the LICENSE.txt file in the project root. |
| |
| package antlr |
| |
| // RuleContext is a record of a single rule invocation. It knows |
| // which context invoked it, if any. If there is no parent context, then |
| // naturally the invoking state is not valid. The parent link |
| // provides a chain upwards from the current rule invocation to the root |
| // of the invocation tree, forming a stack. |
| // |
| // We actually carry no information about the rule associated with this context (except |
| // when parsing). We keep only the state number of the invoking state from |
| // the [ATN] submachine that invoked this. Contrast this with the s |
| // pointer inside [ParserRuleContext] that tracks the current state |
| // being "executed" for the current rule. |
| // |
| // The parent contexts are useful for computing lookahead sets and |
| // getting error information. |
| // |
| // These objects are used during parsing and prediction. |
| // For the special case of parsers, we use the struct |
| // [ParserRuleContext], which embeds a RuleContext. |
| // |
| // @see ParserRuleContext |
| type RuleContext interface { |
| RuleNode |
| |
| GetInvokingState() int |
| SetInvokingState(int) |
| |
| GetRuleIndex() int |
| IsEmpty() bool |
| |
| GetAltNumber() int |
| SetAltNumber(altNumber int) |
| |
| String([]string, RuleContext) string |
| } |