« AISASはうそ? | メイン | 新規開店 »

JavaCC、楽しい

XMLテンプレートエンジンを作成するにあたり、JSTL互換の式言語を組み込みたかったので、Apache Jakarta TaglibのJSTL実装を参照しながら作ってみた。で、面白い。JavaCCは初体験だったのですが、言語を自分で作れてしまう。ちゃんと動いたら、なんだか異様に感動できた。
と、この喜びを伝えて、理解してくれる人が周りに余りいないので、BLOGで発散。

これだけでは、なんなので。
JavaCC(Java Compiler Compiler)は、Javaの言語パーサー生成の仕組み。コンパイラーのコンパイラーという名称からも分かるように、プログラミング言語、スクリプト、あるいはコマンドラインを、パースするためのフレームワークというところだろうか。実際、Javaのコンパイラーも、JavaCCを使って作成されている。Javaの言語仕様に照らし合わせて、Javaファイルを読み込みながら、実行バイナリに組み立てるわけだ。

なお、JSTLの場合は、評価式や値の取得だけ目的なので、JavaCCの上に、ちょっとしたフレームワークを載せている。Jakarta CommonsにELがあるけど、そちらはJSTLのパーサ部分だけを抜き出したものだ。若干、JSPの仕様にひきずられるが、ちょっと修正すればJSPに依存しないところでも使えるので、既存のフレームワークにも導入できるだろう。ていうか、EL自身は、javax.servlet配下に作らなくても良かったのではという疑問も浮上する。ま、JDK1.4以降なら、そもそも含まれているからそれほど気にならないとは思うけど。

トラックバック

このエントリーのトラックバックURL:
http://www.arclamp.jp/mt33/mt-tracback.cgi/1372

コメント (2)

yhojo:

Parser Generatorなら
http://www.cs.princeton.edu/~appel/modern/java/
にあるCUP+JFlexが使いやすかったです。
あと、SableCCとANTLRも流行モノですが、忙しくて見れていないんです。
http://sablecc.org/
http://www.antlr.org/
面白そうですよ。

yusukdeです。yhojoさん、コメントありがとうございます。そう、Parser Generatoも、いろいろ種類があるんですよね。ANTLRは、Struts2.0のValidatorにおけるValidWhenで使われているので、ちょっと見たことあります。そのときはよく分からなかったので、パスしてしまったのですが。勉強してみます。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2004年12月17日 14:38に投稿されたエントリーのページです。

ひとつ前の投稿は「AISASはうそ?」です。

次の投稿は「新規開店」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type