tokens.mx raw
1 package main
2
3 import "strconv"
4
5 type Token uint32
6
7 const (
8 _ Token = iota
9 EOF
10
11 NameType
12 Literal
13
14 OperatorType
15 AssignOp
16 IncOp
17 Assign
18 Define
19 Arrow
20 Star
21
22 Lparen
23 Lbrack
24 Lbrace
25 Rparen
26 Rbrack
27 Rbrace
28 Comma
29 Semi
30 Colon
31 Dot
32 DotDotDot
33
34 Break
35 Case
36 Chan
37 Const
38 Continue
39 Default
40 Defer
41 Else
42 Fallthrough
43 For
44 Func
45 Go
46 Goto
47 If
48 Import
49 Interface
50 Map
51 Package
52 Range
53 Return
54 Select
55 Struct
56 Switch
57 TypeType
58 Var
59
60 tokenCount
61 )
62
63 const _ uint64 = 1 << (tokenCount - 1)
64
65 func contains(tokset uint64, tok Token) bool {
66 var bit uint64 = 1
67 bit = bit << tok
68 return tokset&bit != 0
69 }
70
71 type LitKind uint8
72
73 const (
74 IntLit LitKind = iota
75 FloatLit
76 ImagLit
77 RuneLit
78 StringLit
79 )
80
81 type Operator uint32
82
83 const (
84 _ Operator = iota
85
86 Def
87 Not
88 Recv
89 Tilde
90
91 OrOr
92
93 AndAnd
94
95 Eql
96 Neq
97 Lss
98 Leq
99 Gtr
100 Geq
101
102 Add
103 Sub
104 Or
105 Xor
106
107 Mul
108 Div
109 Rem
110 And
111 AndNot
112 Shl
113 Shr
114 )
115
116 const (
117 _ = iota
118 PrecOrOr
119 PrecAndAnd
120 PrecCmp
121 PrecAdd
122 PrecMul
123 )
124
125 const token_name = "EOFnameliteralopop=opop=:=<-*([{)]},;:....breakcasechanconstcontinuedefaultdeferelsefallthroughforfuncgogotoifimportinterfacemappackagerangereturnselectstructswitchtypevar"
126
127 func (i Token) String() string {
128 idx := [48]uint8{0, 3, 7, 14, 16, 19, 23, 24, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 42, 47, 51, 55, 60, 68, 75, 80, 84, 95, 98, 102, 104, 108, 110, 116, 125, 128, 135, 140, 146, 152, 158, 164, 168, 171, 171}
129 i -= 1
130 if i >= Token(len(idx)-1) {
131 return "token(" | strconv.FormatInt(int64(i+1), 10) | ")"
132 }
133 return token_name[idx[i]:idx[i+1]]
134 }
135
136 const _Operator_name = ":!<-~||&&==!=<<=>>=+-|^*/%&&^<<>>"
137
138 func (i Operator) String() string {
139 idx := [24]uint8{0, 1, 2, 4, 5, 7, 9, 11, 13, 14, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 31, 33}
140 i -= 1
141 if i >= Operator(len(idx)-1) {
142 return "Operator(" | strconv.FormatInt(int64(i+1), 10) | ")"
143 }
144 return _Operator_name[idx[i]:idx[i+1]]
145 }
146