1 /* Generated by re2c */
2 // re2c $INPUT -o $OUTPUT -i8 --input-encoding utf8
3 #include <assert.h>
4
lex(const char * YYCURSOR)5 int lex(const char *YYCURSOR)
6 {
7 #define YYCTYPE unsigned char
8 const char *YYMARKER;
9
10
11 {
12 YYCTYPE yych;
13 yych = *YYCURSOR;
14 switch (yych) {
15 case '1': goto yy4;
16 case '~': goto yy5;
17 case 0xCE: goto yy6;
18 case 0xD0: goto yy7;
19 case 0xD1: goto yy8;
20 case 0xEF: goto yy9;
21 case 0xF0: goto yy10;
22 default: goto yy2;
23 }
24 yy2:
25 ++YYCURSOR;
26 yy3:
27 { return -1; }
28 yy4:
29 yych = *++YYCURSOR;
30 if (yych <= 0x00) goto yy11;
31 goto yy3;
32 yy5:
33 yych = *++YYCURSOR;
34 if (yych <= 0x00) goto yy13;
35 goto yy3;
36 yy6:
37 yych = *(YYMARKER = ++YYCURSOR);
38 switch (yych) {
39 case 0x88: goto yy15;
40 default: goto yy3;
41 }
42 yy7:
43 yych = *(YYMARKER = ++YYCURSOR);
44 switch (yych) {
45 case 0x90: goto yy17;
46 case 0x9C: goto yy18;
47 case 0xA1: goto yy19;
48 case 0xA3: goto yy20;
49 default: goto yy3;
50 }
51 yy8:
52 yych = *(YYMARKER = ++YYCURSOR);
53 switch (yych) {
54 case 0x81: goto yy19;
55 case 0xB7: goto yy21;
56 default: goto yy3;
57 }
58 yy9:
59 yych = *(YYMARKER = ++YYCURSOR);
60 switch (yych) {
61 case 0xBD: goto yy22;
62 case 0xBE: goto yy23;
63 default: goto yy3;
64 }
65 yy10:
66 yych = *(YYMARKER = ++YYCURSOR);
67 switch (yych) {
68 case 0x9D: goto yy24;
69 case 0xA3: goto yy25;
70 case 0xA4: goto yy26;
71 case 0xA8: goto yy27;
72 default: goto yy3;
73 }
74 yy11:
75 ++YYCURSOR;
76 { return 4; }
77 yy13:
78 ++YYCURSOR;
79 { return 5; }
80 yy15:
81 yych = *++YYCURSOR;
82 if (yych <= 0x00) goto yy28;
83 yy16:
84 YYCURSOR = YYMARKER;
85 goto yy3;
86 yy17:
87 yych = *++YYCURSOR;
88 switch (yych) {
89 case 0xD0: goto yy30;
90 default: goto yy16;
91 }
92 yy18:
93 yych = *++YYCURSOR;
94 switch (yych) {
95 case 0xD0: goto yy31;
96 default: goto yy16;
97 }
98 yy19:
99 yych = *++YYCURSOR;
100 switch (yych) {
101 case 0xD0: goto yy32;
102 default: goto yy16;
103 }
104 yy20:
105 yych = *++YYCURSOR;
106 switch (yych) {
107 case 0xD0: goto yy33;
108 default: goto yy16;
109 }
110 yy21:
111 yych = *++YYCURSOR;
112 if (yych <= 0x00) goto yy34;
113 goto yy16;
114 yy22:
115 yych = *++YYCURSOR;
116 switch (yych) {
117 case 0xB7: goto yy36;
118 default: goto yy16;
119 }
120 yy23:
121 yych = *++YYCURSOR;
122 switch (yych) {
123 case 0x88: goto yy37;
124 default: goto yy16;
125 }
126 yy24:
127 yych = *++YYCURSOR;
128 switch (yych) {
129 case 0x8C: goto yy38;
130 default: goto yy16;
131 }
132 yy25:
133 yych = *++YYCURSOR;
134 switch (yych) {
135 case 0x9D: goto yy39;
136 default: goto yy16;
137 }
138 yy26:
139 yych = *++YYCURSOR;
140 switch (yych) {
141 case 0xB0: goto yy40;
142 default: goto yy16;
143 }
144 yy27:
145 yych = *++YYCURSOR;
146 switch (yych) {
147 case 0xA2: goto yy41;
148 default: goto yy16;
149 }
150 yy28:
151 ++YYCURSOR;
152 { return 7; }
153 yy30:
154 yych = *++YYCURSOR;
155 switch (yych) {
156 case 0xBD: goto yy42;
157 default: goto yy16;
158 }
159 yy31:
160 yych = *++YYCURSOR;
161 switch (yych) {
162 case 0xB0: goto yy43;
163 default: goto yy16;
164 }
165 yy32:
166 yych = *++YYCURSOR;
167 switch (yych) {
168 case 0xB5: goto yy44;
169 default: goto yy16;
170 }
171 yy33:
172 yych = *++YYCURSOR;
173 switch (yych) {
174 case 0xBB: goto yy45;
175 default: goto yy16;
176 }
177 yy34:
178 ++YYCURSOR;
179 { return 6; }
180 yy36:
181 yych = *++YYCURSOR;
182 if (yych <= 0x00) goto yy46;
183 goto yy16;
184 yy37:
185 yych = *++YYCURSOR;
186 if (yych <= 0x00) goto yy48;
187 goto yy16;
188 yy38:
189 yych = *++YYCURSOR;
190 switch (yych) {
191 case 0x92: goto yy50;
192 default: goto yy16;
193 }
194 yy39:
195 yych = *++YYCURSOR;
196 switch (yych) {
197 case 0xB7: goto yy51;
198 default: goto yy16;
199 }
200 yy40:
201 yych = *++YYCURSOR;
202 switch (yych) {
203 case 0x96: goto yy52;
204 default: goto yy16;
205 }
206 yy41:
207 yych = *++YYCURSOR;
208 switch (yych) {
209 case 0x88: goto yy53;
210 default: goto yy16;
211 }
212 yy42:
213 yych = *++YYCURSOR;
214 switch (yych) {
215 case 0xD1: goto yy54;
216 default: goto yy16;
217 }
218 yy43:
219 yych = *++YYCURSOR;
220 switch (yych) {
221 case 0xD1: goto yy55;
222 default: goto yy16;
223 }
224 yy44:
225 yych = *++YYCURSOR;
226 switch (yych) {
227 case 0xD1: goto yy56;
228 default: goto yy16;
229 }
230 yy45:
231 yych = *++YYCURSOR;
232 switch (yych) {
233 case 0xD1: goto yy57;
234 default: goto yy16;
235 }
236 yy46:
237 ++YYCURSOR;
238 { return 8; }
239 yy48:
240 ++YYCURSOR;
241 { return 9; }
242 yy50:
243 yych = *++YYCURSOR;
244 if (yych <= 0x00) goto yy58;
245 goto yy16;
246 yy51:
247 yych = *++YYCURSOR;
248 if (yych <= 0x00) goto yy60;
249 goto yy16;
250 yy52:
251 yych = *++YYCURSOR;
252 if (yych <= 0x00) goto yy62;
253 goto yy16;
254 yy53:
255 yych = *++YYCURSOR;
256 if (yych <= 0x00) goto yy64;
257 goto yy16;
258 yy54:
259 yych = *++YYCURSOR;
260 switch (yych) {
261 case 0x8F: goto yy66;
262 default: goto yy16;
263 }
264 yy55:
265 yych = *++YYCURSOR;
266 switch (yych) {
267 case 0x88: goto yy67;
268 default: goto yy16;
269 }
270 yy56:
271 yych = *++YYCURSOR;
272 switch (yych) {
273 case 0x80: goto yy68;
274 default: goto yy16;
275 }
276 yy57:
277 yych = *++YYCURSOR;
278 switch (yych) {
279 case 0x8F: goto yy69;
280 default: goto yy16;
281 }
282 yy58:
283 ++YYCURSOR;
284 { return 13; }
285 yy60:
286 ++YYCURSOR;
287 { return 10; }
288 yy62:
289 ++YYCURSOR;
290 { return 12; }
291 yy64:
292 ++YYCURSOR;
293 { return 11; }
294 yy66:
295 yych = *++YYCURSOR;
296 if (yych <= 0x00) goto yy70;
297 goto yy16;
298 yy67:
299 yych = *++YYCURSOR;
300 switch (yych) {
301 case 0xD0: goto yy72;
302 default: goto yy16;
303 }
304 yy68:
305 yych = *++YYCURSOR;
306 switch (yych) {
307 case 0xD0: goto yy73;
308 default: goto yy16;
309 }
310 yy69:
311 yych = *++YYCURSOR;
312 if (yych <= 0x00) goto yy74;
313 goto yy16;
314 yy70:
315 ++YYCURSOR;
316 { return 3; }
317 yy72:
318 yych = *++YYCURSOR;
319 switch (yych) {
320 case 0xB0: goto yy76;
321 default: goto yy16;
322 }
323 yy73:
324 yych = *++YYCURSOR;
325 switch (yych) {
326 case 0xB3: goto yy77;
327 default: goto yy16;
328 }
329 yy74:
330 ++YYCURSOR;
331 { return 2; }
332 yy76:
333 yych = *++YYCURSOR;
334 if (yych <= 0x00) goto yy78;
335 goto yy16;
336 yy77:
337 yych = *++YYCURSOR;
338 switch (yych) {
339 case 0xD0: goto yy80;
340 default: goto yy16;
341 }
342 yy78:
343 ++YYCURSOR;
344 { return 1; }
345 yy80:
346 yych = *++YYCURSOR;
347 switch (yych) {
348 case 0xB5: goto yy81;
349 default: goto yy16;
350 }
351 yy81:
352 yych = *++YYCURSOR;
353 switch (yych) {
354 case 0xD0: goto yy82;
355 case 0xD1: goto yy83;
356 default: goto yy16;
357 }
358 yy82:
359 yych = *++YYCURSOR;
360 switch (yych) {
361 case 0x90:
362 case 0x91:
363 case 0x92:
364 case 0x93:
365 case 0x94:
366 case 0x95:
367 case 0x96:
368 case 0x97:
369 case 0x98:
370 case 0x99:
371 case 0x9A:
372 case 0x9B:
373 case 0x9C:
374 case 0x9D:
375 case 0x9E:
376 case 0x9F:
377 case 0xA0:
378 case 0xA1:
379 case 0xA2:
380 case 0xA3:
381 case 0xA4:
382 case 0xA5:
383 case 0xA6:
384 case 0xA7:
385 case 0xA8:
386 case 0xA9:
387 case 0xAA:
388 case 0xAB:
389 case 0xAC:
390 case 0xAD:
391 case 0xAE:
392 case 0xAF:
393 case 0xB0:
394 case 0xB1:
395 case 0xB2:
396 case 0xB3:
397 case 0xB4:
398 case 0xB5:
399 case 0xB6:
400 case 0xB7:
401 case 0xB8:
402 case 0xB9:
403 case 0xBA:
404 case 0xBB:
405 case 0xBC:
406 case 0xBD:
407 case 0xBE:
408 case 0xBF: goto yy84;
409 default: goto yy16;
410 }
411 yy83:
412 yych = *++YYCURSOR;
413 switch (yych) {
414 case 0x80:
415 case 0x81:
416 case 0x82:
417 case 0x83:
418 case 0x84:
419 case 0x85:
420 case 0x86:
421 case 0x87:
422 case 0x88:
423 case 0x89:
424 case 0x8A:
425 case 0x8B:
426 case 0x8C:
427 case 0x8D:
428 case 0x8E:
429 case 0x8F: goto yy84;
430 default: goto yy16;
431 }
432 yy84:
433 yych = *++YYCURSOR;
434 if (yych >= 0x01) goto yy16;
435 ++YYCURSOR;
436 { return 0; }
437 }
438
439 }
440
441 #define TEST(s, i) assert(lex(s) == i)
442
main()443 int main()
444 {
445 TEST("Аня", 3);
446 TEST("Маша", 1);
447 TEST("Уля", 2);
448 TEST("1", 4);
449 TEST("~", 5);
450 TEST("ѷ", 6);
451 TEST("Έ", 7);
452 TEST("キ", 8);
453 TEST("ネ", 9);
454 TEST("", 10);
455 TEST("", 11);
456 TEST("", 12);
457 TEST("", 13);
458 TEST("Сергей", 0);
459 TEST("Сергеы", 0);
460 TEST("сергеЫ", 0);
461 return 0;
462 }
463