構文木を作る その1

VMware上でテストしていると、Hamigaki.ArchiversとHamigaki.Bjamのビルドがキツいです。
特にCygwinテスト用に使っているWindows2000だと仮想メモリの割り当てを増やすよう警告が出ます。
CPUファンの音も煩くて困るので、コードを見直すことにしました。


Hamigaki.ArchiversはHamigaki.Binaryの利用箇所を減らすか、一部の特殊化をBoost.Waveのようにセパレートビルドするか、ぐらいでしょう。
Hamigaki.Bjamのコンパイルが重い理由は明確で、Spiritの文法が複雑すぎるだけです。
セマンティックアクションのみでインタプリタを構成していることから、文法は冗長になりがちです。
その上、ループ内をその都度パースするため、実行もとんでもなく遅いです。
現状ではビルドも実行も遅く機能的にも役に立たないので、次はHamigaki.Bjamを構文木を使う形に直していきたいと思います。
十分高速に動くようであれば、ビルドフェーズまで実装したいですね。