java - Antlr4 "Test Rig"和行家

标签 java antlr4

我正在努力弄清楚如何使用 antlr4 maven 插件来运行 TestRig 类?

我已经阅读了 mvn antlr4:help -Ddetail=true 的输出,这是我能找到的唯一文档,但这没有提到如何使用 TestRig .那么,将测试装置与 Maven 一起使用的推荐方法是什么?使用 grun 别名方法在这里看起来不是很优雅。

更新 - 推理

你好:)

是的,不要误会我的意思,但我真的不明白为什么您不想在 Maven 插件中使用此功能?而且我不明白为什么它的灵魂目的应该是编译语法?

目前,如果我使用 Maven 维护构建,并且使用 antlr4-maven-plugin ,它将在我的 Maven 存储库中安装插件和 antlr 4.1。有了这个,为什么我要开始向我的类路径添加东西并在 Maven 可以处理的时候创建别名?我的意思是,这就是 Maven 的真正用途。如果我有一个 antlr4:TestRig 目标,那么我要做的就是使用它。无需手动维护类路径或创建 bash 别名。它会起作用的。

并且比在我的类路径中对本地 maven 存储库中的元素进行硬编码并维护 bash 别名要优雅得多。或者,每个维护两个安装。我希望使用的 antlr 版本(一个由我维护,只是为了使用 TestRig,另一个由 maven 维护,用于其他所有内容)。

此外,如果我想使用不同版本的 antlr,那么我不需要更新类路径和别名,maven 会简单地为我管理所有这些:)

最佳答案

这是我用 Maven 调用 TestRig 的方式:

mvn exec:java -Dexec.mainClass="org.antlr.v4.runtime.misc.TestRig" 
-Dexec.args="<DOT_NOTATION_GRAMMAR_CLASSPATH> <START_RULE> 
-gui <INPUT_FILE>"

因此,如果您在 src/main/antlr4/com/test/parser 中获得了 MyGrammar.g4,起始规则为 startRule:

mvn exec:java -Dexec.mainClass="org.antlr.v4.runtime.misc.TestRig" 
-Dexec.args="com.test.parser.MyGrammar startRule 
-gui <INPUT_FILE>"

关于java - Antlr4 "Test Rig"和行家,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18572152/

相关文章:

javax.ws.rs.NotFoundException : Could not find resource for full path Error Occures

java - 通过声明初始化类 DS 字段 - 在构造函数调用之前还是之后?

unicode - antlr4 和国际字符

java - Antlr4 在简单语法上没有找到任何可行的输入字符串替代方案

Antlr4 优先级和关联性

java - ANTLR 4 (Java) 捕获解析器错误/异常以进行测试

parsing - 如何匹配ANTLR解析器(不是lexer)中的任何符号?

java - MongoDB Java Driver 何时建立连接?

Java CLASSPATH 不起作用?

javafx canvas draw 与 java.awt.graphics2d draw 的比较