Я хочу проанализировать ввод как «start abc end», чтобы извлечь «abc».Как получить boost :: spirit, чтобы остановить синтаксический анализ по ключевому слову?
Вот мой тестовый код:
#include <boost/spirit/include/qi.hpp>
#include <ostream>
namespace qi = boost::spirit::qi;
int main(int argc, char* argv[])
{
typedef std::string::const_iterator iterator;
qi::rule<iterator, std::string(), qi::space_type> rule =
"start" >>
qi::lexeme[+qi::char_] >>
"end";
std::string input("start abc end");
auto iter = input.begin();
std::string result;
qi::phrase_parse(iter, input.end(), rule, qi::space, result);
std::cout << "Result: " << result << std::endl;
}
Выхода "Результат: а конца".
Обратите внимание, что если вы хотите проверить результат 'qi :: фраза_parse', вы увидите, что синтаксический анализ не удался. –
Я заметил это и предположил, что «конец» был израсходован раньше, парсер не смог завершить матч. –
Я не смог скомпилировать ваш код, какую версию boost вы используете? – HeyYO