【问题标题】:Antlr4 grammar testingAntlr4 语法测试
【发布时间】:2014-09-08 13:19:02
【问题描述】:

我使用 Intellij IDEA /w Antlr 插件。

假设我写了一个名为mylang.abc 的文件。这是有关最终语言外观的示例。然后我必须用这种语言的语法编写 .g4 文件。

但是我想测试我写的语法是否正确。这是由 antlr Preview 完成的,但随着语言的发展,我需要用我理想的源代码测试每条规则,然后逐一分析。

一个理想的测试大概应该有这样的逻辑:这是源代码,(这是这条线应该被解析的规则-可选),这应该是理想的解析树 -> 匹配测试?打印好的/糟糕。

我的方法在语法测试中是否正确?如果是这样,上面的例子可以是什么?

【问题讨论】:

    标签: testing junit antlr antlr4


    【解决方案1】:

    对于 ANTLR v3,我们创建了 gUnit,类似于 jUnit。最后,我决定像这样的一系列方法一样容易:

    assertTreeEquals("a=b;", "expr", "(expr a = b)");

    这是用你的语法在一个细粒度的细节上找出错误的一种方法。另一种方法是简单地拥有大量完整的输入,涵盖您关心的所有可能的短语。然后,您可以拥有一个带有序列化树的文本文件,以与解析器创建的树进行比较。一旦您对这些树感到满意,它们就可以在您调整语法时轻松检测到回归。

    另一方面,我正在考虑在 Intellij 插件中创建一种自动化机制,以创建与每个规则相关联的单元测试。换句话说,一旦您有一个确定具有正确解析树的大量输入,您将单击一个按钮,该工具将自动创建一系列单元测试,每个测试组/规则对一个。我还不相信它比仅仅拥有一个充满输入和输出错误的目录更有用,但我会调查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-03
      • 1970-01-01
      • 2022-01-23
      • 2022-01-09
      • 2014-10-24
      • 1970-01-01
      • 2015-09-08
      相关资源
      最近更新 更多