我想写一门小语言,我决定使用Boost Spirit。对我来说看起来不错。我知道我可以用精神来写一个词法分析器,用一个解析器来创建一个语法树。是否可以在 Spirit 中扫描语法树并产生结果。(或者只是为了解析?是否有可用的函数来生成结果,或者我是否必须使用其他工具?很抱歉这个简单的问题,但是在简要查看Spirit文档时,我真的找不到信息。
除此之外,我是否可以将自己的词法分析器与使用 Spirit 编写的解析器一起使用。提前谢谢。
事实上,这确实是"不是一个真正的问题"的候选者。如果您没有链接到文档页面,我会仅使用该链接将其驳回。
碰巧的是,也许您错过了示例:
-
http://www.boost.org/doc/libs/1_51_0/libs/spirit/example/qi/compiler_tutorial/
-
简单表达式计算器的许多版本(也许按顺序查看它们)
-
召唤编译器该编译器能够编译和运行简单的语言。示例在这里:
/* The factorial (in conjure) */ int factorial(n) { if (n <= 0) return 1; else return n * factorial(n-1); } int main(n) { return factorial(n); }
- 还有一个
mini C
编译器示例
问:除此之外,我是否可以将自己的词法分析器与使用 Spirit 编写的解析器一起使用?
答:是的。只需公开一个令牌迭代器接口,并将其用作解析 API 的输入迭代器。请参阅Spirit Lex的示例以获取更多信息。