«Прямой» API синтаксического анализа не принимает шкипер, тогда как phrase_parse
делает.
Шкипер - это второе выражение синтаксического анализатора, которое описывает входные последовательности, которые должны игнорироваться вне лексем (например, пробел или комментарии, но не ограничиваясь этим).
Чтобы узнать о поведении шкиперов, см., например, Проблемы с шкипером буст-спирита
В частности, это покажет, что вы можете использовать parse()
отлично подходит для грамматик, которые используют шкиперы внутри, потому что
ok = phrase_parse(f, l, grammar, skipper, attr);
примерно эквивалентен "умной" грамматике, которая определяет ее внутренне:
ok = parse(f, l, qi::skip(skipper)[grammar], attr);
На самом деле я бы сказал, что в 99% случаев это правильный подход, так как шкипер обычно является свойством синтаксического анализатора, который не может / не должен быть изменен. К сожалению, по историческим причинам в примерах документации часто используется phrase_parse
BONUS
Для некоторых примеров синтаксического анализа команд: