Sequential Or语法分析器a||b
Sequential Or parser a || b
我无法获得boost文档中提供的示例的修改版本来正确输出
以下是关于顺序OR解析器的文档:http://www.boost.org/doc/libs/1_56_0/libs/spirit/doc/html/spirit/qi/reference/operator/sequential_or.html
test_parser("123.456", int_ || ('.' >> int_)); // full
我希望这个表达式用两个条目填充vector<int>
:
[0] = 123
[1] = 456
为什么不起作用?
string input("123.456");
vector<int> output;
string::iterator i = input.begin();
parse(i, input.end(), int_ || ('.' >> int_), output);
我已经验证了解析返回true
和i == input.end()
。我还尝试了不同的输出数据结构,包括带选项的元组和选项向量。它们都只生成一个条目,只包含123,而不是456。
||解析器将解析为tuple<optional<A>, optional<B> >
(对于乐观场景)。这永远不会与您的容器属性兼容。
然而,看起来你可以使用
parse(i, input.end(), -int_ >> -('.' >> int_), output);
也就是说。。。如果我私下里是Clippy,我可能会说"看起来你在试图解析实数。
考虑float_
、double_
或可能具有自定义策略的底层real_parser
。另请参阅:
- 使用boost spirit(longest_d)解析int或double
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 使用 gperftools 的堆分析器来分析 libc malloc
- 在手写语法分析器中翻译语法文件
- 我们是否可以使用 g++ 编译代码通过 Solaris Studio 的性能分析器进行性能分析?
- 手工编写的递归上升语法分析器中的递归左递归
- GLSL 语法错误:"in"分析错误
- C++.obj语法分析器面
- 无序时分析逗号分隔的语法
- 递归下降分析和语法树
- 将qi::十六进制语法分析器限制为2个字符
- 编译错误,带有boost::spirit语法分析器
- Sequential Or语法分析器a||b
- 用于从文件填充类的词法分析器/解析器的语法规则
- 词汇和语法分析器软件
- 在气的精神中回滚替代语法分析器的变化
- 在递归下降语法分析器中避免了递归算法中的stackoverflow
- 使用Alternative语法分析器提高spirit较差的性能
- Lexer和来自EBNF的C++语法分析器
- 助推::精神::气.如何将内联语法分析器表达式转换为独立语法,以及如何解压缩它们生成的元组
- 如何编写SFINAE来测试语法分析器规则