-
Notifications
You must be signed in to change notification settings - Fork 153
/
token.go
138 lines (129 loc) · 1.24 KB
/
token.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package token
type Token int
const (
ILLEGAL Token = iota
EOF
COMMENT
// Reserved keywords.
AND
OR
NOT
EMPTY
IN
IMPORT
PACKAGE
RETURN
OPTION
BUILTIN
TEST
IF
THEN
ELSE
WITH
// Identifiers and literals.
IDENT
INT
FLOAT
STRING
REGEX
TIME
DURATION
// Operators.
ADD
SUB
MUL
DIV
MOD
POW
EQ
LT
GT
LTE
GTE
NEQ
REGEXEQ
REGEXNEQ
ASSIGN
ARROW
LPAREN
RPAREN
LBRACK
RBRACK
LBRACE
RBRACE
COMMA
DOT
COLON
PIPE_FORWARD
PIPE_RECEIVE
EXISTS
// String expression tokens.
QUOTE
STRINGEXPR
TEXT
)
func (t Token) String() string {
if t < 0 || int(t) >= len(tokenStrings) {
return "UNKNOWN"
}
return tokenStrings[int(t)]
}
var tokenStrings = []string{
"ILLEGAL",
"EOF",
"COMMENT",
"AND",
"OR",
"NOT",
"EMPTY",
"IN",
"IMPORT",
"PACKAGE",
"RETURN",
"OPTION",
"BUILTIN",
"TEST",
"IF",
"THEN",
"ELSE",
"WITH",
"IDENT",
"INT",
"FLOAT",
"STRING",
"REGEX",
"TIME",
"DURATION",
"ADD",
"SUB",
"MUL",
"DIV",
"MOD",
"POW",
"EQ",
"LT",
"GT",
"LTE",
"GTE",
"NEQ",
"REGEXEQ",
"REGEXNEQ",
"ASSIGN",
"ARROW",
"LPAREN",
"RPAREN",
"LBRACK",
"RBRACK",
"LBRACE",
"RBRACE",
"COMMA",
"DOT",
"COLON",
"PIPE_FORWARD",
"PIPE_RECEIVE",
"EXISTS",
"QUOTE",
"STRINGEXPR",
"TEXT",
}
type Pos int