あまりにもみんながペグペグ言うので、文法には興味の無い私も PEG の論文を読むことにした。http://pdos.csail.mit.edu/~baford/packrat/popl04/
PEG が所謂 BNF とどう違うかというと、文法要素を比較する時の順序が決まっている所が違う。BNF が自然言語の解析という目的から生まれ、自然言語みたいに曖昧さを許容する文法なのに対して、PEG は最初からプログラミング言語に特化しているので、上から順番にしかマッチしないようになっている。
パーサージェネレーターを使わないで手でシコシコ文法を書くやり方をちゃんと論文にしましたという事だ。
そこで思い出したのが、KL1 という prolog 由来の言語があって、なんか BNF に対する PEG が、prolog に対する KL1 みたいな雰囲気だなあと思ったのだけど、ホームページにアクセス出来なくて確かめられなかった http://www.klic.org/。コンパイラは今でもダウンロードできて cygwin でコンパイルも出来ます。 http://www.ueda.info.waseda.ac.jp/~takagi/kl1/klic-3.003/fix.html