Antlr3解析器中的上一个令牌

问题描述:

如何获取Antlr 3解析器中的上一个令牌?其实我可以通过使用“input.LT(-1)”轻松搞定,但我不想使用lookahead.So是否有任何其他方法在解析器中获得前一个标记?Antlr3解析器中的上一个令牌

+0

避免“LT(-1)”的原因是什么?只要您希望在当前匹配的前一个标记之前,这是标准方法,并且完全由ANTLR支持。只有情况下,我知道你不能使用它的地方是,如果你想知道一些给定的任意标记(而不是实际匹配的标记)之前的前一个标记。 –

另一种方法是在您的词法分析器中覆盖emit(Token t)nextToken()并跟踪最后发出的令牌。举一个例子来说明这个如何工作,看看这个PyEsque这个语法从这个Q &答:ANTLR What is simpliest way to realize python like indent-depending grammar?

但是我只是使用input.LT(-1)