blob: a52f2322febcffa8e44dc05449b8d5dfa115a03c (
plain)
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
|
package token
type TokenKind int
const (
EOF TokenKind = iota
EOL
// Keywords
KwVar
KwFn
KwType
KwIf
KwElif
KwElse
KwFor
KwTry
KwCatch
KwFinally
KwReturn
KwContinue
KwBreak
KwThrow
KwIn
KwNull
KwTrue
KwFalse
KwThis
KwUse
KwFrom
KwBy
KwGlobal
// Data Tokens
Ident
Int
Float
String
// Punctuation
Assign
Plus
Minus
Star
Slash
Percent
Bang
Eq
Neq
Lt
Gt
Lte
Gte
LParen
RParen
LBrace
RBrace
LBracket
RBracket
Comma
Dot
SemiColon
)
func (tk TokenKind) String() string {
switch tk {
case EOF:
return "EOF"
case EOL:
return "EOL"
case KwVar:
return "var"
case KwFn:
return "fn"
case KwType:
return "type"
case KwIf:
return "if"
case KwElif:
return "elif"
case KwElse:
return "else"
case KwFor:
return "for"
case KwTry:
return "try"
case KwCatch:
return "catch"
case KwFinally:
return "finally"
case KwReturn:
return "return"
case KwContinue:
return "continue"
case KwBreak:
return "break"
case KwThrow:
return "throw"
case KwIn:
return "in"
case KwNull:
return "null"
case KwTrue:
return "true"
case KwFalse:
return "false"
case KwThis:
return "this"
case KwUse:
return "use"
case KwFrom:
return "from"
case KwBy:
return "by"
case KwGlobal:
return "global"
case Ident:
return "ident"
case Int:
return "int"
case Float:
return "float"
case String:
return "string"
case Assign:
return "="
case Plus:
return "+"
case Minus:
return "-"
case Star:
return "*"
case Slash:
return "/"
case Percent:
return "%"
case Bang:
return "!"
case Eq:
return "=="
case Neq:
return "!="
case Lt:
return "<"
case Gt:
return ">"
case Lte:
return "<="
case Gte:
return ">="
case LParen:
return "("
case RParen:
return ")"
case LBrace:
return "{"
case RBrace:
return "}"
case LBracket:
return "["
case RBracket:
return "]"
case Comma:
return ","
case Dot:
return "."
case SemiColon:
return ";"
default:
return "unknown"
}
}
|