Flex / LexとYacc / Bisonの違いは何ですか?
-
05-07-2019 - |
質問
フレックスとアンプの違いは何ですか? LexおよびYacc&バイソン。インターネットを激しく検索しましたが、確かな答えは見つかりませんでした。
Ubuntuに純粋なLexとYaccをインストールできますか、それともflexとbisonのみをインストールできます。混乱しています。
- LexまたはYaccはまだ誰かによって管理されていますか?
- それらはすべて無料ですか?
-
Lexが無料でない場合、Ubuntuディストリビューションにインストールする必要があるのはなぜですか?
lex --version lex 2.5.35
解決
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は違います。
他のヒント
BisonはYaccのGNU実装/拡張であり、FlexはLexの後継です。どちらの場合でも、bison / flexを使用することは問題ありません(推奨)。
ほとんどの(すべて?)Linuxシステムでは、" Lex"実際にはflexへのシンボリックリンクです。基本的に、無料版とは異なる名前です。
YACCは、Plan 9とOpen Solarisの両方のオープンソースライセンスで利用できます。また、元のYACCと互換性がありますが、ソースコードを共有しないBerkeley YACCもあります。 Berkeley YACCは、オープンソースBSDオペレーティングシステムのいずれかで見つけることができます。
GNUプロジェクトの一部のバイソン。また、yaccはBerkeley Software Distribution(BSD)のユーティリティとして使用されます。yaccと互換性がありますが、LexとYaccは過去のものです。フレックスとバイソンは今日広く使用されています。