summaryrefslogtreecommitdiff
path: root/cmd/gint/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/gint/main.go')
-rw-r--r--cmd/gint/main.go17
1 files changed, 10 insertions, 7 deletions
diff --git a/cmd/gint/main.go b/cmd/gint/main.go
index 5b2b3a2..037614c 100644
--- a/cmd/gint/main.go
+++ b/cmd/gint/main.go
@@ -15,7 +15,7 @@ import (
)
type Interpreter interface {
- Eval(string) error
+ Eval(string) (any, error)
}
func main() {
@@ -23,7 +23,7 @@ func main() {
var interp Interpreter = vm0.New(golang.GoParser)
if len(os.Args) > 1 && os.Args[1] == "1" {
interp = codegen.NewInterpreter(golang.GoParser)
- interp.(*codegen.Interpreter).AddSym(fmt.Println, "println", false)
+ interp.(*codegen.Interpreter).AddSym(fmt.Println, "println")
}
in := os.Stdin
@@ -31,19 +31,22 @@ func main() {
// Provide an interactive line oriented Read Eval Print Loop (REPL).
liner := bufio.NewScanner(in)
text, prompt := "", "> "
- fmt.Printf(prompt)
+ fmt.Print(prompt)
for liner.Scan() {
text += liner.Text()
- err := interp.Eval(text + "\n")
+ res, err := interp.Eval(text + "\n")
if err == nil {
+ if res != nil {
+ fmt.Println(": ", res)
+ }
text, prompt = "", "> "
} else if errors.Is(err, scanner.ErrBlock) {
prompt = ">> "
} else {
- text, prompt = "", "> "
fmt.Println("Error:", err)
+ text, prompt = "", "> "
}
- fmt.Printf(prompt)
+ fmt.Print(prompt)
}
return
}
@@ -52,7 +55,7 @@ func main() {
if err != nil {
log.Fatal(err)
}
- if err := interp.Eval(string(buf)); err != nil {
+ if _, err := interp.Eval(string(buf)); err != nil {
log.Fatal(err)
}
}