bambooflow Note

インストール

最終更新:

bambooflow

- view
メンバー限定 登録/ログイン

ANTLR v3 インストール


ここでは、ANTLRv3のインストール方法をメモします。

用意するもの

今回、バージョンをv3.1.3をインストールすることにしました。

  • ANTLRv3の本体
    • antlr-3.1.3.jar
  • ANTLRv3のCランタイム
    • libantlr3c-3.1.3.tar.gz

  • 場所
http://www.antlr.org/download.html
ちなみに、v3ではインストーラがちゃんと用意されていないのでいろいろ手作業でするところがあります。

使うための準備(インストール)

ここでは、"/usr/local/antlr"ディレクトリを作成して、そこに入れることにしました。

  • わたしのインストール構成
/usr/local/antlr
|-- bin
|   `-- antlr              # ANTLRを実行するスクリプト(手で記述)
|-- include
|   `-- *.h                # Cランタイム用のヘッダファイル群
|-- lib
|   |-- libantlr3c.a       # Cランタイム
|   `-- libantlr3c.la
`-- share
    `-- antlr-3.1.3.jar    # ANTLR本体 (手でここに移動)


Cランタイム準備


% tar xzf libantlr3c-3.1.3.tar.gz
% cd libantlr3c-3.1.3
% ./configure --prefix=/usr/local/antlr  --enable-shared=no
オプション--enable-shaed=noとしたのは、.soの共有ライブラリを作りたくなかったからです。
.so共有ライブラリを作成する場合は、LD_LIBRARY_PATHの設定が別途必要になると思います。

% make
# make install

これで、以下の場所に必要なファイルができると思います。
/usr/local/antlr/lib/libantlr3c.a
/usr/local/antlr/include/*.h


ANTLR本体準備

本体は、antlr-3.1.3.jarになります。
単に実行する場合は、CLASSPATHを設定した後に
java org.antlr.Tool
で実行できます。
ただ、わたしは面倒臭がりなので、Cランタイムと同じ場所において、スクリプト実行としました。

# mkdir /usr/local/antlr/shared
# cp antlr-3.1.3.jar /usr/local/antlr/shared

スクリプトは、/usr/local/antlr/bin/ の場所に下記のようなantlrファイル名で準備。
#!/bin/sh

# usual dribble
prefix="/usr/local/antlr"
exec_prefix="${prefix}"
 
ANTLR_JAR="${exec_prefix}/share/antlr-3.1.3.jar"
 
if test "x$CLASSPATH" = x; then
        CLASSPATH="${ANTLR_JAR}"
else
        CLASSPATH="${ANTLR_JAR}:${CLASSPATH}"
fi
export CLASSPATH
/usr/bin/java org.antlr.Tool $*
 


動作確認


  • てきとうなサンプル
SimpleCalc.g
% /usr/local/antlr/bin/antlr SimpleCalc.g
% g++ -c -I/usr/local/antlr/include SimpleCalcLexer.c
% g++ -c -I/usr/local/antlr/include SimpleCalcParser.c
% g++ -o SimpleCalc SimpleCalcLexer.o SimpleCalcParser.o -L/usr/local/antlr/lib -lantlr3c

  • test.txt
1+2+3

% ./SimpleCalc test.txt
これで、何も返事がかえってこなければOK.


参考

http://www.antlr.org/wiki/display/ANTLR3/Five+minute+introduction+to+ANTLR+3
以上
添付ファイル
記事メニュー
ウィキ募集バナー