wrote dsl for ast boiler plate generation
This commit is contained in:
parent
b244f7e3b2
commit
e0dd8ff9d5
16 changed files with 915 additions and 60 deletions
52
ast/gen/generate.go
Normal file
52
ast/gen/generate.go
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
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)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue