我昨天开始使用精神。我必须为一种小语言编写一个解析器并形成一个中间数据结构。我遵循了Boost Repository的 Pascal Parser 示例。这个例子很好,因为它支持简单的调试。该示例使用 Classic Spirit。
- 我应该翻译成使用气吗(我到目前为止还没有遇到过关于精神的任何问题)?
- 这种转换有一个简单的例子吗?我现在主要使用 classic::grammar 类,如示例所示。
我昨天开始使用精神。我必须为一种小语言编写一个解析器并形成一个中间数据结构。我遵循了Boost Repository的 Pascal Parser 示例。这个例子很好,因为它支持简单的调试。该示例使用 Classic Spirit。
如果您开始一个新项目,我绝对建议您坚持使用 Spirit.Qi。Spirit.Classic 仅在 Spirit.Qi 正在积极开发时处于维护模式。此外,Qi 生成的解析器比旧的解析器快很多。
从 Spirit.Classic 到 Spirit.Qi 的转换并不简单,因为 API 发生了变化。不过,有一些关于此的入门文档。但是,如果您从一个新项目开始,这应该无关紧要,因为无论如何您都必须习惯一个新的库。
所以我建议您尝试阅读介绍性文档,查看 Spirit 附带的示例和测试,最重要的是尝试了解 Spirit 如何处理解析器属性。根据我的经验,解析器属性及其传播规则是最难理解的概念,同时它们对 Spirit 的做事方式至关重要,它们使 Spirit 变得如此强大和灵活。