eclipseでANTLRを使うためのインストールメモとビルド

ANTLRとはパーサジェネレータです。

ANTLR - Wikipedia

yacc、bison、JavaCCの類のやつですね。
ANTLRはEBNFのような形式の文法ファイルから、
レキサー(スキャナー)とパーサーを生成します。


詳しくはWikipediaや後述するANTLR IDEのページを参照してください。


eclipseANTLRを利用するにはプラグインを導入すればよいですが、いくつか種類があります。
今回はANTLR IDEというのを入れます。
"新規ソフトウェアのインストール"でインストールするのですが、eclipse3.6のインストールもあわせてメモしておきます。

eclipse3.6 Helios ダウンロード

3.6はHeliosっていうらしいです。
Eclipse Downloads | The Eclipse Foundation
Eclipse IDE for Java Developersをダウンロードしましょう。
解凍するとeclipseというディレクトリが作成されます。

日本語化プラグイン ダウンロード

日本語化はEclipse 日本語化 | MergeDoc Project
"Pleiades 本体ダウンロード"から"安定版 1.3.2"をダウンロード。
中身をeclipseディレクトリへ。


eclipseディレクトリにあるeclipse.iniの最後に
-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
を追記します。
日本語化のプラグインを入れた直後は"eclipse.exe -clean.cmd"というファイルがあるのでダブルクリックしてeclipseを起動します。
それ以降はeclipse.exeを起動しても問題ないと思います。


Eclipse 日本語化 | MergeDoc Projectでは日本語化が済んだ状態のeclipseも配布されていますので、そちらを使用してもいいかもしれません。
"Eclipse 3.6 Helios Pleiades All in One"と書かれたボタンが上の方にあるのでそれをクリックし次のページの"Full All in One(JRE あり)"の"Java"のDownloadからダウンロードできます。(今回はこちらでは試していませんが多分一緒だと思います)

ANTLR IDE インストール

eclipseのヘルプの新規ソフトウェアのインストールで以下のアドレスを入力してインストールしてください。
http://antlrv3ide.sourceforge.net/updates

ANTLR ランタイム等 ダウンロード

Download ANTLRからComplete ANTLR 3.2 jar; all tools, runtime, etc...をクリックしantlr-3.2.jarをダウンロードしておきます。


さて、準備はこれくらい。
文法ファイルを用意しましょう。

Javaの文法ファイルをダウンロード

http://www.antlr.org/grammar/listからJava 1.5 grammar を落とします。(1.6はなんかうまくいかなかった)

プロジェクトの作成

適当にeclipseのプロジェクトを作成します。
先ほどダウンロードしたantlr-3.2.jarとJava.gをここに入れておきます。
右クリックしてメニューを出し、構成からConvert to ANTLR Project...でANTLRのプロジェクトへコンバートしましょう。

ビルド

eclipseJava.gをダブルクリックして開くとNo package definedというタイトルのダイアログが出るのではいを選択してください。
Installed Packagesの枠内の追加...を選択
ホームのディレクトリー...でantlr-3.2.jarのを置いたディレクトリを指定。OKします。


今回はC#でパーサを作成しようと思うので、Java.gを一部書き換えます。
optionsに以下の記述を加えます。

  language = CSharp;
  output = AST;
  ASTLabelType = CommonTree;

languageの指定はパーサを記述する言語です。
下の2つの指定は構文木を生成する指定です。


問題なくビルドできれば
Java.tokens[Java.g]
JavaLexer.cs[Java.g]
JavaParser.cs[Java.g]
これらが生成されていると思います。



次回、生成したパーサでソースコード構文解析します。
あくまで構文解析。意味解析をするわけでもましてコンパイルするわけでもありません。


続きを書きました