web-dev-qa-db-ja.com

Flex / LexとYacc / Bisonの違いは何ですか?

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

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

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

    Lex --version
    Lex 2.5.35
    
113
Dumb Questioner

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

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には少なくとも非標準の拡張機能があります。

フレックスとバイソンは無料です。 (AT&T)LexとYaccは違います。

74

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

30
Jan Jungnickel

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

10
ndr

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

9

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

1
Avani Ranade