package main import ( "fmt" "log" "strings" "github.com/chzyer/readline" "github.com/hellerve/argos/eval" "github.com/hellerve/argos/parser" ) func main() { rl, err := readline.New("argos> ") if err != nil { log.Fatal(err) } defer rl.Close() e := eval.ParentEnv() for { prompt, err := rl.Readline() if err != nil { return } parsed, err, unconsumed := parser.Parse(prompt) if err != nil { fmt.Println(err) continue } if len(unconsumed) != 0 { fmt.Println("Unconsumed input:", strings.Join(unconsumed, " ")) continue } // TODO: how to avoid bindings on error? evald, err := eval.Eval(parsed, e) if err != nil { fmt.Println(err) continue } fmt.Println(evald.Pretty()) } }