lox-go/ast/gen/generate.go

52 lines
778 B
Go

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)
}
}