boost::spiritをはじめてみる

| | コメント(3)

処理系作成をなんとか進めたいのですが、まずは環境作り。
bison(構文解析)+flex(字句解析)でCベースでやろうとしてたんですが、
面倒臭くなってやっぱりC++にしようかと思いました。

で、Cだととりあえず簡単に動くものをビルドできたんですが、
C++だとどうもうまくいかない。
flexのファイル(.l)にC++コードを書いてちゃんと生成できるし、
bisonのファイル(.y)にC++コードを書いても生成できるようなのですが、
それらをリンクしてビルドするとエラーが出てしまいます。
それでけっこう時間費しちゃったのですが、
いろいろWebとか見てるうちにboost::spiritが使えることを知りました。

BoostはC++の有名な拡張テンプレートライブラリなのですが、とても強力です。
中身がどうなってんだかちょっとやそっとじゃ想像付かないような、
使い方で凄いことができちゃいます(なんのことやら…
ライブラリというよりは言語仕様を拡張している感じですね。
テンプレートと演算子のオーバーロードでそれを実現しているわけです。
だからboostを使えるようになるには、
普通のライブラリを使えるようになるエネルギーではなくて
新しい言語を使えるようになる程のエネルギーが必要になるのかもしれません。
まぁライブラリなんで必要なものだけ使えればそれでいいんですけどね。
で、boost::spiritとは何なのか。
これはbison+flexの代わりになるものです。
外部プログラムではなく、ライブラリで構文解析+字句解析を自動化しようという試みです。
そもそも私はflexやbisonの作りやプログラミングスタイルには
かなり不満があったのでこれらがC++プログラムの中で閉じて実現できることは
正に望んでいたソリューションであったわけです。

あ、もう15分過ぎました。
というわけでboost::spiritを学びながらちびちび進みます。
新しいことをやるのは楽しい!
ちなみにかなり前に買ったけどほとんど読んでいない
Boost C++ Libraryを参考書として利用しています。

コメント(3)

wiz :

まぁ分かってるとは思うが、書いちゃった以上は、続き(boost::spiritについて)を
書かなきゃね。ヨロ

acht :

プログラミング言語学習のプロジェクトも見てるんで、
そっちの更新も同時に期待していますw

まぁ書くつもりはありますが、
あんまり期待したいしない方が良いと思います。
書いても人様のお役に立てるようなものは出そうもないですから。
…て最初から期待なんかしてないよね。

About Me

このブログ記事について

このページは、yuchが2005年1月19日 23:50に書いたブログ記事です。

ひとつ前のブログ記事は「プログラミングのための線形代数」です。

次のブログ記事は「ソフトウェア開発におけるレアケース」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01