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