コンパイラ〜つく〜ろ〜♪2番 JavaCCの導入

前回記事pokotyamu.hatenablog.com

今回は
「トークンの作成」に関する内容として
JavaCCについて、導入をしつつまとめていきます。

JavaCCとは

Javaベースのコンパイラコンパイラのこと。
コンパイラコンパイラとは、構文解析ルーチン字句解析ルーチンを作成するツールのこと。
つまり、コンパイラを作るために使うツールですね。

これらのルーチンを作成するツールとして有名なのが
yacc」や「lex」ですが、こちらを採用しなかったのは
生成するコードがJavaコードなので、C言語を混ぜずに進めるためという理由です。
拡張性とか考えたらyaccを使うほうがいいのかな?
その部分は自分の理解が足りていません。

今回から追加された、参考書籍はこちら

JavaCC―コンパイラ・コンパイラfor Java

JavaCC―コンパイラ・コンパイラfor Java

1.Macへの導入手順

導入に際して、こちらを参考にさせていただきました。qiita.com

JavaCCを管理しているサイトから直接ダウンロード可能です。
JavaCC Home

ダウンロード・展開が終了したら、以下コマンドを実行していきます。

$ cd Downloads/javacc-6.0
$ cp bin/lib/javacc.jar /usr/local/javacc/lib
$ sudo mkdir /usr/local/javacc/bin
$ sudo touch /usr/local/javacc/bin/javacc
$ sudo chmod u+x /usr/local/javacc/bin/javacc
$ ln -s /usr/local/javacc/bin/javacc /usr/local/bin/javacc

シェルにパスを追加
.zshrc

export PATH="/usr/local/javacc/bin/javacc” #追加

最後にスクリプトファイルの中身を追加して終了です。
/usr/local/bin/javacc

cmd_path="$(readlink -n $0)"
javacc_root="$(dirname "$(dirname "$cmd_path")")"

CLASSPATH="$javacc_root/lib/javacc.jar"
export CLASSPATH

java javacc "$@"

2.開発環境の構築のために

私のJava関係の開発環境は、主にNetbeansもしくは、Emacsを使っているので
それぞれの開発環境を整えていきます。
まずは、NetBeansJavaCCプラグインplugins.netbeans.org

そして、Emacsjavacc-modeを入れたGitHubのコミットを載せておきます。github.com

以上で、JavaCCの開発環境が整いましたが、
次回はJavaCCでコードを書かずに、
今回読み込ませるコードをBNF記法で定義していく作業を行っていきたいと思います。