package loxgo import ( "errors" "os" "git.red-panda.pet/pandaware/lox-go/ast" "git.red-panda.pet/pandaware/lox-go/lexer" "git.red-panda.pet/pandaware/lox-go/parser" "git.red-panda.pet/pandaware/lox-go/reporter" ) func RunFile(filename string) error { bs, err := os.ReadFile(filename) if err != nil { return err } if err := Run(string(bs)); err != nil { return err } return nil } func Run(source string) error { s := lexer.New(source) tokens, ok := s.ScanTokens() if !ok { return errors.New("lexer error") } p := parser.New(tokens) expr, err := p.Parse() if err != nil { return errors.New("parser error") } printer := &ast.Printer{} reporter.Debug(0, "astPrinter", "stdin", printer.Print(expr)) return nil }