diff options
| author | Marc Vertes <mvertes@free.fr> | 2025-11-27 12:40:35 +0100 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2025-11-27 12:40:35 +0100 |
| commit | d99d69391eeae129cad2d5c2c90ce700db01b11c (patch) | |
| tree | 0286d21e88919b9a9f86081d057b065c19f8ec38 /parser/interpreter.go | |
| parent | aed20c1c453e50f716c454c0bd7e4995a0f5d898 (diff) | |
chore: move compiler and interpreter in their own packages
Diffstat (limited to 'parser/interpreter.go')
| -rw-r--r-- | parser/interpreter.go | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/parser/interpreter.go b/parser/interpreter.go index 6f354d9..06a4bc1 100644 --- a/parser/interpreter.go +++ b/parser/interpreter.go @@ -1,8 +1,9 @@ -package parser +package interpreter import ( "reflect" + "github.com/mvertes/parscan/compiler" "github.com/mvertes/parscan/scanner" "github.com/mvertes/parscan/vm" ) @@ -11,13 +12,13 @@ const debug = true // Interpreter represents the state of an interpreter. type Interpreter struct { - *Compiler + *compiler.Compiler *vm.Machine } // NewInterpreter returns a new interpreter state. func NewInterpreter(s *scanner.Scanner) *Interpreter { - return &Interpreter{NewCompiler(s), &vm.Machine{}} + return &Interpreter{compiler.NewCompiler(s), &vm.Machine{}} } // Eval interprets a src program and return the last produced value if any, or an error. @@ -39,8 +40,8 @@ func (i *Interpreter) Eval(src string) (res reflect.Value, err error) { } i.Push(i.Data[dataOffset:]...) i.PushCode(i.Code[codeOffset:]...) - if s, ok := i.symbols["main"]; ok { - i.PushCode(vm.Instruction{Op: vm.Calli, Arg: []int{int(i.Data[s.index].Data.Int())}}) + if s, ok := i.Symbols["main"]; ok { + i.PushCode(vm.Instruction{Op: vm.Calli, Arg: []int{int(i.Data[s.Index].Data.Int())}}) } i.PushCode(vm.Instruction{Op: vm.Exit}) i.SetIP(max(codeOffset, i.Entry)) |
