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

とかになっちゃう。(多分)