summaryrefslogtreecommitdiff
path: root/token/token.odin
blob: 20efd6ff77e1fd0c131ad14a054dda34796ee3a3 (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
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}
	}
}