diff --git a/sources/zweic/Printer.scala b/sources/zweic/Printer.scala index 6d68ab9..1a32f82 100755 --- a/sources/zweic/Printer.scala +++ b/sources/zweic/Printer.scala @@ -27,6 +27,15 @@ */ private var level = 0; + def joinprint(args:List[Tree], sep:String):Printer = args match { + case h :: Nil => + print(h); + case h :: t => + print(h).print(sep); + joinprint(t, sep); + case Nil => + print("---"); + } /** * Prints a tree node. */ @@ -59,9 +68,7 @@ case MethodDef(name, args, returntype, expression) => print(returntype).print(" ").print(name).print(" ("); - for (val a <- args) { - print(a).print(", "); - } + joinprint(args, ", "); print(") {").println; indent; print(expression).println; @@ -87,12 +94,13 @@ // Tree nodes for statements case While(cond, stats) => - print("while (").print(cond).print(") {").println; - indent; + print("while (").print(cond).print(") {"); + indent; println; for (val s <- stats) { print(s).println; } undent; + println; print("}"); case Var(varname, vartype, init) => @@ -118,9 +126,7 @@ case New(name, args) => print("new ").print(name).print("("); - for (val a <- args) { - print(a).print(","); - } + joinprint(args, ", "); print(")"); case Select(prefix, selector) => @@ -128,9 +134,7 @@ case Call(obj, funcname, args) => print(obj).print(".").print(funcname).print("("); - for (val a <- args) { - print(a).print(","); - } + joinprint(args, ", ") print(")"); case NullLit() =>