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