mirror of
https://github.com/dragonheim/gagent.git
synced 2025-02-23 01:09:55 -08:00
45 lines
836 B
Text
45 lines
836 B
Text
package main
|
|
|
|
import (
|
|
bufio "bufio"
|
|
flag "flag"
|
|
fmt "fmt"
|
|
io "io"
|
|
os "os"
|
|
|
|
picol "github.com/dragonheim/gagent/pkg/picol"
|
|
)
|
|
|
|
var fname = flag.String("f", "", "file name")
|
|
|
|
func RunPicol(fname string) error {
|
|
interp := picol.NewInterpreter()
|
|
interp.RegisterCoreCommands()
|
|
|
|
buf, err := io.ReadFile(fname)
|
|
if err == nil {
|
|
result, err := interp.Eval(string(buf))
|
|
if err != nil {
|
|
return fmt.Errorf("Error: %s, Result: %s", err, result)
|
|
}
|
|
} else {
|
|
for {
|
|
fmt.Print("picol> ")
|
|
scanner := bufio.NewReader(os.Stdin)
|
|
clibuf, _ := scanner.ReadString('\n')
|
|
result, err := interp.Eval(clibuf[:len(clibuf)-1])
|
|
if len(result) != 0 {
|
|
return fmt.Errorf("Error: %s, Result: %s", err, result)
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
err := RunPicol(*fname)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
}
|