2014-10-06 1 views
2

В моем парсере иногда грамматика вмещает совпадение только в первом разделе входной строки. Это похоже на нормальное поведение для фраза_parse(), но это не то, что я ищу в своем приложении.Как я могу потребовать, чтобы синтаксический анализатор возвращал только полные совпадения, а не частичный в духе форсирования?

Как я могу потребовать, чтобы вся строка ввода соответствовала грамматике для успешного анализа, а не возвращала успех на более короткие совпадения, которые не потребляют всю входную строку?

ответ

3

Просто требует qi::eoi в конце:

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

Это также работает, чтобы отбросить ветви, которые не соответствуют всем входным данным:

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

Смотрите также

 Смежные вопросы

  • Нет связанных вопросов^_^