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