生成模块化ANTLR Java



我有一个由许多子项组成的ANTLR语法。高级语法看起来像这样:

grammar MyGrammar;
import MyLocation, MyName, MyTime;
composite
  : myname (WS+ mylocation)? (WS+ mytime)?

我编译MyGrammar.g4以获得所需的Java代码,在解析John at 4:30pm等项时一切正常。然而,我现在遇到的情况是,我需要将时间与复合项分开解析,例如4:30pm

目前看来,我必须在MyGrammarListenerMyTimeListener中复制代码来处理时间。有没有什么方法可以让MyGrammarListener在看到mytime时切换到MyTimeListener,这样我就可以避免代码重复,或者我应该用不同的方式来处理它?

问题第一部分的答案是否定的,你不能这样做(至少从ANTLR 4.4开始)。请点击此处查看我的答案:

有可能让Antlr4从基本语法lexer生成lexer而不是general lexer吗?

相关内容

  • 没有找到相关文章

最新更新