パーサー ジェネレーターに Flex と Bison を使用していますが、スキャナーの開始状態に問題があります。
コメントを処理するために排他的なルールを使用していますが、この文法は引用されたトークンと一致しないようです:
%x COMMENT
// { BEGIN(COMMENT); }
<COMMENT>[^\n] ;
<COMMENT>\n { BEGIN(INITIAL); }
"==" { return EQUALEQUAL; }
. ;
この簡単な例では、次の行:
// a == b
次のルールを含めない限り、コメントとして完全に一致するわけではありません。
<COMMENT>"==" ;
これらすべてのトークンを排他的ルールに追加することなく、これを回避するにはどうすればよいですか?