summaryrefslogtreecommitdiff
path: root/vm0
diff options
context:
space:
mode:
authorMarc Vertes <mvertes@free.fr>2023-08-25 09:40:52 +0200
committerMarc Vertes <mvertes@free.fr>2023-08-25 09:40:52 +0200
commit706ca65800dfab293a0210b56602e1e9f8076fcc (patch)
tree0b5bdc341800a7556f4b613a0c8c3edcc33f57c0 /vm0
parent9fdef50606a2942389189cd61397e17c0a0ccfd7 (diff)
gint: simplify
Diffstat (limited to 'vm0')
-rw-r--r--vm0/vm.go19
1 files changed, 12 insertions, 7 deletions
diff --git a/vm0/vm.go b/vm0/vm.go
index 3e589ed..8d0b49e 100644
--- a/vm0/vm.go
+++ b/vm0/vm.go
@@ -2,11 +2,14 @@ package vm0
import (
"fmt"
+ "os"
"strings"
"github.com/gnolang/parscan/parser"
)
+const debug = true
+
type Interp struct {
*parser.Parser
stack []any // stack memory space
@@ -20,14 +23,16 @@ func New(p *parser.Parser) (i *Interp) {
return i
}
-func (i *Interp) Eval(src string) (r []any, err error) {
- n, err := i.Parse(src)
- if err != nil {
- return nil, err
+func (i *Interp) Eval(src string) (err error) {
+ n := &parser.Node{}
+ if n.Child, err = i.Parse(src); err != nil {
+ return
+ }
+ if debug {
+ n.Dot(os.Getenv("DOT"), "")
}
- for _, nod := range n {
- r, err = i.Run(nod, "")
- if err != nil {
+ for _, nod := range n.Child {
+ if _, err = i.Run(nod, ""); err != nil {
break
}
}