public SDiv(SExpr lhs, SExpr rhs) : base(lhs, rhs) { }
public SEq(SExpr lhs, SExpr rhs) : base(lhs, rhs) { }
public SSub(SExpr lhs, SExpr rhs) : base(lhs, rhs) { }
public SMul(SExpr lhs, SExpr rhs) : base(lhs, rhs) { }
public SBinop(SExpr lhs, SExpr rhs) { Lhs = lhs; }
public SAdd(SExpr lhs, SExpr rhs) : base(lhs, rhs) { }
public SPrint(SExpr body) { Body = body; }
public SIf(SExpr cond_expr, SExpr then_expr, SExpr else_expr) { CondExpr = cond_expr; ThenExpr = then_expr; ElseExpr = else_expr; }
public SRec(string var_name, SExpr e1, SExpr e2) { VarName = var_name; E1 = e1; E2 = e2; }
public SApp(SExpr func_expr, SExpr arg_expr) { FuncExpr = func_expr; ArgExpr = arg_expr; }
public SFunc(string argname, SExpr body) { ArgName = argname; Body = body; }