From 378683d25bdae89fa446b2b82f8dda5d6b34ea33 Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Thu, 14 Mar 2024 14:37:32 +0100 Subject: feat: initial support of closures Also detection and automatic execution of main function. Make sure that all debug is output to stderr. --- parser/compiler.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'parser/compiler.go') diff --git a/parser/compiler.go b/parser/compiler.go index 82228ed..886da9b 100644 --- a/parser/compiler.go +++ b/parser/compiler.go @@ -3,6 +3,7 @@ package parser import ( "fmt" "log" + "os" "strconv" "github.com/mvertes/parscan/lang" @@ -313,10 +314,10 @@ func (c *Compiler) PrintCode() { } } - fmt.Println("# Code:") + fmt.Fprintln(os.Stderr, "# Code:") for i, l := range c.Code { for _, label := range labels[i] { - fmt.Println(label + ":") + fmt.Fprintln(os.Stderr, label+":") } extra := "" switch l[1] { @@ -329,13 +330,13 @@ func (c *Compiler) PrintCode() { extra = "// " + d } } - fmt.Printf("%4d %-14v %v\n", i, vm.CodeString(l), extra) + fmt.Fprintf(os.Stderr, "%4d %-14v %v\n", i, vm.CodeString(l), extra) } for _, label := range labels[len(c.Code)] { - fmt.Println(label + ":") + fmt.Fprintln(os.Stderr, label+":") } - fmt.Println("# End code") + fmt.Fprintln(os.Stderr, "# End code") } type entry struct { @@ -351,9 +352,9 @@ func (c *Compiler) PrintData() { } dict[sym.index] = entry{name, sym} } - fmt.Println("# Data:") + fmt.Fprintln(os.Stderr, "# Data:") for i, d := range c.Data { - fmt.Printf("%4d %T %v %v\n", i, d.Data.Interface(), d.Data, dict[i]) + fmt.Fprintf(os.Stderr, "%4d %T %v %v\n", i, d.Data.Interface(), d.Data, dict[i]) } } -- cgit v1.2.3