我有一个Xtext/Antlr 语法,可以解析Coffeescript的子集。我有一些测试用例,但我想做另一种测试:
coffee -ne "the sentence")因此,我可以确保我的解析器接受适当的子集,并且在某些情况下不会太宽松。现在,我被困在第一步了。如何从我的 Antlr 语法(也大量使用句法谓词)生成句子?所以我对解析句子的反面感兴趣。
我发现了一些相关的尝试,但答案根本不使用 Antlr,而是使用python、clojure或ruby 中的自定义语法。我更喜欢一个可行的解决方案,而不是关于如何实现它的提示。
AC程序源代码可以根据C语法进行解析(在CFG中描述)并最终变成许多AST.我正在考虑是否存在这样的工具:它可以通过首先随机生成许多AST来做相反的事情,其中包括没有具体字符串值的令牌,只有令牌的类型,根据CFG,然后生成混凝土令牌根据令牌在正则表达式中的定义.
我可以想象第一步看起来像一个迭代的非终端替换,它是随机的,并且可以受到一定数量的迭代次数的限制.第二步是根据正则表达式生成随机字符串.
有没有可以做到这一点的工具?