| |
---|
| | * A common superclass for expressions |
---|
| | */ |
---|
| | abstract class Expr extends Tree; |
---|
| | |
---|
| | // ... à compléter ... |
---|
| | /* E = Ident name */ |
---|
| | case class Ident(name: Name) extends Expr; |
---|
| | |
---|
| | /** |
---|
| | * E = Unop O E |
---|
| | */ |
---|
| | /* E = New name { E } */ |
---|
| | case class New(name: Name, args: List[Expr]) extends Expr; |
---|
| | |
---|
| | /* E = Select E name */ |
---|
| | case class Select(varname: Expr, name: Name) extends Expr; |
---|
| | |
---|
| | /* E = Call E name { E } */ |
---|
| | case class Call(func: Expr, name: Name, args: List[Expr]) extends Expr; |
---|
| | |
---|
| | /* E = Unop O E */ |
---|
| | case class Unop(op: Operator, expr: Expr) extends Expr; |
---|
| | |
---|
| | /* E = Binop O E E */ |
---|
| | case class Binop(op: Operator, left: Expr, right: Expr) extends Expr; |
---|
| | |
---|
| | /* E = ReadInt */ |
---|
| | case class ReadInt extends Expr; |
---|
| | |
---|
| | /* E = ReadChar */ |
---|
| | case class ReadChar extends Expr; |
---|
| | |
---|
| | /* E = If E E E */ |
---|
| | case class If(cond: Expr, stata: Expr, statb: Expr) extends Expr; |
---|
| | |
---|
| | /* E = Block { S } E */ |
---|
| | case class Block(stats: List[Stat], expression: Expr) extends Expr; |
---|
| | |
---|
| | |
---|
| | //############################################################################ |
---|
| | |
---|
| | |