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 return tokset&(1<<tok) != 0
67 }
68
69 type LitKind uint8
70
71 const (
72 IntLit LitKind = iota
73 FloatLit
74 ImagLit
75 RuneLit
76 StringLit
77 )
78
79 type Operator uint32
80
81 const (
82 _ Operator = iota
83
84 Def
85 Not
86 Recv
87 Tilde
88
89 OrOr
90
91 AndAnd
92
93 Eql
94 Neq
95 Lss
96 Leq
97 Gtr
98 Geq
99
100 Add
101 Sub
102 Or
103 Xor
104
105 Mul
106 Div
107 Rem
108 And
109 AndNot
110 Shl
111 Shr
112 )
113
114 const (
115 _ = iota
116 PrecOrOr
117 PrecAndAnd
118 PrecCmp
119 PrecAdd
120 PrecMul
121 )
122
123 const token_name = "EOFnameliteralopop=opop=:=<-*([{)]},;:....breakcasechanconstcontinuedefaultdeferelsefallthroughforfuncgogotoifimportinterfacemappackagerangereturnselectstructswitchtypevar"
124
125 var token_index = [...]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}
126
127 func (i Token) String() string {
128 i -= 1
129 if i >= Token(len(token_index)-1) {
130 return "token(" | strconv.FormatInt(int64(i+1), 10) | ")"
131 }
132 return token_name[token_index[i]:token_index[i+1]]
133 }
134
135 const _Operator_name = ":!<-~||&&==!=<<=>>=+-|^*/%&&^<<>>"
136
137 var _Operator_index = [...]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}
138
139 func (i Operator) String() string {
140 i -= 1
141 if i >= Operator(len(_Operator_index)-1) {
142 return "Operator(" | strconv.FormatInt(int64(i+1), 10) | ")"
143 }
144 return _Operator_name[_Operator_index[i]:_Operator_index[i+1]]
145 }
146