2

私は

%option nounput

オプションとコマンドラインの使用

flex --nounput

そしてフレックスバージョン2.5.35。

ただし、cpp 出力にはまだ行が含まれています。

#define unput(c) yyunput( c, (yytext_ptr)  )

unput が使用されていないため、これにより g++ でコンパイルの問題が発生します。

この問題を「きれいな」方法で修正する方法はありますか? 2 つの汚れた方法は明らかです。

  1. 役に立たない方法で unput を使用します。
  2. スクリプトを使用して、生成された cpp ファイルから行を自動的に削除します。
4

2 に答える 2

0

(この質問に「問題が再現できなくなった」というフラグを立てようとしましたが、フラグがタイムアウト/古くなっています。未回答の質問のままにならないように回答しています。

@akondが述べたように:

この問題は発生しません。私が使用しているバージョンは同じです (flex 2.5.35)。%option nounput私のためにトリックを行います。

バージョン 2.5.4 でもこれを試しましたが、問題がないことを確認できます。このオプション--nounputはもはや認識されておらず、文書化されていません。ただし、%option nounput マニュアルに残っています

cpp 出力にはまだ行が含まれています#define unput(c) yyunput( c, yytext_ptr )が、これは g++ エラーを生成していないようです。おそらく他の同様のオプションを使用して-pedantic-errorsいますか?

于 2015-03-22T19:47:24.393 に答える