gpt4 book ai didi

c++ - 使用 C++ boost::spirit PEG 文法生成表达式

转载 作者:太空狗 更新时间:2023-10-29 21:07:21 26 4
gpt4 key购买 nike

我是 C++ 和 boost::spirit 的新手。尝试通过仅使用 || 构建一个简单的表达式树来学习两者&& 使用 PEG。我已经从文档中的 mini-xml 教程构建了很多代码部分。

这是 code ,它适用于简单的字符串,如“1 || 0”、“1 && 0”、“1 || 1 && 0”……但对“(1 || 1)”无效。我不太明白为什么它无法打印,即使它说解析成功。

另外,请进一步指导我如何使此代码从长远来看更加直观和可维护。

最佳答案

启用 Spirit 调试支持将有助于:

a) 添加定义

#define BOOST_SPIRIT_QI_DEBUG

和b) 在语法的构造函数中添加a

BOOST_SPIRIT_DEBUG_NODE(r);

对于所有规则(这里是r)。因此,解析器将在运行时打印一个执行树,向您显示使用什么输入执行了哪些规则以及哪些属性值已被填充(有关更多详细信息,请参见 here)。

作为一般说明(这可能不适用于您,因为您似乎正在尝试构建 AST),Spirit 的解析器是完全属性化的。这意味着您通常不需要任何语义操作来处理属性(请参阅 hereherehere 以获得简要介绍)。

关于c++ - 使用 C++ boost::spirit PEG 文法生成表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5293255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com