我有一个ANTLR语法,想要模糊测试我的解析器。
你是否正在寻找从CFG语法中生成字符串?也就是说,生成被语法接受的字符串?这可能是检查语法正确性的好方法,但请记住,被接受的字符串集很可能是无限的。任何真正糟糕的错误应该已经在语法规范中显现出来,并且希望通过LL-ness的检查。
我不知道ANTLR世界中是否有任何工具,快速搜索(E)BNF生成也没有发现任何有用的东西。
然而,如果性能等方面不是问题,自己编写生成器并不是很困难。Prolog会让人想起,有大量的文献可用,但如果您不想离开Java,我认为自己动手制作是一种方式。反正很有趣。
在寻找类似内容时,我发现了GramTest,它似乎很适合,但与ANTLR语法不同,它使用BNF语法作为输入。
这个工具允许您根据任意用户定义的语法生成测试用例。输入语法以BNF表示法给出。潜在应用包括模糊测试和自动化测试。
有关更多背景信息,请参阅以下博文: