diff --git a/sources/zweic/Parser.scala b/sources/zweic/Parser.scala index 1c4a500..a7ff858 100755 --- a/sources/zweic/Parser.scala +++ b/sources/zweic/Parser.scala @@ -13,7 +13,6 @@ class Parser(in: java.io.InputStream) extends Scanner(in) { import Tokens._; - import Tree._; var pushedBack: Option[Triple[Int,String,Token]] = None; @@ -54,7 +53,7 @@ private def check(expected: Token): Boolean = { if (token == expected) { nextToken; - true + true; } else { false; } @@ -175,7 +174,7 @@ private def block(): Block = { accept (LACCOLADE); var s:List[Stat] = Nil; - var e:Expr = null; + var e:Expr = NullLit(); //CHAOS while (token != RETURN && token != RACCOLADE) { s = statement() :: s; } @@ -291,8 +290,7 @@ } return If(cond, stata, statb); } else { - cmpExpression(); - return null; + return cmpExpression(); } } @@ -355,16 +353,8 @@ return left; } - - def string2List(s: String): List[Char] = - if (s.length() == 0) - Nil - else - s.charAt(0) :: string2List(s.substring(1)); - private def _string(str: String): New = { - string2List(chars).toList.foldRight(New(Name("Nil"), Nil))((x, xs) => - New(Name("Cons"), IntLit(x.asInstanceOf[Int])::List(xs))) + return New(Name("temp"), Nil); } /** @@ -374,8 +364,8 @@ var name = chars; var rval:Expr = null; token match { - case IDENT => nextToken; rval = Ident(Name(chars)); - case NUMBER => nextToken; rval = IntLit(Integer.parseInt(chars)); + case IDENT => nextToken; rval = Ident(Name(name)); + case NUMBER => nextToken; rval = IntLit(Integer.parseInt(name)); case STRING => nextToken; rval = _string(name); case TRUE => nextToken; rval = IntLit(1); case FALSE => nextToken; rval = IntLit(0); diff --git a/sources/zweic/Printer.scala b/sources/zweic/Printer.scala index 152b966..8faeb06 100755 --- a/sources/zweic/Printer.scala +++ b/sources/zweic/Printer.scala @@ -34,10 +34,15 @@ case Program(decls, main) => for (val d <- decls) print(d).println; - print(main).println - // ... � compl�ter ... + print(main).println + case Select(prefix, selector) => print(prefix).print(".").print(selector) + + case ClassDef(name, extend, members) => + print("testtest") + + case _ => this } /**