class Operator { private char _op; public Operator (char c) { _op = c; } } abstract class Expression {} // Expression = Value + Variable + Binary class Value extends Expression { // Value = int int intValue; } class Variable extends Expression { // Variable = String String name; } class Binary extends Expression { //@{}@XPCL{Binary = Expression @Sym {multiply} Operator @Sym {multiply} Expression} Operator op; Expression term1, term2; }