Я хотел бы создать правило повышения духа, которое анализирует строку и поплавок. Струны Я хотел бы разобрать отформатированы, как это:Boost spirit or order
(str astring)(n 123)
или может быть в другом порядке:
(n 123)(str astring)
Я хотел бы создать правило, с атрибутом следующего типа:
qi::rule<Iter, boost::fusion::vector<std::string, float>, ascii::space_type> hj;
до сих пор это мой код:
qi::rule<Iter, std::string(), ascii::space_type> attr;
attr = lexeme[*alnum];
qi::rule<Iter, boost::fusion::vector<std::string, float>, ascii::space_type> hj;
hj = (
'(' >> lit("str") >> attr(/*put this at position 0*/) >> ')'
|
'(' >> lit("n") >> float_[/*put this at position 1*/] >> ')'
);
Очевидно, что это не скомпилировано (boost вычитает другой тип атрибута). Как я могу реализовать это, особенно, что бы я добавил в комментарий?
+1. [Здесь] (http://coliru.stacked-crooked.com/a/4b0a0abfe1669615) является полным примером. Важно отметить, что синтаксический анализатор перестановок также соответствует одному элементу '(n number)' или одному символу '(str string)', заполняющему построенный по умолчанию элемент, который отсутствует. – llonesmiz