commit aa25412557ade7364fe82a5beea5f1c565e058b3
parent c8c8a25862ee2e5baf9a9caf888cabf322b0f191
Author: lash <dev@holbrook.no>
Date: Mon, 26 Aug 2024 22:25:51 +0100
Rename to flagparser, fix fail on numeric croak
Diffstat:
2 files changed, 3 insertions(+), 64 deletions(-)
diff --git a/asm/preprocess.go b/asm/preprocess.go
@@ -1,61 +0,0 @@
-package asm
-
-import (
- "encoding/csv"
- "fmt"
- "io"
- "os"
- "strconv"
-)
-
-type PreProcessor struct {
- flags map[string]string
-}
-
-func NewPreProcessor() *PreProcessor {
- return &PreProcessor{
- flags: make(map[string]string),
- }
-}
-
-func(pp *PreProcessor) Get(key string) (string, error) {
- v, ok := pp.flags[key]
- if !ok {
- return "", fmt.Errorf("no flag registered under key: %s", key)
- }
- return v, nil
-}
-
-func(pp *PreProcessor) Load(fp string) (int, error) {
- var i int
- f, err := os.Open(fp)
- if err != nil {
- return 0, err
- }
- defer f.Close()
- r := csv.NewReader(f)
- for i = 0; true; i++ {
- r, err := r.Read()
- if err != nil {
- if err == io.EOF {
- break
- }
- return 0, err
- }
- if r[0] == "flag" {
- if len(r) < 3 {
- return 0, fmt.Errorf("Not enough fields for flag setting in line %d", i)
- }
- _, err = strconv.Atoi(r[2])
- if err != nil {
- return 0, fmt.Errorf("Flag translation value must be numeric")
- }
- pp.flags[r[1]] = r[2]
- Logg.Debugf("added flag translation", "from", r[1], "to", r[2])
- }
- }
-
- return i, nil
-}
-
-
diff --git a/dev/asm/main.go b/dev/asm/main.go
@@ -17,7 +17,7 @@ import (
type arg struct {
- One *string `@Sym`
+ One *string `(@Sym | @NumFirst)`
Two *string `((@Sym | @NumFirst) Whitespace?)?`
Three *string `((@Sym | @NumFirst) Whitespace?)?`
//Desc *string `(Quote ((@Sym | @Size) @Whitespace?)+ Quote Whitespace?)?`
@@ -34,13 +34,13 @@ type asmAsm struct {
}
type processor struct {
- *asm.PreProcessor
+ *asm.FlagParser
}
func newProcessor(fp string) (*processor, error) {
o := &processor{
- asm.NewPreProcessor(),
+ asm.NewFlagParser(),
}
_, err := o.Load(fp)
return o, err