Advertisement
Guest User

Untitled

a guest
Jul 19th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 0.95 KB | None | 0 0
  1. absctract class Expression
  2. case class VarExpr(varName:String) extends Expression
  3. case class IntExpr(value:Int) extends Expression
  4. case class PlusExpr(e1:Expression, e2:Expression) extends Expression
  5. case class MultExpr(e1:Expression, e2:Expression) extends Expression
  6.  
  7. object Expr {
  8.     def main(args:Array[String]):Unit = {
  9.         val myExpr = PlusExpr(IntExpr(7), PlusExpr(IntExpr(2), MultExpr(VarExpr("x"), IntExpr(3))))
  10.        
  11.         println(asString(myExpr))
  12.         println(eval(myExpr))
  13.     }
  14.    
  15.     def eval(e:Expression):Int = e match{
  16.         case v:VarExpr => 15 // jede variable = 15 (statischer wert atm)
  17.         case i:IntExpr => i.value
  18.         case p:PlusExpr => eval(p.e1) + eval(p.e2)
  19.         case p:MultExpr => eval(p.e1) * eval(p.e2)
  20.     }
  21.     def asString(e:Expression):String = e match{
  22.         case v:VarExpr => v.varName
  23.         case i:IntExpr => i.value
  24.         case p:PlusExpr => "( " + asString(p.e1) + " + " + asString(p.e2) + " )"
  25.         case p:MultExpr => asString(p.e1) + " * " + asString(p.e2)
  26.     }
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement