SmaCCメモ(4)
{}で括った部分は、パージングで構文にマッチしたときに実行されるSmalltalkコードだ。''でくくった番号がパーズノードに対応する。トークンにマッチした場合はノードにはSmaCCTokenが格納されていて#valueメソッドでトークン文字列が得られる。
Expression : Expression "+" Number {'1' + '3'} | Number {'1'} ; Number :{'1' value asNumber} ;
named expressionsを使うと上記のような数字ではなくSmalltalk変数として扱える。
Expression : Expression 'expression' "+" Number 'number' {expression + number} | Number 'number' {number} ; Number :'numberToken' {numberToken value asNumber} ;
次の5つのディレクティブがある。詳細は後で調べる。
%nonassoc %left %right %start %id