parser = (qi::i-6ren">
gpt4 book ai didi

c++ - boost::spirit ,如何获取占位符的 "value"

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:11:48 26 4
gpt4 key购买 nike

我正在尝试构建一个接受格式为“/integer/(/integer/)”的字符串并生成一个 std::tuple 的解析器现在我有:

qi::rule<string::iterator,std::tuple<int,int>()> parser = 
(qi::int_ >> '(' >> qi::int_ >> ')')[_val = std::make_tuple(qi::_1,qi::_2)]

无法编译,因为占位符 qi::_i 的类型不正确。如何从占位符中“提取”基础值?

最佳答案

嗯,你可以只使用自动属性传播(又名“自动规则”):

#include <boost/spirit/include/qi.hpp>
#include <boost/fusion/adapted.hpp>
#include <tuple>

namespace qi = boost::spirit::qi;

main( int argc, char* argv[] )
{
qi::rule<std::string::iterator,std::tuple<int,int>()> parser;

parser =
(qi::int_ >> '(' >> qi::int_ >> ')')
;
}

请注意用于将 std::tuple 改编为 Fusion 序列的附加 header 。

关于c++ - boost::spirit ,如何获取占位符的 "value",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13672291/

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