diff --git a/sources/zweic/Tree.scala b/sources/zweic/Tree.scala index b6a6b52..90e1d92 100755 --- a/sources/zweic/Tree.scala +++ b/sources/zweic/Tree.scala @@ -30,75 +30,49 @@ //############################################################################ // Tree node representing a complete program -/** - * P = Program { D } E - */ +/* P = Program { D } E */ case class Program(classes: List[ClassDef], main: Expr) extends Tree; //############################################################################ // Tree nodes for definitions -/** - * A common superclass for all definitions - */ +/* A common superclass for all definitions */ abstract class Def extends Tree; -/** - * D = ClassDef name [ name ] { M } - */ -case class ClassDef( -// ... � compl�ter ... - ) +/* D = ClassDef name [ name ] { M } */ +case class ClassDef(name: Name, extend: Option[Name], members: List [Member]) extends Def; - -/** - * A common superclass for member definitions - */ +/* A common superclass for member definitions */ abstract class Member extends Def; -/** - * M = FieldDecl name T - */ -case class FieldDecl( -// ... � compl�ter ... - ) - extends Member; +/* M = FieldDecl name T */ +case class FieldDecl(name: Name, typ: TypeTree) extends Member; - -/** - * D = MethodDecl name { name T } T E - */ -case class MethodDef( -// ... � compl�ter ... - ) - extends Member -{ +/* D = MethodDecl name { F } T E */ +case class MethodDef(name: Name, args: List[Formal], + returntype: TypeTree, expression: Expr) + extends Member { val self: Name = Name("this"); } +/* F = Formal name T */ +case class Formal(name: Name, typ: TypeTree) extends Tree; + //############################################################################ // Tree nodes for types -/** - * A common superclass for tree nodes designating types - */ +/* A common superclass for tree nodes designating types */ abstract class TypeTree extends Tree; -/** - * T = Int - */ +/* T = Int */ case class IntType extends TypeTree; -/** - * T = Null - */ +/* T = Null / case class NullType extends TypeTree; -/** - * T = ClassType name - */ +/* T = ClassType name */ case class ClassType(name: Name) extends TypeTree; //############################################################################ @@ -155,6 +129,5 @@ */ case class Unop(op: Operator, expr: Expr) extends Expr; -// ... � compl�ter ... //############################################################################