Количество токенов нарушающих грамматику
Известно, что с помощью boost::spirit::lex можно распарсить выражение, задав грамматику. Однако, метод tokenize_and_parse(), который предлагается использовать в документации, возвращает только ответ вида «выражение принадлежит грамматике» или «выражение не принадлежит грамматике», останавливаясь на первой лаже. Я же хочу определить количество токенов (они уже были распарсены лексическим анализатором), которые составляют эту лажу. Spirit такое может? Возможно, есть более удачные альтернативы?
PS: возможно, будет понятнее мое желание на примере. Есть SQL запрос:
select id,name from database where id=1;
where id=1 select id,name from database;
<query specification> ::= SELECT [ <set quantifier> ] <select list> <table expression>