about summary refs log tree commit diff
path: root/pkg/lang/scanner/token/kind.go
blob: bedbada5bbb4c6933944876a2db97e060a6dc6f3 (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
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

	// 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 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"
	}
}