我正在为使用 TatSu 生成的语法解析器编写解释器。我正在寻找一种方便的方法来为我的语法生成用例,这样我就可以为我的解释器编写单元测试。目前,我正在手动生成我的测试用例。
我想知道 TatSu 包是否确实提供了任何(可能是未记录的)方法来自动生成随机语法推导,以便我可以将它们用作我的解释器的测试用例。此外,最好指定我需要随机产生的语法规则。
如果您查看其中的__str__()
方法,grammars.py
您会看到一个遍历语法以将其转换为可读内容的示例。
您也可以使用Visitor
.
因为语法的推导集可能是无限的,所以您需要一种策略来在退出之前生成一些有趣的样本 ( Ctrl-C
):
|
选项,它应该是产生最短推导的选项因为 TatSu 跳过了空格,所以您可能需要添加一个步骤来漂亮地打印输出。
这是一个有趣的项目,如果最后您将它作为拉取请求添加到 TatSu,那就太好了。
我很抱歉只提供指南而不是示例。
我创建了一个实验性公共存储库TatSu 随机推导生成器,它可以为使用 TatSu 编译的许多语法规则生成随机推导。如果语法非常复杂,程序会遇到 RecursionError。
尽管如此,它对于测试您的语法很有用,特别是如果您想测试特定生产规则的派生。
example.py
以及许多测试向您展示了如何使用该工具。