Skip to content

Commit b20c2aa

Browse files
feature: Adds Zinc Tokenizer
1 parent 0bf4b43 commit b20c2aa

File tree

4 files changed

+859
-0
lines changed

4 files changed

+859
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import Foundation
2+
3+
enum ZincToken: String, Equatable, Hashable {
4+
case eof
5+
6+
// literals
7+
case id = "identifier"
8+
case num = "Number"
9+
case str = "Str"
10+
case ref = "Ref"
11+
case symbol = "Symbol"
12+
case uri = "Uri"
13+
case date = "Date"
14+
case time = "Time"
15+
case datetime = "DateTime"
16+
17+
// syntax
18+
case colon = ":"
19+
case comma = ","
20+
case semicolon = ";"
21+
case minus = "-"
22+
case eq = "=="
23+
case notEq = "!="
24+
case lt = "<"
25+
case lt2 = "<<"
26+
case ltEq = "<="
27+
case gt = ">"
28+
case gt2 = ">>"
29+
case gtEq = ">="
30+
case lbracket = "["
31+
case rbracket = "]"
32+
case lbrace = "{"
33+
case rbrace = "}"
34+
case lparen = "("
35+
case rparen = ")"
36+
case arrow = "->"
37+
case slash = "/"
38+
case assign = "="
39+
case bang = "!"
40+
case nl = "newline"
41+
42+
var dis: String {
43+
return self.rawValue
44+
}
45+
46+
var isLiteral: Bool {
47+
switch self {
48+
case .id, .num, .str, .ref, .symbol, .uri, .date, .time, .datetime:
49+
return true
50+
default:
51+
return false
52+
}
53+
}
54+
}

0 commit comments

Comments
 (0)