*目次 [#m3639e2d] #contents *趣旨 [#sc0ae109] ANATLRについて学んだことをまとめてみる。 サンプルコードをもとに、使い方を逆引き的にまとめる 休日にちょこっとやってみてるだけなので、飽きたらやめる *インストール [#s9fb2dcf] **ダウンロード [#se5b5826] ***URL [#p8e605ab] http://www.antlr.org/download.html ***ダウンロード対象ファイル [#gdc6c98e] ANTLRWorks+ANTLR ANTLR v3 *日本語のチュートリアル的サイト [#t1578c8e] http://d.hatena.ne.jp/inabatch/20080123/1201099466 *拡張子 [#o8bd9085] 拡張子は.g *サンプルコード [#hd6a2adf] ファイル名がT1だとすると、 grammar T1; と記入しなくてはならない。 *パターンマッチの書き方 [#laae5c33] **末尾は;で終了させる。 [#b1e181a2] **正規表現と違うのは、パターンマッチを変数として扱うことができる [#j273372b] **単純な文字列はシングルクォートで括ることができる。 [#s07ef55a] *マッチした文字列を出力するには [#vf9bd121] $変数名.textで置き換えることができる。 *無視したい文字列の場合には [#pc5271fb] {$channel=HIDDEN;} **例 [#afb7fd3f] grammar T1; r : 'call' ID ';' {System.out.println("invoke "+$ID.text);}; ID : 'a'..'z'+; WS : (' '|'\n'|'\r')+ {$channel=HIDDEN;}; *参考書籍 [#h64cf61c] The Definitive ANTLR Reference ISBN-10 0-9787392-5-6 ISBN-13 978-0-9787392-5-6 *MACの日本語環境構築 [#ca9b5cfc] MacOS XのTerminalの標準文字コードはUTF-8。さらに、OSのフォルダなどの名前に使われているのもUTF-8。 そのため、通常のアプリケーション等は、MacOS9の頃のJISコードを使うので、Javacを使うと、Terminalで利用中は、文字化けをする。 そこで、javacをする際に、"-J-Dfile.encoding=UTF8"のオプションを付けてあげれば、問題は解決。 毎回付けるのが面倒だと言う方は、aliasに alias javac="javac -J-Dfile.encoding=UTF8" を追加しておく。 **NKFを導入する [#j69dec8e] このさいだから文字コード変換用に入れておく。 いれなくてもよい。 ***Homepage [#ifb3b9d2] http://nkf.sourceforge.jp/ ***Source [#i952a352] https://sourceforge.jp/projects/nkf/ ***インストール手順 [#i617943f] 参考 http://blog.marimo-net.org/item/614 $make $make perl $sudo mkdir /usr/local/bin $sudo cp nkf /usr/local/bin $cd NKF.mod $perl Makefile.PL $make $make test $sudo make install