我有一个ANTLR语法,我想模糊我的解析器。
答案 0 :(得分:1)
您是否正在寻找CFG语法的一代? IE浏览器。语法接受的字符串的生成?这可能是检查语法正确性的好主意,但请记住,接受的字符串集很可能是无限的。任何非常糟糕的错误都应该在语法规范中明显,并且希望通过检查LL-ness。
我不知道ANTLR世界中的任何工具,对(E)BNF生成的快速谷歌搜索也没有发现任何有用的东西。
然而,如果性能不是问题,那么推出自己的发电机并不是很困难。 Prolog会浮现在脑海中,有大量的文学可供选择,但如果你不想离开Java,我怀疑自制是必须的。无论如何它很有趣。
答案 1 :(得分:0)
假设您从ANTLR语法生成了句子(标记符串)。为什么你认为你的基于ANTLR的解析器会反对它们?
你真正需要做的是制作不太合法的字符串。所以,你需要的是一个可以产生错误字符串的生成器。
鉴于ANTLR从您的ANTLR语法生成一组过程,我认为使用生成的解析器生成一个句子生成器是很困难的。你需要的是语法的显式模型。这已经可以使用了:ANTLR 输入语法。
我看到的另一个复杂因素是从构成令牌定义的正则表达式生成合法的令牌。同样,您需要处理ANTLR输入才能执行此操作。
处理这两者似乎在技术上很简单。用作基础的最佳引擎可能是ANTLR前端,它显然会解析ANTLR规范,因此必须保留一些ANTLR输入的表示。
答案 2 :(得分:0)
正在寻找类似的东西并找到GramTest,这似乎是合适的,但是ANTLR语法不是使用BNF语法作为输入。
此工具允许您基于任意用户生成测试用例 定义的语法。输入语法以BNF表示法给出。 潜在的应用包括模糊测试和自动化测试。
有关更多背景信息,请链接到以下博客帖子: