MCPcopy Create free account
hub / github.com/as/edit / parseSimpleAddr

Function parseSimpleAddr

parse.go:107–142  ·  view source on GitHub ↗

Put

(p *parser)

Source from the content-addressed store, hash-verified

105
106// Put
107func parseSimpleAddr(p *parser) (a Address) {
108 //fmt.Printf("parseSimpleAddr:1 %s\n", p.tok)
109 back := false
110 rel := tryRelative(p)
111 v := p.tok.value
112 k := p.tok
113 //fmt.Printf("%s\n", k)
114 switch k.kind {
115 case kindRegexpBack:
116 back = true
117 fallthrough
118 case kindRegexp:
119 re, err := regexp.Compile(v)
120 if err != nil {
121 p.fatal(err)
122 return
123 }
124 if rel != -1 {
125 rel = 1
126 }
127 return &Regexp{re, back, 1}
128 case kindLineOffset, kindByteOffset:
129 i := p.mustatoi(v)
130 if rel < 0 {
131 i = -i
132 }
133 if k.kind == kindLineOffset {
134 return &Line{i, rel}
135 }
136 return &Byte{i, rel}
137 case kindDot:
138 return &Dot{}
139 }
140 p.err = fmt.Errorf("bad address: %q", v)
141 return
142}
143
144func parseArg(p *parser) (arg string) {
145 p.Next()

Callers 3

parseAddrFunction · 0.85
parseOpFunction · 0.85
parseCmdFunction · 0.85

Calls 3

tryRelativeFunction · 0.85
fatalMethod · 0.80
mustatoiMethod · 0.80

Tested by

no test coverage detected