1

Debian Squeeze で実行していて、apt-get install flex を使用して flex/flex++ をインストールしています。

ただし、flex++ は flex への単なるシンボリック リンクであることに注意しました。それで、C++スキャナーを生成する「プログラム」flex++が本当に存在しますか、それとも私が切り替える必要がある単なるflexフラグですか?

また、よくある問題: インターネット上の多くの例は、flex または flex++ で「コンパイル」できません。Flex で次のエラーが発生します。

test.lex:1: invalid character: %
...

だけで入力を処理する場合:

%name Test

ここで何が問題なのですか?

Flex/Flex++ バージョンは 2.5.35 です

4

1 に答える 1

4

実際には Flex++ プロジェクトがありますが、元の Flex とは別のものです。

Flex は C++ で使用するスキャナ コードの生成をサポートしていますが、実験的なものとして分類されています (かなり前から存在していましたが)。

シンボリックリンクは、一部のプログラムが呼び出し方法に基づいて動作を変更するという事実によって説明されます。互換性の理由から、argv[0]実行可能ファイル名を確認して調べます。たとえば、として実行すると、 C++ サポートflex++のフラグを有効にすることができます。-+

(BusyBox はこの手法を使用して、1 つのバイナリを複数の個別のプログラムとして動作させ、スペースを節約します。)

于 2012-07-14T01:07:23.513 に答える