package loxgo import ( "errors" "os" "git.red-panda.pet/pandaware/lox-go/lexer" "git.red-panda.pet/pandaware/lox-go/parser" "git.red-panda.pet/pandaware/lox-go/reporter" "git.red-panda.pet/pandaware/lox-go/runtime" ) 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") } interpreter := runtime.NewInterpreter() reporter.Debug(0, "interpreter", "stdin", interpreter.Evaluate(expr).Debug()) return nil }