antlr 3.0

by syoyo

antlr が 3.0 になっていつの間にかすごそーな感じになっている。

http://antlr.org/

ANTLRWorks というパーサビルダができているし、
C コード!を出力できるようになっているようです。
AST も勝手に作ってくれるみたい。

ここ最近、bison でちくちくと RenderMan SL の AST を書いているのですが、

http://lucille.atso-net.jp/svn/proj/lucille/branches/RB-0.2/src/sl/

なんか antlr 使えばそんなことする必要がなくなりそう。

シェーダコンパイラは、bison/flex でなくて antlr に変えることを考えることにします。

ちなみに、antlr(parser) + ruby(backend, optimizer) という組み合わせで RenderMan SL を
RPU(ray processing unit) アセンブラに変換するコンパイラを作ったひとがいます。

http://taw.chaosforge.org/rpu/

コンパイラ屋にとっては当たり前のことかもしれませんが、ソースも公開されていて、
私のようなコンパイラ初学者には勉強になります。

ここの antlr grammer を利用して、あとは AST から LLVM コードを吐く walker を書けば
RSL -> LLVM トランスレータが完成できそう。

antlr + LLVM の組み合わせでコンパイラ + 実行環境作成が、(性能、手抜きの両方の面で)最強か?…

Advertisements