Я использую Flex и Bison для генератора парсера, но у меня проблемы со стартовыми состояниями в моем сканере.
Я использую исключительные правила для комментариев, но эта грамматика не соответствует указанным токенам:
%x COMMENT
// { BEGIN(COMMENT); }
<COMMENT>[^\n] ;
<COMMENT>\n { BEGIN(INITIAL); }
"==" { return EQUALEQUAL; }
. ;
В этом простом примере строка:
// a == b
не соответствует полностью как комментарий, если я не включил это правило:
<COMMENT>"==" ;
Как мне обойти это без необходимости добавлять все эти токены в мои эксклюзивные правила?