任何工具都可以根据语言语法随机生成源代码?

W.S*_*Sun 5 compiler-construction random context-free-grammar

AC程序源代码可以根据C语法进行解析(在CFG中描述)并最终变成许多AST.我正在考虑是否存在这样的工具:它可以通过首先随机生成许多AST来做相反的事情,其中​​包括没有具体字符串值的令牌,只有令牌的类型,根据CFG,然后生成混凝土令牌根据令牌在正则表达式中的定义.

我可以想象第一步看起来像一个迭代的非终端替换,它是随机的,并且可以受到一定数量的迭代次数的限制.第二步是根据正则表达式生成随机字符串.

有没有可以做到这一点的工具?

grr*_*sel 5

“数据生成语言” DGL做到了这一点,增加了对输出语法中产生式概率进行加权的能力。

通常,递归下降解析器可以直接重写为一组递归过程,以生成语言,而不是解析/识别语言。