测试ANTLR语法

时间:2012-05-31 17:05:32

标签: java grammar antlr3

所以我一直在使用ANTLR v3.4在Eclipse中制作语法,我已经制作了一个可行的语法,我想确保在编辑它时一切仍然有效。我每次都可以进入解释者,但这似乎是浪费时间。

问题: 我已经阅读了关于gunit但它下载gUnit的链接: (http://antlr.org/hudson/job/gUnit/org.antlr $ gunit / lastSuccessfulBuild /)不起作用。我怎样才能获得gUnit。 测试语法的最佳方法是什么?它实际上是gUnit还是我应该像jUnit测试一样进行java测试?

4 个答案:

答案 0 :(得分:5)

我最近使用Eclipse完成了两项ANTLR3任务(我正在攻读计算机科学硕士学位)。我发现没有一个文档有一个在Eclipse中安装,配置,编写和调试语法的过程。因此,在解决了各种问题之后,我发现最简单的事情就是留在Eclipse中进行测试。

要使用我开始使用的过程(如下所述),您必须先安装ANTLR IDE v2.1.2。从Eclipse Indigo内部添加它:http://antlrv3ide.sourceforge.net/updates。该站点还有一些关于使用ANTLR IDE的有用文档。安装后,必须配置IDE。视频教程有点过时但很有帮助。详细了解如何指导configuring ANTLR IDE in Eclipse。主要配置项是java输出文件夹。在Eclipse中执行此操作,转到Windows,首选项,ANTLR,代码生成器,检查项目相关文件夹,然后在输出文件夹名称框中键入文件夹名称(我的名称为“antlr-java”,其他人使用“generated”)。

使用ANTLR IDE在Eclipse Indigo中测试/调试ANTLR

  1. 创建新项目后,右键单击它,选择“配置”,“转换为” ANTLR项目......
  2. 在.g文件中创建语法并保存。注意:文件名必须与语法名称匹配。
  3. 如果存在重大错误,请调试语法。 Eclipse显示ANTLR错误 什么线受影响。起初,这些错误似乎很难理解 他们可以通过使用各种资源来完成:      - 编写ANTLR的人Terence Parr的最终ANTLR参考文献      - ANTLR参考手册      - 谷歌的错误;很多时候你会在stackoverflow结束这里;       特别是Bart Kiers既知识渊博又乐于助人(Bart:thx for       你不知道的帮助你给了我)
  4. 在解决了严重的ANTLR错误后的第一次保存,你输出java输出文件夹 将创建在Eclipse中配置,并且还将创建该文件夹中的java文件。
  5. 右键单击java输出文件夹,选择Build Path,Use As a Source Folder。这个 告诉Eclipse在哪里查找项目的java源代码。
  6. 新java文件中可能存在错误。选择它,然后搜索 对于java错误。返回语法或java文件,更正错误并重新保存 语法直到语法和java文件都没有错误,然后运行它。
  7. 从现在开始,这是通常的修改运行调试周期。
  8. 我需要的唯一其他Eclipse更改是创建一些运行配置进行测试 命令行参数。

答案 1 :(得分:1)

你可以下载gUnit there,但我认为没有最新版本......

尝试Jarvana ...最新版本有3.4:http://repo1.maven.org/maven2/org/antlr/gunit/3.4/gunit-3.4.jar

@Dave Newton是对的。从ANTLR v3.1开始,gUnit包含在主要的ANTLR工具罐中,如there所述。


直到现在我还不知道gUnit。它看起来很适合语法测试,但我认为JUnit测试将完成他们的工作......

答案 2 :(得分:1)

这个问题很老了,但为了完整起见,我要留下一个参考:

对我来说,gUnit没用。因此,我设法找到如何仅测试Lexer,然后仅测试解析器。

  

我在这里回答:https://stackoverflow.com/a/53884851/976948

基本上,有2条有关如何对其进行测试的文章的链接:

答案 3 :(得分:0)

这是我第一次听说gUinit并阅读它。 (我不太使用ANTLR。)听起来很有趣,但是一半没用。

我验证语法的方法是用“正常”单元测试实际验证整个解析器。问题是,无论如何你都应该进行单元测试,检查语法回归的测试只需将其添加到那里。根据我的经验,大多数错误都来自语义分析和缩减,而不是语法。