- 追加された行はこの色です。
- 削除された行はこの色です。
ANTLRの実際にやってみる。
つれづれなるままにANTLRをやる。
もう、インストール済みなので、
立ち上げると,[Grammar Name:]を聞かれる。
あ、何するかきめてなかった。
なにか目標をたてよう。
そうだ、
入力:
y == x
y == x
出力
strcmp(x,y)
strcmp(x,y)
これていいや、文法名はLesson01とかでいいかな、
Lexical Itemsでチェックボックスを入れることができる。
Identifierは、たぶん、識別子だから、イコールとか使えるようになるのかな?
変数は、Characterかな?、不要なスペースもキャンセルしたいから、White spaceにもチェックを入れておけばいいのかな。
とりあえず、仮説をたててやってみる。
とりあえず、仮説をたててやってみると、いいかもね。
すると、デフォルトでコードがいくつか作られている。
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
;
WS : ( ' '
| '\t'
| '\r'
| '\n'
) {$channel=HIDDEN;}
;
CHAR: '\'' ( ESC_SEQ | ~('\''|'\\') ) '\''
;
fragment
HEX_DIGIT : ('0'..'9'|'a'..'f'|'A'..'F') ;
fragment
ESC_SEQ
: '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
| UNICODE_ESC
| OCTAL_ESC
;
fragment
OCTAL_ESC
: '\\' ('0'..'3') ('0'..'7') ('0'..'7')
| '\\' ('0'..'7') ('0'..'7')
| '\\' ('0'..'7')
;
fragment
UNICODE_ESC
: '\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
;
たしかに、初めて利用する場合、このように、よくある選択肢を選ぶようになっているのは、ありがたい。
とりあえず、デバックボタンを押してみる。
ありゃ、エラー
[10:46:05] java.lang.NullPointerException
at org.antlr.xjlib.foundation.XJUtils.concatPath(XJUtils.java:43)
at org.antlr.xjlib.foundation.XJUtils.concatPath(XJUtils.java:54)
対策がネットに載っていた、コンパイラーが通っていないかららしい。
You can fix this by going to File > Preferences > Compiler and entering the path for the executable.
って書いてあったが、Macの場合は[ANTLRWorks]-[環境設定]-[Preferrences]
でたどれた。
コンソールにて
which java
で、どこにインストールされているか調べてみた。
/usr/bin/java
ってでてきた。
それを入れれば、動いたけれども、なんだかうまく動かない。