abstract class Expr { def eval: Int def printExpr } class Number(n: Int) extends Expr { def eval: Int = n def printExpr { print(n) } } class Sum(e1: Expr, e2: Expr) extends Expr { def eval: Int = e1.eval + e2.eval def printExpr { print("(") ; e1.printExpr ; print("+") ; e2.printExpr ; print(")") } } class Prod(e1: Expr, e2: Expr) extends Expr { def eval: Int = e1.eval * e2.eval def printExpr { print("(") ; e1.printExpr ; print("*") ; e2.printExpr ; print(")") } }