def getNodeText(cls, t:Tree, ruleNames:list=None, recog:Parser=None): if recog is not None: ruleNames = recog.ruleNames if ruleNames is not None: if isinstance(t, RuleNode): if t.getAltNumber()!=0: # should use ATN.INVALID_ALT_NUMBER but won't compile return ruleNames[t.getRuleIndex()]+":"+str(t.getAltNumber()) return ruleNames[t.getRuleIndex()] elif isinstance( t, ErrorNode): return str(t) elif isinstance(t, TerminalNode): if t.symbol is not None: return t.symbol.text # no recog for rule names payload = t.getPayload() if isinstance(payload, Token ): return payload.text return str(t.getPayload())