首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在TatSu中生成随机语法扩展(Python)

在TatSu中生成随机语法扩展(Python)
EN

Stack Overflow用户
提问于 2021-10-23 06:16:04
回答 2查看 89关注 0票数 0

我正在为用TatSu生成的语法解析器编写一个解释器。我正在寻找一种方便的方法来为我的语法生成用例,这样我就可以为我的解释器编写单元测试。目前,我正在手动生成测试用例。

我想知道TatSu包是否提供了自动生成随机语法派生的方法(可能没有文档),以便我可以将它们用作我的解释器的测试用例。此外,最好指定语法规则,为此我需要随机结果。

EN

回答 2

Stack Overflow用户

发布于 2021-10-31 11:12:11

如果您查看grammars.py中的__str__()方法,您将看到一个遍历语法以将其转换为可读内容的示例。

您也可以使用Visitor

因为语法的派生集可能是无限的,所以您需要一个策略来在退出之前生成一些有趣的样本(Ctrl-C):

广度优先,否则访问者将递归,直到运行时堆栈为exhausted

  • because of ,首先使用选项中的最后一个选项(|),它应该是生成最短派生的选项

因为TatSu跳过了空格,所以您可能需要添加一个步骤来漂亮地打印输出。

这是一个有趣的项目,如果你在最后将它作为一个拉请求添加到TatSu中,那就更好了。

很抱歉,我只提供了指导方针,而没有提供示例。

票数 1
EN

Stack Overflow用户

发布于 2021-11-06 18:02:15

我已经创建了一个实验性的公共存储库TatSu Random Derivation Generator,它可以为您用TatSu编译的许多语法规则生成随机派生。如果语法非常复杂,程序就会运行到RecursionError中。

然而,它对于测试您的语法很有用,特别是如果您想测试特定产生式规则的派生。

example.py以及许多测试向您展示了如何使用该工具。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69685640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档