cxxgrassは、プログラミング言語Grassのコンパイラです。C++で書かれており、出力として標準Cのコードを生成します。
インライン化などの気の効いた最適化は一切行いませんが、素朴なコンパイラとして最低限効率的なコードを生成するはずです。Cで書かれた単純なコピーGCが付属しています。
コード生成器の設計が悪く、ソースコードは非常に読みにくいです。あまりにもひどい構造なので書き直しを試みましたが、途中で飽きたので、もとのまま公開します。関数型言語のコンパイラの仕組みに興味がある人はもっとまともなものを読んでください。学習用の小規模なコンパイラならMinCamlがお勧めです。
コンパイラ自体のソースコードはsrcディレクトリに入っています。Makefileなどはないので適当にコンパイルしてください。
コンパイラは、標準入力からGrassコードを受け取り、標準出力にCコードを書き出します。生成されたCコードをコンパイルするにはruntime/cxgr_common.hが必要です。さらに、実行ファイルを生成するにはランタイムであるruntime/cxgr_rts.cとリンクする必要があります。runtime/cxgr_rts.c自体のコンパイルにもruntime/cxgr_common.hが必要です。
バグ報告、パッチ、質問、提案などありましたら、掲示板に書くか、m@kotha.netまでメールを下さい。