2006 年度 プログラミング言語処理系

[補足] Yacc/Lex とその互換について

icho もしくはデュアルブートの Linux システム (以下単に icho と記す) における Yacc, lex は本当は byacc, flex という互換ソフトである。

Yacc については、その互換ソフトとして、GNU の Bison が有名である。 Bison は Yacc と同じ入力を受け付け、同等の機能を持つプログラムを出力する。 完全に互換というわけではなく、 Bison 独自の機能を持っていたり、 出力されるプログラムはオリジナルの Yacc とは異なる内容であったりする。

同様に Yacc の互換プログラムとして、byacc (berkeley yacc) がある。 Linux などで yacc というコマンドの実態はこれであることがある。 実際、icho における yacc コマンドの実態は byacc である。

これらの亜種があるのは、ひとつの理由として、 Yacc 自体は商用の UNIX に含まれる商品としてのソフトウェアだったことがあげられる。 つまり、お金を払わないと使用できないものであった。 このため、Yacc 相当の機能を持つ構文解析器生成系は多く作られてきた。 作成した理由は自由に使用できるようフリーソフトにしようというもののほか、 研究として Yacc の独自の機能プラスオリジナルの機能を付加しようというものである。

同様に lex についてもその互換ソフトとして、 flex がある。icho 上の lex は実態は flex であり、 lex 互換オプションで起動されるものらしい。

近年は Java や Ruby などオブジェクト指向言語がよく使われるようになってきており、 これらの言語で利用可能なコンパイラ生成系も存在する。 Java に興味のある人は、次のものについても調べてみよう。


ファンレターはこちらまで♪

2006.04.18 作成