public Call(Expr callee, Token paren, List <Expr> arguments) { this.callee = callee; this.paren = paren; this.arguments = arguments; }
public Get(Expr obj, Token name) { this.obj = obj; this.name = name; }
public Assign(Token name, Expr value) { Name = name; Value = value; }
public Binary(Expr left, Token @operator, Expr right) { Left = left; Operator = @operator; Right = right; }
public Variable(Token name) { Name = name; }
public Unary(Token @operator, Expr right) { Operator = @operator; Right = right; }
public This(Token keyword) { this.keyword = keyword; }
public Set(Expr obj, Token name, Expr value) { this.obj = obj; this.name = name; this.value = value; }
public Logical(Expr left, Token op, Expr right) { this.left = left; this.op = op; this.right = right; }