func TestParser(t *testing.T) { defer gslogger.Join() compiler := gslang.NewCompiler("test", gslang.HandleError(func(err *gslang.Error) { gserrors.Panicf(err.Orignal, "parse %s error\n\t%s", err.Start, err.Text) })) err := compiler.Compile("test.gs") if err != nil { t.Fatal(err) } err = compiler.Compile("../gslang.gs") if err != nil { t.Fatal(err) } err = compiler.Compile("../annotations.gs") if err != nil { t.Fatal(err) } err = compiler.Link() if err != nil { t.Fatal(err) } }
func main() { gslogger.Console("$content", "2006-01-02 15:04:05.999999") gslogger.NewFlags(gslogger.ERROR | gslogger.WARN | gslogger.INFO) log := gslogger.Get("gsrpc") defer func() { if e := recover(); e != nil { log.E("%s", e) } gslogger.Join() }() flag.Parse() *output, _ = filepath.Abs(*output) log.I("Start gsRPC With Target Language(%s)", *lang) codegenF, ok := langs[*lang] if !ok { log.E("unknown gsrpc object language :%s", *lang) os.Exit(1) } codegen, err := codegenF(*output, []string{"github.com/gsrpc/gslang"}) if err != nil { gserrors.Panicf(err, "create language(%s) codegen error", *lang) } compiler := gslang.NewCompiler("gsrpc", gslang.HandleError(func(err *gslang.Error) { gserrors.Panicf(err.Orignal, "parse %s error\n\t%s", err.Start, err.Text) })) for _, file := range flag.Args() { log.I("Compile gsLang File :%s", file) if err := compiler.Compile(file); err != nil { gserrors.Panicf(err, "compile %s error", file) } } log.I("Link ...") err = compiler.Link() if err != nil { gserrors.Panicf(err, "link error") } log.I("Output Directory :%s", *output) if err := compiler.Visit(codegen); err != nil { gserrors.Panicf(err, "generate language codes(%s) error", *lang) } log.I("Run gsRPC Compile -- Success") }