1. ホーム
  2. parsing

[解決済み] Flex/LexとYacc/Bisonの違いは何ですか?

2022-06-16 20:03:41

質問

Flex &; Lex と Yacc &; Bison の違いは何でしょうか。インターネットをくまなく検索してみましたが、確かな答えは見つかりませんでした。

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の世界からも、さまざまな代替およびほぼ同等のプログラムを見つけることができるかもしれません。

IBM (AIX)、HP (HP-UX)、Sun (Solaris) などの会社は、Lex と Yacc の修正版を彼らのコマンドで持っています。 MKS も MKS Lex と MKS Yacc を提供していますが、少なくとも Yacc には非標準の拡張があります。

Flex と Bison は無料です。 (AT&T) Lex と Yacc はそうではありません。