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 Form | Spiritの作者のページ。個人的にちょっと懐かしい話題だ。 |
Boost
C++の新しい高速なライブラリを作ろうという動きがある。その1つとしてBoostというものが開発されている。
SpiritはBoostの1部になっているらしい。