136

Flex&LexとYacc&Bisonの違いは何ですか。私はインターネットを乱暴に検索しましたが、確かな答えは見つかりませんでした。

Ubuntuに純粋なLexとYaccをインストールできますか、それともflexとbisonのみをインストールできますか。私は混乱しています。

  • LexまたはYaccはまだ誰かによって維持されていますか?
  • それらはすべて無料ですか?
  • Lexが無料でない場合、なぜUbuntuディストリビューションにインストールするのですか?

    lex --version
    lex 2.5.35
    
4

5 に答える 5

90

Lex と Flex にはいくつかの違いがありますが、Flex で問題が発生するには、Lex を悪用する必要があります。(私は Lex を悪用し、Flex では動作しないプログラムを持っています。) これは主に入力先読みの領域にあります。Lex では、独自の入力コードを提供して文字ストリームを変更できます。Flex ではそれができません。

Yacc と Bison は非常に密接に互換性がありますが、Bison には追加の機能がいくつかあります。

おそらく、Ubuntu にインストールする Lex と Yacc の正当なコピー (元の AT&T バージョン) を見つけることはできません。必ずしも不可能とは言いませんが、そのようなことは承知していません。Flex と Bison はすぐに入手でき、ほとんどの目的で同等です。また、BSD の世界からさまざまな代替プログラムやほぼ同等のプログラムを見つけることもできます。

Lex と Yacc は Unix SVRx ライセンシーによって保守されています。IBM (AIX)、HP (HP-UX)、Sun (Solaris) などの企業は、Lex と Yacc のバージョンを変更してコマンドを実行しています。MKS は MKS Lex と MKS Yacc も提供します。ただし、Yacc には少なくとも非標準の拡張機能がいくつかあります。

Flex と Bison は無料です。(AT&T) Lex と Yacc は違います。

于 2009-03-08T12:58:39.287 に答える
35

BisonはYaccのGNU実装/拡張であり、FlexはLexの後継です。どちらの場合も、bison / flexを使用することは問題ありません(そして推奨されます)。

于 2009-03-08T12:35:33.103 に答える
12

ほとんどの (すべての?) Linux システムでは、「Lex」は実際には flex へのシンボリック リンクです。基本的に無料版とは名前が違うだけです。

于 2009-04-18T00:21:50.650 に答える
10

YACC は、Plan 9 と Open Solaris の両方のオープン ソース ライセンスで利用できます。また、元の YACC と互換性がありますが、ソース コードを共有していない Berkeley YACC もあります。Berkeley YACC は、オープン ソースの BSD オペレーティング システムのいずれにもあります。

于 2009-07-27T19:24:03.680 に答える
2

Bison は GNU プロジェクトの一部です。また、yacc は Berkeley Software Distribution (BSD) のユーティリティとして使用されています。yacc と互換性がありますが、Lex と Yacc は過去のものです。フレックスとバイソンは今日広く使用されています。

于 2018-04-15T06:52:54.267 に答える