在我的解析器中,有时语法仅在输入字符串的第一部分上匹配。这似乎是phrase_parse()的正常行为,但不是我在我的应用程序中寻找的。 p>
如何要求整个输入字符串与成功解析的语法匹配,而不是在不消耗所有输入字符串的较短匹配上返回成功?
答案 0 :(得分:3)
最后只需要qi::eoi
:
bool ok = qi::phrase_parse(f, l, grammar >> eoi, skipper);
这也可以丢弃与所有输入都不匹配的分支:
myrule = (legA >> eoi) | (legB >> eoi) | (legC >> eoi);
另见