diff options
| author | Marc Vertes <mvertes@free.fr> | 2024-03-14 14:37:32 +0100 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2024-03-14 14:37:32 +0100 |
| commit | 378683d25bdae89fa446b2b82f8dda5d6b34ea33 (patch) | |
| tree | cbf624e4eb38fafe51a12a718b48f43192cfcfac /parser/compiler.go | |
| parent | 60170bad25f912e0ba44e4c0095b54f6e26e307e (diff) | |
feat: initial support of closures
Also detection and automatic execution of main function.
Make sure that all debug is output to stderr.
Diffstat (limited to 'parser/compiler.go')
| -rw-r--r-- | parser/compiler.go | 15 |
1 files changed, 8 insertions, 7 deletions
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]) } } |
