type LL1Analyzer … func NewLL1Analyzer(atn *ATN) *LL1Analyzer { … } const LL1AnalyzerHitPred … // * // Calculates the SLL(1) expected lookahead set for each outgoing transition // of an {@link ATNState}. The returned array has one element for each // outgoing transition in {@code s}. If the closure from transition // <em>i</em> leads to a semantic predicate before Matching a symbol, the // element at index <em>i</em> of the result will be {@code nil}. // // @param s the ATN state // @return the expected symbols for each outgoing transition of {@code s}. func (la *LL1Analyzer) getDecisionLookahead(s ATNState) []*IntervalSet { … } // Look computes the set of tokens that can follow s in the [ATN] in the // specified ctx. // // If ctx is nil and the end of the rule containing // s is reached, [EPSILON] is added to the result set. // // If ctx is not nil and the end of the outermost rule is // reached, [EOF] is added to the result set. // // Parameter s the ATN state, and stopState is the ATN state to stop at. This can be a // [BlockEndState] to detect epsilon paths through a closure. // // Parameter ctx is the complete parser context, or nil if the context // should be ignored // // The func returns the set of tokens that can follow s in the [ATN] in the // specified ctx. func (la *LL1Analyzer) Look(s, stopState ATNState, ctx RuleContext) *IntervalSet { … } func (la *LL1Analyzer) look2(_, stopState ATNState, ctx *PredictionContext, look *IntervalSet, lookBusy *JStore[*ATNConfig, Comparator[*ATNConfig]], calledRuleStack *BitSet, seeThruPreds, addEOF bool, i int) { … } func (la *LL1Analyzer) look1(s, stopState ATNState, ctx *PredictionContext, look *IntervalSet, lookBusy *JStore[*ATNConfig, Comparator[*ATNConfig]], calledRuleStack *BitSet, seeThruPreds, addEOF bool) { … } func (la *LL1Analyzer) look3(stopState ATNState, ctx *PredictionContext, look *IntervalSet, lookBusy *JStore[*ATNConfig, Comparator[*ATNConfig]], calledRuleStack *BitSet, seeThruPreds, addEOF bool, t1 *RuleTransition) { … }