MCPcopy Index your code
hub / github.com/expr-lang/expr / root

Function root

parser/lexer/state.go:11–70  ·  view source on GitHub ↗
(l *Lexer)

Source from the content-addressed store, hash-verified

9type stateFn func(*Lexer) stateFn
10
11func root(l *Lexer) stateFn {
12 switch r := l.next(); {
13 case r == eof:
14 l.emitEOF()
15 return nil
16 case utils.IsSpace(r):
17 l.skip()
18 return root
19 case r == '\'' || r == '"':
20 l.scanString(r)
21 str, err := unescape(l.word())
22 if err != nil {
23 l.error("%v", err)
24 }
25 l.emitValue(String, str)
26 case r == '`':
27 l.scanRawString(r)
28 case (r == 'b' || r == 'B') && (l.peek() == '\'' || l.peek() == '"'):
29 quote := l.next()
30 l.scanString(quote)
31 str, err := unescapeBytes(l.word()[1:]) // skip 'b'
32 if err != nil {
33 l.error("%v", err)
34 }
35 l.emitValue(Bytes, str)
36 case '0' <= r && r <= '9':
37 l.backup()
38 return number
39 case r == '?':
40 return questionMark
41 case r == '/':
42 return slash
43 case r == '#':
44 return pointer
45 case r == '|':
46 l.accept("|")
47 l.emit(Operator)
48 case r == ':':
49 l.accept(":")
50 l.emit(Operator)
51 case strings.ContainsRune("([{", r):
52 l.emit(Bracket)
53 case strings.ContainsRune(")]}", r):
54 l.emit(Bracket)
55 case strings.ContainsRune(",;%+-^", r): // single rune operator
56 l.emit(Operator)
57 case strings.ContainsRune("&!=*<>", r): // possible double rune operator
58 l.accept("&=*")
59 l.emit(Operator)
60 case r == '.':
61 l.backup()
62 return dot
63 case utils.IsAlphaNumeric(r):
64 l.backup()
65 return identifier
66 default:
67 return l.error("unrecognized character: %#U", r)
68 }

Callers

nothing calls this directly

Calls 15

IsSpaceFunction · 0.92
IsAlphaNumericFunction · 0.92
unescapeFunction · 0.85
unescapeBytesFunction · 0.85
emitEOFMethod · 0.80
skipMethod · 0.80
scanStringMethod · 0.80
wordMethod · 0.80
emitValueMethod · 0.80
scanRawStringMethod · 0.80
peekMethod · 0.80
backupMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…