В последнее время я играю с boost :: spirit :: qi и пытаюсь написать свой собственный (очень, очень простой) язык сценариев, который он будет анализировать. У меня были проблемы, когда я добрался до операторов if в сценарии. Мне нужен парсер, чтобы пропустить части ввода, если вызов функции возвращается true.
Например, у меня есть токен, определенный как принимающий имена переменных (a-zA-Z_) и набор сравнения, чтобы принять ">" или "<". Пример кода ниже. </p>
comparison_statement = token >> comparison >> token;
statement = lit("if ") >> comparison_statement[&compare] >> "then";
qi::phrase_parse(first, last, script, space); // This call the parser
Как бы я пропустил следующий раздел, если функция сравнения вернулась?