8得票1回答
Boost.Spirit.Qi:如何将规则的属性作为封闭规则结构体属性的字段?

像其他许多问题一样,我正在尝试使用Boost.Spirit.Qi将简单的语法解析为结构树。 我会尝试将我要做的事情简化到最简单的情况。我有: struct Integer { int value; }; BOOST_FUSION_ADAPT_STRUCT(Integer, (int, ...

8得票1回答
如何在使用boost::spirit::qi解析器时使用多态属性?

我希望我的基于boost::spirit的解析器能够解析文件,将解析出的规则转换为不同类型,并发出包含它找到的所有匹配项的向量。所有作为属性发出的类型都应该从一个基本类型继承,例如: #include <boost/spirit/include/qi.hpp> #include ...

8得票1回答
使用boost::spirit解析二进制数据时更改属性类型

我已经成功地使用boost::spirit::qi来解析由内置解析器(例如byte_,little_word等)组成的流。然而,现在我需要解析不属于这些类别之一的数据。例如,我想将一个16.16固定点二进制数转换为双精度浮点数;例如,little_word << little_16...

8得票1回答
Boost Spirit X3是否已经可以投入生产?

我正在将一个手写的解析器迁移到 Boost.Spirit (2.5.4)。我的第一印象很好,但由于我使用的是 C++17,因此 X3 似乎是一个非常有吸引力的选择。 幸运的是,有许多关于 X3 的资源: 许多 Stackoverflow 上关于 X3 的问题 一些 YouTube 上关于...

8得票1回答
使用boost.spirit时出现弃用警告

我正在尝试使用boost.spirit.qi编写一些解析器,但在编译时遇到以下弃用警告: In file included from /usr/include/boost/iostreams/detail/is_dereferenceable.hpp:12:0 ... #pragma m...

7得票2回答
C++/Boost: 编写一个更强大的sscanf替代方案

我想在C++中编写一个函数来替代C的sscanf,并将匹配结果赋值给迭代器。 基本上,我想要这样的东西: string s = "0.5 6 hello"; std::vector<boost::any> any_vector; sscanv(s, "%f %i %s", an...

7得票1回答
Boost::Spirit - on_error未打印

我正在尝试使用Boost::Spirit::qi的on_error机制来查找解析失败的原因。 我已经在on_error函数处设置了断点,该函数已被调用,但没有输出(没有任何内容)。 这是一个简单的on_error示例: on_error<fail>(level1, b...

7得票1回答
如何将 boost::spirit::qi::lexeme 的属性转换为 std::string?

请考虑: struct s { AttrType f(const std::string &); }; ...还有一个带有属性 AttrType 的规则 r: template <typename Signature> using rule_t = boos...

7得票3回答
如何使用boost::spirit将一系列单词解析为向量?

我正在尝试学习boost::spirit。例如,我正在尝试将一系列单词解析为vector<string>。我尝试了以下代码: #include <boost/spirit/include/qi.hpp> #include <boost/foreach.hpp&g...

7得票1回答
将boost::optional转换为bool,在boost::spirit::qi语法中

在我的 boost::spirit 语法中,我有以下代码片段; implicit_method_declaration = (-(qi::token(ABSTRACT)) >> ...) -(qi::token(ABSTRACT)的类型是boost::optional<...