diff options
| author | Marc Vertes <mvertes@free.fr> | 2023-08-24 17:16:39 +0200 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2023-08-24 17:16:39 +0200 |
| commit | 9fdef50606a2942389189cd61397e17c0a0ccfd7 (patch) | |
| tree | e89a4aa3a61a6ab41abb4b6533ec9a2d9d7e2ce9 /cmd | |
| parent | ec8eb9defc7cd68fcd3afa0058773bcbc33ecd63 (diff) | |
codegen: add Interpreter struct
This makes the code easier to use.
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/gint/main.go | 26 |
1 files changed, 3 insertions, 23 deletions
diff --git a/cmd/gint/main.go b/cmd/gint/main.go index 85fdba0..15a79b0 100644 --- a/cmd/gint/main.go +++ b/cmd/gint/main.go @@ -7,9 +7,7 @@ import ( "github.com/gnolang/parscan/codegen" "github.com/gnolang/parscan/lang/golang" - "github.com/gnolang/parscan/parser" "github.com/gnolang/parscan/vm0" - "github.com/gnolang/parscan/vm1" ) func main() { @@ -50,25 +48,7 @@ func run0(src string) error { } func run1(src string) (err error) { - m := &vm1.Machine{} - c := codegen.New() - c.AddSym(fmt.Println, "println", false) - n := &parser.Node{} - if n.Child, err = golang.GoParser.Parse(src); err != nil { - return err - } - n.Dot(os.Getenv("DOT"), "") - if err = c.CodeGen(n); err != nil { - return err - } - c.Emit(n, vm1.Exit) - log.Println("data:", c.Data) - log.Println("code:", vm1.Disassemble(c.Code)) - for _, v := range c.Data { - m.Push(v) - } - m.PushCode(c.Code) - m.SetIP(c.Entry) - m.Run() - return + i := codegen.NewInterpreter(golang.GoParser) + i.AddSym(fmt.Println, "println", false) + return i.Eval(src) } |
