如何根据boost :: spirit派生抽象源代码树?

时间:2013-09-26 10:47:58

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

为了获取抽象源树的一阶导数(用于字符串数学表达式),应该组织哪些额外的数据结构?假设我们有一个字符串表达式树,它是使用boost::spirit构建的。即每个节点都有适当的BOOST_FUSION_ADAPT_STRUCT / BOOST_FUSION_ADAPT_TPL_STRUCT定义。那么,如何将额外生成的数据struct - s存储到主AST的每个节点以及如何构造它们?

我认为,它们应该通过std::reference_wrapper< T const & >boost::optional< T const & >构建到原始T的字段(类型struct) - 具有相同的布局。并且它们应该为源树的每个节点形成数组/向量/ deques(其中index等于n - 源树的相应节点的导数)。每个树遍历“derivator-visitor”应push_back为每个节点的每个数组的下一个表达式。为了建立源节点与其衍生物阵列的对应关系,我们可以对它们进行标记。

0 个答案:

没有答案