flat7th

memo/20040727

created 2004-07-27 modified 2004-07-27 

構文解析

構文解析について。
このあいだふと、自分がflex-bison32メーリングリストにプログラムを投稿していたときのかけらをWebで発見。
最近さぼっている分野。
yacc、byacc、bisonが受理するのはLRLR(1)文法。
最近はyaccよりも受理する文法がひろいツールが広まっているとのウワサを耳にしたが追っかけてない。

Spirit

で、より広い文法に視点が向きかけていたのだがSpiritなるものを発見。
C++の演算子オーバロードをうまくつかって、BNFによく似たソースを書けば再起下降法のパーザに
変換されるということらしい。

再起下降法

確かに再起下降法は、シンプルさについては一番。受理するのはLL文法だったかな。
bisonでは1つの実行ファイルで複数のパーザを使うのに苦労する。
シンプルで小さなパーザを1つの実行ファイル内でいくつも使いたい場合には最適なのかも。

BNFは何の略か

リンク備考
Spiritマニュアル日本語訳
Backus Normal Form vs. Backus Naur FormSpiritの作者のページ。個人的にちょっと懐かしい話題だ。

Boost

C++の新しい高速なライブラリを作ろうという動きがある。
その1つとしてBoostというものが開発されている。
SpiritはBoostの1部になっているらしい。