JJTree ノード生成の制御
JJTreeとは、「構文木を生成するためのコードを自動生成してくれるツール」らしい。
んだけど、正直JavaCCとどらへんが違うのかイマイチよくわからない。書き方もなんかほぼ一緒じゃん?とか思うし。
とりあえず、構文木が生成できるってのはちょっとお得感がある。
基本すっとばして、わかんなかったとこだけ書く。
Integer() ( <PLUS> Integer() #Add(2) | <MINUS> Integer() #Sub(2) ) *
は、整数の後に+演算子と整数か-演算子と整数が0回以上続く。(ようするにただの足し算引き算)なわけだが、
#Add(2)は、子ノードの数が2個になったら、ノードを生成する。みたいな設定っぽい。
例えば、
3+4なら、構文木は
Add Integer // 3 Integer // 4
みたいな感じになるし、
1-2+3なら、
Add Sub Integer // 1 Integer // 2 Integer // 3
みたいになる。(多分)
で、#Add(2)じゃなくて、#Add(1)とかにしちゃうと、
3+4が
Integer Add Integer
とかになっちゃう。(多分)