【问题标题】:Generate Strings from Grammar in ScalaCheck在 ScalaCheck 中从语法生成字符串
【发布时间】:2015-08-17 12:52:06
【问题描述】:
在 Scala 中,我使用 Parser Combinators 库实现了一个语法。现在,我要做的是根据解析器组合库中的语法生成随机字符串。
在我看来,ScalaCheck 库在某种程度上与 Parser Combinators 相反,因为它结合了生成器而不是解析器。
是否已经有使用 Parser Combinators 或 ScalaCheck 生成字符串的方法,或者是否有将 Parser Combinator 转换为生成器的直接方法?
【问题讨论】:
标签:
scala
code-generation
parser-generator
quickcheck
scalacheck
【解决方案1】:
没有直接的方法可以将您的语法转换为生成器。您必须手动编写它们。这不会那么难,因为你已经有了语法。您可以轻松地测试您的解析器,但测试您的类型检查器可能会有很大的问题(但仍然可能)。在开始之前,请确保您的 AST 节点可以相互比较。
- Scalacheck 允许您生成递归属性,因此您可以
轻松生成 AST 节点。
- 生成 AST 节点后,您可以使用 Scalacheck 和
关于空白及其顺从性的一些额外知识
节点之间,翻译成字符串。
- 然后你可以将生成的字符串提供给解析器,你就可以了
测试代码并将它们与预先生成的 AST 进行比较