package main import ( "flag" "fmt" "os" "strings" ) var fileName string func init() { flag.StringVar(&fileName, "f", "", "ast file to generate from") } func main() { flag.Parse() bs, err := os.ReadFile(fileName) tokens, errs := lex(string(bs)) if len(errs) > 0 { for _, err := range errs { fmt.Printf("%s\n", err.Error()) } os.Exit(1) } ast, err := parse(tokens) if err != nil { fmt.Printf("%s\n", err.Error()) os.Exit(1) } name, output, err := transpile(ast) if err != nil { fmt.Printf("%s\n", err.Error()) os.Exit(1) } f, err := os.Create(strings.ToLower(name) + ".go") if err != nil { fmt.Printf("%s\n", err.Error()) os.Exit(1) } _, err = f.Write(output) if err != nil { fmt.Printf("%s\n", err.Error()) os.Exit(1) } }