diff options
| author | Marc Vertes <mvertes@free.fr> | 2023-10-12 17:08:24 +0200 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2023-10-12 17:08:24 +0200 |
| commit | 323d82a7f235f78d56e26677c7ba54470caea08e (patch) | |
| tree | 1953952fb932d1338eaf84c3d58965e72e1b83a9 /parser/compiler.go | |
| parent | 37b9da32d3b911091deb254f6cba2a137c471287 (diff) | |
parser: implement 'for' statement
Diffstat (limited to 'parser/compiler.go')
| -rw-r--r-- | parser/compiler.go | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/parser/compiler.go b/parser/compiler.go index 5b0ed81..68f0596 100644 --- a/parser/compiler.go +++ b/parser/compiler.go @@ -147,6 +147,7 @@ func (c *Compiler) Codegen(tokens Tokens) (err error) { ld := len(c.Data) c.Data = append(c.Data, lc) c.addSym(ld, t.Str, lc, symLabel, nil, false) + //c.symbols[t.Str] = &symbol{kind: symLabel, value: lc} } case lang.JumpFalse: @@ -157,7 +158,7 @@ func (c *Compiler) Codegen(tokens Tokens) (err error) { t.Beg = len(c.Code) fixList = append(fixList, t) } else { - i = s.value.(int) + i = s.value.(int) - len(c.Code) } c.Emit(int64(t.Pos), vm.JumpFalse, int64(i)) @@ -168,7 +169,7 @@ func (c *Compiler) Codegen(tokens Tokens) (err error) { t.Beg = len(c.Code) fixList = append(fixList, t) } else { - i = s.value.(int) + i = s.value.(int) - len(c.Code) } c.Emit(int64(t.Pos), vm.Jump, int64(i)) @@ -191,7 +192,7 @@ func (c *Compiler) Codegen(tokens Tokens) (err error) { } s, _, ok := c.getSym(label, "") if !ok { - return fmt.Errorf("label not found: %v", label) + return fmt.Errorf("label not found: %q", label) } c.Code[t.Beg][2] = int64(s.value.(int) - t.Beg) |
