3
我有一个更复杂的boost :: spirit语法,它不符合我的预期。 我能够打破它这个最小例如:http://ideone.com/oPu2e7(不能编译在那里,但VS2010编译)为什么'boost :: spirit与(+ alpha | + alnum)语法匹配foo123?
基本上这是我的语法:
my_grammar() : my_grammar::base_type(start)
{
start %=
(+alpha | +alnum)
;
}
qi::rule<Iterator, std::string(), ascii::space_type> start;
它匹配foobar的,123foo但不匹配foo123。为什么?我希望它能匹配所有三个。
你真的是通过把以前进之间的词来强调斜线 – Columbo
谢谢,匹配'? foo123' - 但作为比赛结果,我得到了'foofoo123' - 所以'+ alp ha'和'+ alnum',即使我在两个分支之间都有一个“|”,并且第一个分支不完全匹配。 – Stefan
这是容器属性常见的陷阱。你可以使用'qi :: hold []' – sehe