我正在使用 Netbeans 7.1.1 和带有 ANTLR Maven 插件的 Maven 项目来生成 Lexer+Parser Java 类 - 这很有效。
我正在努力解决的问题:
如何在同一个项目中构建测试平台,以便在开发时找到 Lexer 和 Parser 类?
是否有一种 Maven 方式来指定:首先构建“生成的源代码”(即 Antlr 生成的)然后是我的“手动”源代码?
我应该建立一个依赖于第一个项目的辅助 Maven 项目吗?
是否存在用于构建 ANTLR 测试平台类的“通用”(动态?)机制,而 Parser/Lexer 类中并不存在?('ClassForName' JDBC 风格的机制?)
澄清问题;这是我的 Test Rig 类的一个片段,它是不可编译的(由于 Lexer / Parsers 尚未构建......):
...
myLexer lexer = new myLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
myParser parser = new myParser(tokens);
parser.file();
...
好的 - 在下面的建议和仔细检查生成的 java 之后 - 事实上我没有注意到我的语法文件(虽然布局在 java 包结构中)不包含 @header 指令来指定生成的目标 java 项目住的班级。
这就是我的测试(或者实际上是我的主程序)无法看到 Lexer/Parser 类的原因。(我只是试图访问与我想象的不同包结构的java类)。
另一个 StackOverFlow 案例对我来说是最后的决定: