AST-Typ deklarieren (wie Grammatik)
Abstract Syntax Tree exp = { plus } [left]:exp [right]:exp | { times } [left]:exp [right]:exp | { number } number ;
und Übersetzungen für jeder Regel
Productions expression { -> exp } = sum { -> sum.exp } ; sum { -> exp } = { simple } product { -> product.exp } | { complex } sum plus product { -> New exp.plus (sum.exp, product.exp) } ;links Typ, rechts Kopie oder Konstruktion (new)
Das ist Attributgrammatik
(jeder Knoten des CST bekommt als Wert eine Knoten des AST)