2011-12-12 73 views
3

我有一个Xtext/Antlr grammar,它解析coffeescript的一个子集。我有一些测试案例,但我认为这样做另一类测试的:从Antlr文法生成句法正确的句子

  1. 生成从我的ANTLR的语法是随机的,语法正确的片段
  2. 订阅这些片段到原来的CoffeeScript解析器(主叫coffee -ne "the sentence"
  3. 检查每个句子是否被coffeescript解析

因此,我可以确保我的解析器接受一个合适的子集,并且在某些情况下它不是太宽容。现在,我陷入了第一步。我怎样才能从我的Antlr语法生成句子(这也会大量使用句法谓词)?所以我对分析句子的反面很感兴趣。

我发现了一些related attempts,但答案是不是在所有使用ANTLR的,但一个自定义的语法python,或clojure,或ruby。我更喜欢有效的解决方案,而不是提示如何实施。

回答

1

不,你不能这样做。如果你看看ANTLR编译的代码,你可以看到它只是一个识别器,而不是一个生成器。

您提供的链接是您最好的选择 - 以您的ANTLR语法,删除所有规则,使其成为正式语法,然后尝试通过其中一个程序运行它。

或者如果你的coffeescript子集是非常小小,你可以采取生成随机标记字符串的方法并丢弃所有不解析的字符串。