MCPcopy Create free account
hub / github.com/gokcehan/lf / parseExpr

Method parseExpr

parse.go:219–409  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

217}
218
219func (p *parser) parseExpr() expr {
220 s := p.scanner
221
222 var result expr
223
224 switch s.typ {
225 case tokenEOF:
226 return nil
227 case tokenIdent:
228 switch s.tok {
229 case "set":
230 var val string
231
232 s.scan()
233 if s.typ != tokenIdent {
234 p.err = fmt.Errorf("expected identifier: %s", s.tok)
235 }
236 opt := s.tok
237
238 s.scan()
239 if s.typ != tokenSemicolon {
240 val = s.tok
241 s.scan()
242 }
243
244 s.scan()
245
246 result = &setExpr{opt, val}
247 case "setlocal":
248 var val string
249
250 s.scan()
251 if s.typ != tokenIdent {
252 p.err = fmt.Errorf("expected directory: %s", s.tok)
253 }
254 dir := s.tok
255
256 s.scan()
257 if s.typ != tokenIdent {
258 p.err = fmt.Errorf("expected identifier: %s", s.tok)
259 }
260 opt := s.tok
261
262 s.scan()
263 if s.typ != tokenSemicolon {
264 val = s.tok
265 s.scan()
266 }
267
268 s.scan()
269
270 result = &setLocalExpr{dir, opt, val}
271 case "map":
272 var expr expr
273
274 s.scan()
275 keys := s.tok
276

Callers 1

parseMethod · 0.95

Calls 1

scanMethod · 0.80

Tested by

no test coverage detected