boost :: spirit :: x3 AST生成器?

时间:2019-01-10 21:07:00

标签: c++ boost abstract-syntax-tree boost-spirit

尊敬的同事,

我有一个boost :: spirit :: x3解析器(AST的),可以将输入文件引入我们的应用程序。

我想翻转一下内容,并要求它根据同一棵树生成输出流。

这是我从未做过的事情。我应该使用boost :: karma还是只为树写访客/步行者? boost提供了哪些设施,可以帮助我开始使用这两种方法?

我想象在全局范围内指定递归深度,在每个级别上可能会有用,否则输出可能会很大。

新手要考虑的其他问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

X3没有像Karma那样的东西。

底层Proto库之外没有任何设施可以遍历表达式树。

但是。您将遇到可预见的问题,其中从输入到输出的映射不是双射。您将始终必须为此类数据选择首选的输出表示形式,这意味着您的数据可能不会往返,您可能会进行有损转换。您需要考虑这些。

我实际上不会考虑这一点。与其将我的实现与复杂库的实现细节紧密结合在一起¹,我将算法基于您实际控制的AST或数据结构。


¹像X3一样,它也是实验性的,因此情况可能会发生变化,恕不另行通知