| | |
| | |
| | |
| |
|
| | |
| |
|
| | |
| | |
| | |
| |
|
| | package main |
| |
|
| | import ( |
| | "bufio" |
| | "flag" |
| | "fmt" |
| | "log" |
| | "os" |
| | "regexp" |
| | "strings" |
| | ) |
| |
|
| | var ( |
| | input = flag.String("i", "", "input file name") |
| | output = flag.String("o", "", "output file name") |
| | pkg = flag.String("p", "", "package name") |
| | ) |
| |
|
| | var Are = regexp.MustCompile(`^\tA([A-Za-z0-9]+)`) |
| |
|
| | func main() { |
| | flag.Parse() |
| | if *input == "" || *output == "" || *pkg == "" { |
| | flag.Usage() |
| | os.Exit(2) |
| | } |
| | in, err := os.Open(*input) |
| | if err != nil { |
| | log.Fatal(err) |
| | } |
| | fd, err := os.Create(*output) |
| | if err != nil { |
| | log.Fatal(err) |
| | } |
| | out := bufio.NewWriter(fd) |
| | defer out.Flush() |
| | var on = false |
| | s := bufio.NewScanner(in) |
| | first := true |
| | for s.Scan() { |
| | line := s.Text() |
| | if !on { |
| | |
| | |
| | const prefix = "= obj.ABase" |
| | index := strings.Index(line, prefix) |
| | if index < 0 { |
| | continue |
| | } |
| | |
| | fmt.Fprintf(out, header, *input, *output, *pkg, *pkg) |
| | on = true |
| | line = line[:index] |
| | } |
| | |
| | index := strings.Index(line, "//") |
| | if index > 0 { |
| | line = line[:index] |
| | } |
| | index = strings.Index(line, "/*") |
| | if index > 0 { |
| | line = line[:index] |
| | } |
| | |
| | |
| | if strings.HasPrefix(line, "}") || strings.ContainsRune(line, '=') { |
| | break |
| | } |
| | sub := Are.FindStringSubmatch(line) |
| | if len(sub) < 2 { |
| | continue |
| | } |
| | if first { |
| | fmt.Fprintf(out, "\tobj.A_ARCHSPECIFIC: %q,\n", sub[1]) |
| | first = false |
| | } else { |
| | fmt.Fprintf(out, "\t%q,\n", sub[1]) |
| | } |
| | } |
| | fmt.Fprintln(out, "}") |
| | if s.Err() != nil { |
| | log.Fatal(err) |
| | } |
| | } |
| |
|
| | const header = `// Code generated by stringer -i %s -o %s -p %s; DO NOT EDIT. |
| | |
| | package %s |
| | |
| | import "cmd/internal/obj" |
| | |
| | var Anames = []string{ |
| | ` |
| |
|