我怎样才能要求解析器只返回完全匹配而不是部分提升精神?

时间:2014-10-06 17:20:33

标签: boost-spirit boost-spirit-qi

在我的解析器中,有时语法仅在输入字符串的第一部分上匹配。这似乎是phrase_parse()的正常行为,但不是我在我的应用程序中寻找的。

如何要求整个输入字符串与成功解析的语法匹配,而不是在不消耗所有输入字符串的较短匹配上返回成功?

1 个答案:

答案 0 :(得分:3)

最后只需要qi::eoi

bool ok = qi::phrase_parse(f, l, grammar >> eoi, skipper);

这也可以丢弃与所有输入都不匹配的分支:

myrule = (legA >> eoi) | (legB >> eoi) | (legC >> eoi);

另见