package main import ( "bufio" "fmt" "os" ) func main() { var err error f := os.Stdin if len(os.Args) > 1 { f, err = os.Open(os.Args[1]) if err != nil { panic(err) } defer f.Close() } sc := bufio.NewScanner(f) for sc.Scan() { s := sc.Bytes() expr, err := Parse(s) if err != nil { fmt.Fprintln(os.Stderr, "Parse:", err) continue } n := expr.Eval() fmt.Println(n.String()) } }