我正在学习编译器构造,并希望使用JavaCC实现JavaScript语法。
(我已经编写了自己的JavaScript CodeModel,它允许以编程方式构建JavaScript代码,现在我想为此编写一个基于JavaCC的解析器。)
我的问题是,有没有办法将JavaCC语法(.jj
文件)模块化为几个文件?
我对JavaParser有很好的经验,所以我从他们的java_1_5.jj
语法中学习。但是,这是一个3000+ LoC文件,有点难以理解。
我想将语法文件分成几个部分,以便更容易理解和理解。关于“javacc模块化”,“javacc include”,“javacc import”的谷歌搜索给我带来了一些神秘的结果,这些结果并没有多大帮助。
具体来说,我如何将IDENTIFIER
(lines 380-1081)的定义移动到另一个文件?
JavaCC无法内置模块化.jj文件。最好的办法通常是使用JJT,因为这允许您将所有操作移出语法文件。如果您不想使用JJT,那么下一个最好的方法可能是使用构建器模式。
如果您只想要一个包含工具,那么可以使用许多预处理器。
是的,您可以通过创建对象来创建各种类并传递参数,并将其发送到javacc文件中的try catch中的对象,使其看起来模块化。