diff --git a/runtime/Python3/src/antlr4/ParserInterpreter.py b/runtime/Python3/src/antlr4/ParserInterpreter.py index 5525eff3a9..e7f55fb181 100644 --- a/runtime/Python3/src/antlr4/ParserInterpreter.py +++ b/runtime/Python3/src/antlr4/ParserInterpreter.py @@ -58,7 +58,7 @@ def __init__(self, grammarFileName:str, tokenNames:list, ruleNames:list, atn:ATN self._interp = ParserATNSimulator(self, atn, self.decisionToDFA, self.sharedContextCache) # Begin parsing at startRuleIndex# - def parse(self, startRuleIndex:int): + def parse(self, startRuleIndex:int): startRuleStartState = self.atn.ruleToStartState[startRuleIndex] rootContext = InterpreterRuleContext(None, ATNState.INVALID_STATE_NUMBER, startRuleIndex) if startRuleStartState.isPrecedenceRule: @@ -108,7 +108,7 @@ def visitState(self, p:ATNState): tt = transition.serializationType if tt==Transition.EPSILON: - if self.pushRecursionContextStates[p.stateNumber] and not isinstance(transition.target, LoopEndState): + if p.stateNumber in self.pushRecursionContextStates and not isinstance(transition.target, LoopEndState): t = self._parentContextStack[-1] ctx = InterpreterRuleContext(t[0], t[1], self._ctx.ruleIndex) self.pushNewRecursionContext(ctx, self.atn.ruleToStartState[p.ruleIndex].stateNumber, self._ctx.ruleIndex)