Поместите пробел в грамматику, если он синтаксически значим. Если это не так, как кажется, здесь нет, просто игнорируйте правило. Пробел имеет только синтаксическое значение, когда требуется разделить токены, например, в int a;
.
Например, COBOL имеет правило, что за точкой должен следовать пробел, кроме строки PICTURE. Реализовать правило было сложнее, чем игнорировать его, поэтому я проигнорировал его. Он прошел сертификацию FIPS, и за десять лет никто не заметил, что компилятор использовался в производстве.
NB. Лучший способ обработки недопустимых символов - это ошибки синтаксического анализатора. Таким образом, парсер может применить свою стратегию восстановления после ошибок. На лексическом уровне лучшее, что вы можете, печатать и игнорировать их.
В lex / flex это просто означает наличие окончательного правила, которое гласит:
. return yytext[0];