func Example() { f, err := os.Open("hello.ook") if err != nil { panic(err) } commands, err := Parse(bufio.NewReader(f)) if err != nil { panic(err) } err = f.Close() if err != nil { panic(err) } var buf bytes.Buffer w := bf.NewWriter(&buf) _, err = w.Program(commands) if err != nil { panic(err) } err = w.Close() if err != nil { panic(err) } prog, err := bit.Parse(&buf) if err != nil { panic(err) } bw := bufio.NewWriter(os.Stdout) err = prog.RunByte(bufio.NewReader(os.Stdin), bw) if err != nil { panic(err) } err = bw.Flush() if err != nil { panic(err) } // Output: // Hello World! }
func main() { list, err := bf.Parse(bf.Tokenize(os.Stdin)) if err != nil { log.Fatal(err) } w := bf.NewWriter(os.Stdout) _, err = w.Program(list) if err != nil { log.Fatal(err) } err = w.Close() if err != nil { log.Fatal(err) } }
func main() { yyErrorVerbose = true list, err := Parse(bufio.NewReader(os.Stdin)) if err != nil { log.Fatal(err) } w := bf.NewWriter(os.Stdout) _, err = w.Program(list) if err != nil { log.Fatal(err) } err = w.Close() if err != nil { log.Fatal(err) } }
func testOpt(t *testing.T, bfprog []bf.Command) { r, w := io.Pipe() errs := make(chan error, 2) ch := make(chan Program, 1) go func() { bfw := bf.NewWriter(w) _, err := bfw.Program(bfprog) if err != nil { t.Error(err) errs <- err return } err = bfw.Close() if err != nil { t.Error(err) errs <- err return } err = w.Close() if err != nil { t.Error(err) errs <- err return } }() go func() { prog, err := Parse(bufio.NewReader(r)) if err != nil { t.Error(err) errs <- err return } ch <- prog }() select { case err := <-errs: panic(err) case prog := <-ch: ctx0, err := prog.run(nil, nil, nil) if err != nil { panic(err) } prog.Optimize() trace := func(l *line, c *context) { if l.opt != nil { t.Logf("%d: %#v", l.num, l.opt) } else { t.Logf("%d: %#v", l.num, l.stmt) } } ctx1, err := prog.run(nil, nil, trace) if err != nil { panic(err) } if !reflect.DeepEqual(ctx0, ctx1) { t.Errorf("expected equal:\n%#v\n%#v", ctx0, ctx1) } } }