diff --git a/sources/zweic/Printer.scala b/sources/zweic/Printer.scala index f76db90..3425ead 100755 --- a/sources/zweic/Printer.scala +++ b/sources/zweic/Printer.scala @@ -27,24 +27,19 @@ */ private var level = 0; - def joinprint(args:List[Tree], sep: String):Printer = args match { + def joinprint(args:List[Tree], sep: => Printer):Printer = args match { case h :: Nil => print(h); case h :: t => - print(h).print(sep); - joinprint(t, sep); + print(h); + sep; + joinprint(t, sep); case Nil => print(""); } - def joinprint(args:List[Tree]):Printer = args match { - case h :: Nil => - print(h); - case h :: t => - print(h).println; - joinprint(t); - case Nil => - print(""); + def joinprint(args:List[Tree], sep:String):Printer = { + joinprint(args, print(sep)); } /** @@ -56,9 +51,7 @@ tree match { case Program(decls, main) => - for (val d <- decls) { - print(d).println; - } + joinprint(decls, println).println; print(main).println; // @@ -72,7 +65,7 @@ case _ => null; } print(" {").indent.println; - joinprint(members); + joinprint(members, println.println); undent.println.print("}").println; case FieldDecl(formal) => @@ -105,7 +98,7 @@ case While(cond, stats) => print("while (").print(cond).print(") {"); - indent.println.joinprint(stats).undent.println.print("}"); + indent.println.joinprint(stats, println).undent.println.print("}"); case Var(varname, vartype, init) => print(vartype).print(" ").print(varname).print(" = ").