1use crate::lex_states::*;
4use crate::reserved_words::ReservedWord;
5use crate::Lexer;
6
7pub(crate) const RESERVED_WORDS: &[&[ReservedWord]] = &[
8 &[
10
11 ],
12 &[
14
15 ],
16 &[
18 ReservedWord {
19 name: "do",
20 id: Lexer::kDO,
21 modifier_id: Lexer::kDO,
22 state: EXPR_BEG,
23 },
24 ReservedWord {
25 name: "if",
26 id: Lexer::kIF,
27 modifier_id: Lexer::kIF_MOD,
28 state: EXPR_VALUE,
29 },
30 ReservedWord {
31 name: "in",
32 id: Lexer::kIN,
33 modifier_id: Lexer::kIN,
34 state: EXPR_VALUE,
35 },
36 ReservedWord {
37 name: "or",
38 id: Lexer::kOR,
39 modifier_id: Lexer::kOR,
40 state: EXPR_VALUE,
41 }
42 ],
43 &[
45 ReservedWord {
46 name: "END",
47 id: Lexer::klEND,
48 modifier_id: Lexer::klEND,
49 state: EXPR_END,
50 },
51 ReservedWord {
52 name: "and",
53 id: Lexer::kAND,
54 modifier_id: Lexer::kAND,
55 state: EXPR_VALUE,
56 },
57 ReservedWord {
58 name: "def",
59 id: Lexer::kDEF,
60 modifier_id: Lexer::kDEF,
61 state: EXPR_FNAME,
62 },
63 ReservedWord {
64 name: "end",
65 id: Lexer::kEND,
66 modifier_id: Lexer::kEND,
67 state: EXPR_END,
68 },
69 ReservedWord {
70 name: "for",
71 id: Lexer::kFOR,
72 modifier_id: Lexer::kFOR,
73 state: EXPR_VALUE,
74 },
75 ReservedWord {
76 name: "nil",
77 id: Lexer::kNIL,
78 modifier_id: Lexer::kNIL,
79 state: EXPR_END,
80 },
81 ReservedWord {
82 name: "not",
83 id: Lexer::kNOT,
84 modifier_id: Lexer::kNOT,
85 state: EXPR_ARG,
86 }
87 ],
88 &[
90 ReservedWord {
91 name: "case",
92 id: Lexer::kCASE,
93 modifier_id: Lexer::kCASE,
94 state: EXPR_VALUE,
95 },
96 ReservedWord {
97 name: "else",
98 id: Lexer::kELSE,
99 modifier_id: Lexer::kELSE,
100 state: EXPR_BEG,
101 },
102 ReservedWord {
103 name: "next",
104 id: Lexer::kNEXT,
105 modifier_id: Lexer::kNEXT,
106 state: EXPR_MID,
107 },
108 ReservedWord {
109 name: "redo",
110 id: Lexer::kREDO,
111 modifier_id: Lexer::kREDO,
112 state: EXPR_END,
113 },
114 ReservedWord {
115 name: "self",
116 id: Lexer::kSELF,
117 modifier_id: Lexer::kSELF,
118 state: EXPR_END,
119 },
120 ReservedWord {
121 name: "then",
122 id: Lexer::kTHEN,
123 modifier_id: Lexer::kTHEN,
124 state: EXPR_BEG,
125 },
126 ReservedWord {
127 name: "true",
128 id: Lexer::kTRUE,
129 modifier_id: Lexer::kTRUE,
130 state: EXPR_END,
131 },
132 ReservedWord {
133 name: "when",
134 id: Lexer::kWHEN,
135 modifier_id: Lexer::kWHEN,
136 state: EXPR_VALUE,
137 }
138 ],
139 &[
141 ReservedWord {
142 name: "BEGIN",
143 id: Lexer::klBEGIN,
144 modifier_id: Lexer::klBEGIN,
145 state: EXPR_END,
146 },
147 ReservedWord {
148 name: "alias",
149 id: Lexer::kALIAS,
150 modifier_id: Lexer::kALIAS,
151 state: EXPR_FNAME | EXPR_FITEM,
152 },
153 ReservedWord {
154 name: "begin",
155 id: Lexer::kBEGIN,
156 modifier_id: Lexer::kBEGIN,
157 state: EXPR_BEG,
158 },
159 ReservedWord {
160 name: "break",
161 id: Lexer::kBREAK,
162 modifier_id: Lexer::kBREAK,
163 state: EXPR_MID,
164 },
165 ReservedWord {
166 name: "class",
167 id: Lexer::kCLASS,
168 modifier_id: Lexer::kCLASS,
169 state: EXPR_CLASS,
170 },
171 ReservedWord {
172 name: "elsif",
173 id: Lexer::kELSIF,
174 modifier_id: Lexer::kELSIF,
175 state: EXPR_VALUE,
176 },
177 ReservedWord {
178 name: "false",
179 id: Lexer::kFALSE,
180 modifier_id: Lexer::kFALSE,
181 state: EXPR_END,
182 },
183 ReservedWord {
184 name: "retry",
185 id: Lexer::kRETRY,
186 modifier_id: Lexer::kRETRY,
187 state: EXPR_END,
188 },
189 ReservedWord {
190 name: "super",
191 id: Lexer::kSUPER,
192 modifier_id: Lexer::kSUPER,
193 state: EXPR_ARG,
194 },
195 ReservedWord {
196 name: "undef",
197 id: Lexer::kUNDEF,
198 modifier_id: Lexer::kUNDEF,
199 state: EXPR_FNAME | EXPR_FITEM,
200 },
201 ReservedWord {
202 name: "until",
203 id: Lexer::kUNTIL,
204 modifier_id: Lexer::kUNTIL_MOD,
205 state: EXPR_VALUE,
206 },
207 ReservedWord {
208 name: "while",
209 id: Lexer::kWHILE,
210 modifier_id: Lexer::kWHILE_MOD,
211 state: EXPR_VALUE,
212 },
213 ReservedWord {
214 name: "yield",
215 id: Lexer::kYIELD,
216 modifier_id: Lexer::kYIELD,
217 state: EXPR_ARG,
218 }
219 ],
220 &[
222 ReservedWord {
223 name: "ensure",
224 id: Lexer::kENSURE,
225 modifier_id: Lexer::kENSURE,
226 state: EXPR_BEG,
227 },
228 ReservedWord {
229 name: "module",
230 id: Lexer::kMODULE,
231 modifier_id: Lexer::kMODULE,
232 state: EXPR_VALUE,
233 },
234 ReservedWord {
235 name: "rescue",
236 id: Lexer::kRESCUE,
237 modifier_id: Lexer::kRESCUE_MOD,
238 state: EXPR_MID,
239 },
240 ReservedWord {
241 name: "return",
242 id: Lexer::kRETURN,
243 modifier_id: Lexer::kRETURN,
244 state: EXPR_MID,
245 },
246 ReservedWord {
247 name: "unless",
248 id: Lexer::kUNLESS,
249 modifier_id: Lexer::kUNLESS_MOD,
250 state: EXPR_VALUE,
251 }
252 ],
253 &[
255
256 ],
257 &[
259 ReservedWord {
260 name: "__FILE__",
261 id: Lexer::k__FILE__,
262 modifier_id: Lexer::k__FILE__,
263 state: EXPR_END,
264 },
265 ReservedWord {
266 name: "__LINE__",
267 id: Lexer::k__LINE__,
268 modifier_id: Lexer::k__LINE__,
269 state: EXPR_END,
270 },
271 ReservedWord {
272 name: "defined?",
273 id: Lexer::kDEFINED,
274 modifier_id: Lexer::kDEFINED,
275 state: EXPR_ARG,
276 }
277 ],
278 &[
280
281 ],
282 &[
284
285 ],
286 &[
288
289 ],
290 &[
292 ReservedWord {
293 name: "__ENCODING__",
294 id: Lexer::k__ENCODING__,
295 modifier_id: Lexer::k__ENCODING__,
296 state: EXPR_END,
297 }
298 ]
299];