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
|
package token
Token :: union {
Asterisk,
Bang,
Comma,
EOF,
Else,
Equal_Sign,
Equals,
False,
Forward_Slash,
Function,
Greater_Than,
Identifier,
If,
Illegal,
Integer,
Left_Brace,
Left_Parenthesis,
Less_Than,
Let,
Minus,
Not_Equals,
Plus,
Return,
Right_Brace,
Right_Parenthesis,
Semicolon,
True,
}
Asterisk :: struct {}
Bang :: struct {}
Comma :: struct {}
EOF :: struct {}
Else :: struct {}
Equal_Sign :: struct {}
Equals :: struct {}
False :: struct {}
Forward_Slash :: struct {}
Function :: struct {}
Greater_Than :: struct {}
Identifier :: struct {
literal: string,
}
If :: struct {}
Illegal :: struct {}
Integer :: struct {
literal: int,
}
Left_Brace :: struct {}
Left_Parenthesis :: struct {}
Less_Than :: struct {}
Let :: struct {}
Minus :: struct {}
Not_Equals :: struct {}
Plus :: struct {}
Return :: struct {}
Right_Brace :: struct {}
Right_Parenthesis :: struct {}
Semicolon :: struct {}
True :: struct {}
lookup_identifier :: proc(ident: string) -> Token {
switch ident {
case "fn":
return Function{}
case "let":
return Let{}
case "if":
return If{}
case "else":
return Else{}
case "true":
return True{}
case "false":
return False{}
case "return":
return Return{}
case:
return Identifier{ident}
}
}
|