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