私は、パーサージェネレータにFlexとBisonを使用していますが、スキャナの開始状態に問題があります。Lex/Flexの開始状態
私がコメントに対処するために排他的なルールを使用していますが、この文法は引用されたトークンと一致していないよう:
%x COMMENT
// { BEGIN(COMMENT); }
<COMMENT>[^\n] ;
<COMMENT>\n { BEGIN(INITIAL); }
"==" { return EQUALEQUAL; }
. ;
この単純な例では行:
// a == b
ISN」をこのルールを含めない限り、このルールを完全にコメントとしてマッチさせてください:
<COMMENT>"==" ;
どうすればいいですか?これらのトークンをすべて私の排他的なルールに追加する必要はありませんか?レックス/フレックスまたは任意に
多くのルールがあるので避けることができれば、包括的な状態を使用する必要はありません。問題は、この 'eat comment'ルールが、複数の文字(==など)を持つトークンと一致しないように見えるということです。 – Dan
それから間違ったことをしているかもしれないと思います。あなたの通常のトークンと一致しないコメントのための 'サブパーサー'を作成する必要があります。 –
言っておきますが、各入力の行を保存したい場合は、行番号が間違っていますか? –