1 /* Generated by re2c */
2 #line 1 "encodings/unicode_group_Mc_8_encoding_policy_substitute.re"
3 // re2c $INPUT -o $OUTPUT -8 --encoding-policy substitute
4 #include <stdio.h>
5 #include "utf8.h"
6 #define YYCTYPE unsigned char
scan(const YYCTYPE * start,const YYCTYPE * const limit)7 bool scan(const YYCTYPE * start, const YYCTYPE * const limit)
8 {
9 	__attribute__((unused)) const YYCTYPE * YYMARKER; // silence compiler warnings when YYMARKER is not used
10 #	define YYCURSOR start
11 Mc:
12 
13 #line 14 "encodings/unicode_group_Mc_8_encoding_policy_substitute.c"
14 {
15 	YYCTYPE yych;
16 	yych = *YYCURSOR;
17 	switch (yych) {
18 	case 0xE0:	goto yy4;
19 	case 0xE1:	goto yy5;
20 	case 0xE3:	goto yy6;
21 	case 0xEA:	goto yy7;
22 	case 0xF0:	goto yy8;
23 	default:	goto yy2;
24 	}
25 yy2:
26 	++YYCURSOR;
27 yy3:
28 #line 14 "encodings/unicode_group_Mc_8_encoding_policy_substitute.re"
29 	{ return YYCURSOR == limit; }
30 #line 31 "encodings/unicode_group_Mc_8_encoding_policy_substitute.c"
31 yy4:
32 	yych = *(YYMARKER = ++YYCURSOR);
33 	switch (yych) {
34 	case 0xA4:	goto yy9;
35 	case 0xA5:	goto yy11;
36 	case 0xA6:
37 	case 0xB4:	goto yy12;
38 	case 0xA7:
39 	case 0xAD:	goto yy13;
40 	case 0xA8:
41 	case 0xAA:	goto yy14;
42 	case 0xA9:	goto yy15;
43 	case 0xAB:	goto yy16;
44 	case 0xAC:
45 	case 0xB2:	goto yy17;
46 	case 0xAE:
47 	case 0xBC:	goto yy18;
48 	case 0xAF:	goto yy19;
49 	case 0xB0:	goto yy20;
50 	case 0xB1:	goto yy21;
51 	case 0xB3:	goto yy22;
52 	case 0xB5:	goto yy23;
53 	case 0xB6:	goto yy24;
54 	case 0xB7:	goto yy25;
55 	case 0xBD:	goto yy26;
56 	default:	goto yy3;
57 	}
58 yy5:
59 	yych = *(YYMARKER = ++YYCURSOR);
60 	switch (yych) {
61 	case 0x80:	goto yy27;
62 	case 0x81:	goto yy28;
63 	case 0x82:	goto yy29;
64 	case 0x9E:	goto yy30;
65 	case 0x9F:	goto yy31;
66 	case 0xA4:	goto yy32;
67 	case 0xA6:	goto yy33;
68 	case 0xA7:	goto yy34;
69 	case 0xA8:	goto yy35;
70 	case 0xA9:	goto yy36;
71 	case 0xAC:	goto yy37;
72 	case 0xAD:	goto yy38;
73 	case 0xAE:	goto yy39;
74 	case 0xAF:	goto yy40;
75 	case 0xB0:	goto yy41;
76 	case 0xB3:	goto yy42;
77 	default:	goto yy3;
78 	}
79 yy6:
80 	yych = *(YYMARKER = ++YYCURSOR);
81 	switch (yych) {
82 	case 0x80:	goto yy43;
83 	default:	goto yy3;
84 	}
85 yy7:
86 	yych = *(YYMARKER = ++YYCURSOR);
87 	switch (yych) {
88 	case 0xA0:	goto yy44;
89 	case 0xA2:	goto yy45;
90 	case 0xA3:	goto yy46;
91 	case 0xA5:	goto yy47;
92 	case 0xA6:	goto yy48;
93 	case 0xA7:	goto yy15;
94 	case 0xA8:	goto yy49;
95 	case 0xA9:	goto yy50;
96 	case 0xAB:	goto yy51;
97 	case 0xAF:	goto yy52;
98 	default:	goto yy3;
99 	}
100 yy8:
101 	yych = *(YYMARKER = ++YYCURSOR);
102 	switch (yych) {
103 	case 0x91:	goto yy53;
104 	case 0x96:	goto yy54;
105 	case 0x9D:	goto yy55;
106 	default:	goto yy3;
107 	}
108 yy9:
109 	yych = *++YYCURSOR;
110 	switch (yych) {
111 	case 0x83:
112 	case 0xBB:
113 	case 0xBE:
114 	case 0xBF:	goto yy56;
115 	default:	goto yy10;
116 	}
117 yy10:
118 	YYCURSOR = YYMARKER;
119 	goto yy3;
120 yy11:
121 	yych = *++YYCURSOR;
122 	switch (yych) {
123 	case 0x80:
124 	case 0x89:
125 	case 0x8A:
126 	case 0x8B:
127 	case 0x8C:
128 	case 0x8E:
129 	case 0x8F:	goto yy56;
130 	default:	goto yy10;
131 	}
132 yy12:
133 	yych = *++YYCURSOR;
134 	switch (yych) {
135 	case 0x82:
136 	case 0x83:
137 	case 0xBE:
138 	case 0xBF:	goto yy56;
139 	default:	goto yy10;
140 	}
141 yy13:
142 	yych = *++YYCURSOR;
143 	switch (yych) {
144 	case 0x80:
145 	case 0x87:
146 	case 0x88:
147 	case 0x8B:
148 	case 0x8C:
149 	case 0x97:	goto yy56;
150 	default:	goto yy10;
151 	}
152 yy14:
153 	yych = *++YYCURSOR;
154 	switch (yych) {
155 	case 0x83:
156 	case 0xBE:
157 	case 0xBF:	goto yy56;
158 	default:	goto yy10;
159 	}
160 yy15:
161 	yych = *++YYCURSOR;
162 	switch (yych) {
163 	case 0x80:	goto yy56;
164 	default:	goto yy10;
165 	}
166 yy16:
167 	yych = *++YYCURSOR;
168 	switch (yych) {
169 	case 0x80:
170 	case 0x89:
171 	case 0x8B:
172 	case 0x8C:	goto yy56;
173 	default:	goto yy10;
174 	}
175 yy17:
176 	yych = *++YYCURSOR;
177 	switch (yych) {
178 	case 0x82:
179 	case 0x83:
180 	case 0xBE:	goto yy56;
181 	default:	goto yy10;
182 	}
183 yy18:
184 	yych = *++YYCURSOR;
185 	switch (yych) {
186 	case 0xBE:
187 	case 0xBF:	goto yy56;
188 	default:	goto yy10;
189 	}
190 yy19:
191 	yych = *++YYCURSOR;
192 	switch (yych) {
193 	case 0x81:
194 	case 0x82:
195 	case 0x86:
196 	case 0x87:
197 	case 0x88:
198 	case 0x8A:
199 	case 0x8B:
200 	case 0x8C:
201 	case 0x97:	goto yy56;
202 	default:	goto yy10;
203 	}
204 yy20:
205 	yych = *++YYCURSOR;
206 	switch (yych) {
207 	case 0x81:
208 	case 0x82:
209 	case 0x83:	goto yy56;
210 	default:	goto yy10;
211 	}
212 yy21:
213 	yych = *++YYCURSOR;
214 	switch (yych) {
215 	case 0x81:
216 	case 0x82:
217 	case 0x83:
218 	case 0x84:	goto yy56;
219 	default:	goto yy10;
220 	}
221 yy22:
222 	yych = *++YYCURSOR;
223 	switch (yych) {
224 	case 0x80:
225 	case 0x81:
226 	case 0x82:
227 	case 0x83:
228 	case 0x84:
229 	case 0x87:
230 	case 0x88:
231 	case 0x8A:
232 	case 0x8B:
233 	case 0x95:
234 	case 0x96:	goto yy56;
235 	default:	goto yy10;
236 	}
237 yy23:
238 	yych = *++YYCURSOR;
239 	switch (yych) {
240 	case 0x80:
241 	case 0x86:
242 	case 0x87:
243 	case 0x88:
244 	case 0x8A:
245 	case 0x8B:
246 	case 0x8C:
247 	case 0x97:	goto yy56;
248 	default:	goto yy10;
249 	}
250 yy24:
251 	yych = *++YYCURSOR;
252 	switch (yych) {
253 	case 0x82:
254 	case 0x83:	goto yy56;
255 	default:	goto yy10;
256 	}
257 yy25:
258 	yych = *++YYCURSOR;
259 	switch (yych) {
260 	case 0x8F:
261 	case 0x90:
262 	case 0x91:
263 	case 0x98:
264 	case 0x99:
265 	case 0x9A:
266 	case 0x9B:
267 	case 0x9C:
268 	case 0x9D:
269 	case 0x9E:
270 	case 0x9F:
271 	case 0xB2:
272 	case 0xB3:	goto yy56;
273 	default:	goto yy10;
274 	}
275 yy26:
276 	yych = *++YYCURSOR;
277 	switch (yych) {
278 	case 0xBF:	goto yy56;
279 	default:	goto yy10;
280 	}
281 yy27:
282 	yych = *++YYCURSOR;
283 	switch (yych) {
284 	case 0xAB:
285 	case 0xAC:
286 	case 0xB1:
287 	case 0xB8:
288 	case 0xBB:
289 	case 0xBC:	goto yy56;
290 	default:	goto yy10;
291 	}
292 yy28:
293 	yych = *++YYCURSOR;
294 	switch (yych) {
295 	case 0x96:
296 	case 0x97:
297 	case 0xA2:
298 	case 0xA3:
299 	case 0xA4:
300 	case 0xA7:
301 	case 0xA8:
302 	case 0xA9:
303 	case 0xAA:
304 	case 0xAB:
305 	case 0xAC:
306 	case 0xAD:	goto yy56;
307 	default:	goto yy10;
308 	}
309 yy29:
310 	yych = *++YYCURSOR;
311 	switch (yych) {
312 	case 0x83:
313 	case 0x84:
314 	case 0x87:
315 	case 0x88:
316 	case 0x89:
317 	case 0x8A:
318 	case 0x8B:
319 	case 0x8C:
320 	case 0x8F:
321 	case 0x9A:
322 	case 0x9B:
323 	case 0x9C:	goto yy56;
324 	default:	goto yy10;
325 	}
326 yy30:
327 	yych = *++YYCURSOR;
328 	switch (yych) {
329 	case 0xB6:
330 	case 0xBE:
331 	case 0xBF:	goto yy56;
332 	default:	goto yy10;
333 	}
334 yy31:
335 	yych = *++YYCURSOR;
336 	switch (yych) {
337 	case 0x80:
338 	case 0x81:
339 	case 0x82:
340 	case 0x83:
341 	case 0x84:
342 	case 0x85:
343 	case 0x87:
344 	case 0x88:	goto yy56;
345 	default:	goto yy10;
346 	}
347 yy32:
348 	yych = *++YYCURSOR;
349 	switch (yych) {
350 	case 0xA3:
351 	case 0xA4:
352 	case 0xA5:
353 	case 0xA6:
354 	case 0xA9:
355 	case 0xAA:
356 	case 0xAB:
357 	case 0xB0:
358 	case 0xB1:
359 	case 0xB3:
360 	case 0xB4:
361 	case 0xB5:
362 	case 0xB6:
363 	case 0xB7:
364 	case 0xB8:	goto yy56;
365 	default:	goto yy10;
366 	}
367 yy33:
368 	yych = *++YYCURSOR;
369 	switch (yych) {
370 	case 0xB0:
371 	case 0xB1:
372 	case 0xB2:
373 	case 0xB3:
374 	case 0xB4:
375 	case 0xB5:
376 	case 0xB6:
377 	case 0xB7:
378 	case 0xB8:
379 	case 0xB9:
380 	case 0xBA:
381 	case 0xBB:
382 	case 0xBC:
383 	case 0xBD:
384 	case 0xBE:
385 	case 0xBF:	goto yy56;
386 	default:	goto yy10;
387 	}
388 yy34:
389 	yych = *++YYCURSOR;
390 	switch (yych) {
391 	case 0x80:
392 	case 0x88:
393 	case 0x89:	goto yy56;
394 	default:	goto yy10;
395 	}
396 yy35:
397 	yych = *++YYCURSOR;
398 	switch (yych) {
399 	case 0x99:
400 	case 0x9A:	goto yy56;
401 	default:	goto yy10;
402 	}
403 yy36:
404 	yych = *++YYCURSOR;
405 	switch (yych) {
406 	case 0x95:
407 	case 0x97:
408 	case 0xA1:
409 	case 0xA3:
410 	case 0xA4:
411 	case 0xAD:
412 	case 0xAE:
413 	case 0xAF:
414 	case 0xB0:
415 	case 0xB1:
416 	case 0xB2:	goto yy56;
417 	default:	goto yy10;
418 	}
419 yy37:
420 	yych = *++YYCURSOR;
421 	switch (yych) {
422 	case 0x84:
423 	case 0xB5:
424 	case 0xBB:
425 	case 0xBD:
426 	case 0xBE:
427 	case 0xBF:	goto yy56;
428 	default:	goto yy10;
429 	}
430 yy38:
431 	yych = *++YYCURSOR;
432 	switch (yych) {
433 	case 0x80:
434 	case 0x81:
435 	case 0x83:
436 	case 0x84:	goto yy56;
437 	default:	goto yy10;
438 	}
439 yy39:
440 	yych = *++YYCURSOR;
441 	switch (yych) {
442 	case 0x82:
443 	case 0xA1:
444 	case 0xA6:
445 	case 0xA7:
446 	case 0xAA:	goto yy56;
447 	default:	goto yy10;
448 	}
449 yy40:
450 	yych = *++YYCURSOR;
451 	switch (yych) {
452 	case 0xA7:
453 	case 0xAA:
454 	case 0xAB:
455 	case 0xAC:
456 	case 0xAE:
457 	case 0xB2:
458 	case 0xB3:	goto yy56;
459 	default:	goto yy10;
460 	}
461 yy41:
462 	yych = *++YYCURSOR;
463 	switch (yych) {
464 	case 0xA4:
465 	case 0xA5:
466 	case 0xA6:
467 	case 0xA7:
468 	case 0xA8:
469 	case 0xA9:
470 	case 0xAA:
471 	case 0xAB:
472 	case 0xB4:
473 	case 0xB5:	goto yy56;
474 	default:	goto yy10;
475 	}
476 yy42:
477 	yych = *++YYCURSOR;
478 	switch (yych) {
479 	case 0xA1:
480 	case 0xB2:
481 	case 0xB3:	goto yy56;
482 	default:	goto yy10;
483 	}
484 yy43:
485 	yych = *++YYCURSOR;
486 	switch (yych) {
487 	case 0xAE:
488 	case 0xAF:	goto yy56;
489 	default:	goto yy10;
490 	}
491 yy44:
492 	yych = *++YYCURSOR;
493 	switch (yych) {
494 	case 0xA3:
495 	case 0xA4:
496 	case 0xA7:	goto yy56;
497 	default:	goto yy10;
498 	}
499 yy45:
500 	yych = *++YYCURSOR;
501 	switch (yych) {
502 	case 0x80:
503 	case 0x81:
504 	case 0xB4:
505 	case 0xB5:
506 	case 0xB6:
507 	case 0xB7:
508 	case 0xB8:
509 	case 0xB9:
510 	case 0xBA:
511 	case 0xBB:
512 	case 0xBC:
513 	case 0xBD:
514 	case 0xBE:
515 	case 0xBF:	goto yy56;
516 	default:	goto yy10;
517 	}
518 yy46:
519 	yych = *++YYCURSOR;
520 	switch (yych) {
521 	case 0x80:
522 	case 0x81:
523 	case 0x82:
524 	case 0x83:	goto yy56;
525 	default:	goto yy10;
526 	}
527 yy47:
528 	yych = *++YYCURSOR;
529 	switch (yych) {
530 	case 0x92:
531 	case 0x93:	goto yy56;
532 	default:	goto yy10;
533 	}
534 yy48:
535 	yych = *++YYCURSOR;
536 	switch (yych) {
537 	case 0x83:
538 	case 0xB4:
539 	case 0xB5:
540 	case 0xBA:
541 	case 0xBB:
542 	case 0xBD:
543 	case 0xBE:
544 	case 0xBF:	goto yy56;
545 	default:	goto yy10;
546 	}
547 yy49:
548 	yych = *++YYCURSOR;
549 	switch (yych) {
550 	case 0xAF:
551 	case 0xB0:
552 	case 0xB3:
553 	case 0xB4:	goto yy56;
554 	default:	goto yy10;
555 	}
556 yy50:
557 	yych = *++YYCURSOR;
558 	switch (yych) {
559 	case 0x8D:
560 	case 0xBB:
561 	case 0xBD:	goto yy56;
562 	default:	goto yy10;
563 	}
564 yy51:
565 	yych = *++YYCURSOR;
566 	switch (yych) {
567 	case 0xAB:
568 	case 0xAE:
569 	case 0xAF:
570 	case 0xB5:	goto yy56;
571 	default:	goto yy10;
572 	}
573 yy52:
574 	yych = *++YYCURSOR;
575 	switch (yych) {
576 	case 0xA3:
577 	case 0xA4:
578 	case 0xA6:
579 	case 0xA7:
580 	case 0xA9:
581 	case 0xAA:
582 	case 0xAC:	goto yy56;
583 	default:	goto yy10;
584 	}
585 yy53:
586 	yych = *++YYCURSOR;
587 	switch (yych) {
588 	case 0x80:	goto yy58;
589 	case 0x82:	goto yy59;
590 	case 0x84:	goto yy60;
591 	case 0x86:	goto yy61;
592 	case 0x87:	goto yy15;
593 	case 0x88:	goto yy62;
594 	case 0x8B:	goto yy63;
595 	case 0x8C:	goto yy12;
596 	case 0x8D:	goto yy64;
597 	case 0x92:	goto yy65;
598 	case 0x93:	goto yy66;
599 	case 0x96:	goto yy67;
600 	case 0x98:	goto yy68;
601 	case 0x9A:	goto yy69;
602 	default:	goto yy10;
603 	}
604 yy54:
605 	yych = *++YYCURSOR;
606 	switch (yych) {
607 	case 0xBD:	goto yy70;
608 	default:	goto yy10;
609 	}
610 yy55:
611 	yych = *++YYCURSOR;
612 	switch (yych) {
613 	case 0x85:	goto yy71;
614 	default:	goto yy10;
615 	}
616 yy56:
617 	++YYCURSOR;
618 #line 13 "encodings/unicode_group_Mc_8_encoding_policy_substitute.re"
619 	{ goto Mc; }
620 #line 621 "encodings/unicode_group_Mc_8_encoding_policy_substitute.c"
621 yy58:
622 	yych = *++YYCURSOR;
623 	switch (yych) {
624 	case 0x80:
625 	case 0x82:	goto yy56;
626 	default:	goto yy10;
627 	}
628 yy59:
629 	yych = *++YYCURSOR;
630 	switch (yych) {
631 	case 0x82:
632 	case 0xB0:
633 	case 0xB1:
634 	case 0xB2:
635 	case 0xB7:
636 	case 0xB8:	goto yy56;
637 	default:	goto yy10;
638 	}
639 yy60:
640 	yych = *++YYCURSOR;
641 	switch (yych) {
642 	case 0xAC:	goto yy56;
643 	default:	goto yy10;
644 	}
645 yy61:
646 	yych = *++YYCURSOR;
647 	switch (yych) {
648 	case 0x82:
649 	case 0xB3:
650 	case 0xB4:
651 	case 0xB5:
652 	case 0xBF:	goto yy56;
653 	default:	goto yy10;
654 	}
655 yy62:
656 	yych = *++YYCURSOR;
657 	switch (yych) {
658 	case 0xAC:
659 	case 0xAD:
660 	case 0xAE:
661 	case 0xB2:
662 	case 0xB3:
663 	case 0xB5:	goto yy56;
664 	default:	goto yy10;
665 	}
666 yy63:
667 	yych = *++YYCURSOR;
668 	switch (yych) {
669 	case 0xA0:
670 	case 0xA1:
671 	case 0xA2:	goto yy56;
672 	default:	goto yy10;
673 	}
674 yy64:
675 	yych = *++YYCURSOR;
676 	switch (yych) {
677 	case 0x81:
678 	case 0x82:
679 	case 0x83:
680 	case 0x84:
681 	case 0x87:
682 	case 0x88:
683 	case 0x8B:
684 	case 0x8C:
685 	case 0x8D:
686 	case 0x97:
687 	case 0xA2:
688 	case 0xA3:	goto yy56;
689 	default:	goto yy10;
690 	}
691 yy65:
692 	yych = *++YYCURSOR;
693 	switch (yych) {
694 	case 0xB0:
695 	case 0xB1:
696 	case 0xB2:
697 	case 0xB9:
698 	case 0xBB:
699 	case 0xBC:
700 	case 0xBD:
701 	case 0xBE:	goto yy56;
702 	default:	goto yy10;
703 	}
704 yy66:
705 	yych = *++YYCURSOR;
706 	switch (yych) {
707 	case 0x81:	goto yy56;
708 	default:	goto yy10;
709 	}
710 yy67:
711 	yych = *++YYCURSOR;
712 	switch (yych) {
713 	case 0xAF:
714 	case 0xB0:
715 	case 0xB1:
716 	case 0xB8:
717 	case 0xB9:
718 	case 0xBA:
719 	case 0xBB:
720 	case 0xBE:	goto yy56;
721 	default:	goto yy10;
722 	}
723 yy68:
724 	yych = *++YYCURSOR;
725 	switch (yych) {
726 	case 0xB0:
727 	case 0xB1:
728 	case 0xB2:
729 	case 0xBB:
730 	case 0xBC:
731 	case 0xBE:	goto yy56;
732 	default:	goto yy10;
733 	}
734 yy69:
735 	yych = *++YYCURSOR;
736 	switch (yych) {
737 	case 0xAC:
738 	case 0xAE:
739 	case 0xAF:
740 	case 0xB6:	goto yy56;
741 	default:	goto yy10;
742 	}
743 yy70:
744 	yych = *++YYCURSOR;
745 	switch (yych) {
746 	case 0x91:
747 	case 0x92:
748 	case 0x93:
749 	case 0x94:
750 	case 0x95:
751 	case 0x96:
752 	case 0x97:
753 	case 0x98:
754 	case 0x99:
755 	case 0x9A:
756 	case 0x9B:
757 	case 0x9C:
758 	case 0x9D:
759 	case 0x9E:
760 	case 0x9F:
761 	case 0xA0:
762 	case 0xA1:
763 	case 0xA2:
764 	case 0xA3:
765 	case 0xA4:
766 	case 0xA5:
767 	case 0xA6:
768 	case 0xA7:
769 	case 0xA8:
770 	case 0xA9:
771 	case 0xAA:
772 	case 0xAB:
773 	case 0xAC:
774 	case 0xAD:
775 	case 0xAE:
776 	case 0xAF:
777 	case 0xB0:
778 	case 0xB1:
779 	case 0xB2:
780 	case 0xB3:
781 	case 0xB4:
782 	case 0xB5:
783 	case 0xB6:
784 	case 0xB7:
785 	case 0xB8:
786 	case 0xB9:
787 	case 0xBA:
788 	case 0xBB:
789 	case 0xBC:
790 	case 0xBD:
791 	case 0xBE:	goto yy56;
792 	default:	goto yy10;
793 	}
794 yy71:
795 	yych = *++YYCURSOR;
796 	switch (yych) {
797 	case 0xA5:
798 	case 0xA6:
799 	case 0xAD:
800 	case 0xAE:
801 	case 0xAF:
802 	case 0xB0:
803 	case 0xB1:
804 	case 0xB2:	goto yy56;
805 	default:	goto yy10;
806 	}
807 }
808 #line 15 "encodings/unicode_group_Mc_8_encoding_policy_substitute.re"
809 
810 }
811 static const unsigned int chars_Mc [] = {0x903,0x903,  0x93b,0x93b,  0x93e,0x940,  0x949,0x94c,  0x94e,0x94f,  0x982,0x983,  0x9be,0x9c0,  0x9c7,0x9c8,  0x9cb,0x9cc,  0x9d7,0x9d7,  0xa03,0xa03,  0xa3e,0xa40,  0xa83,0xa83,  0xabe,0xac0,  0xac9,0xac9,  0xacb,0xacc,  0xb02,0xb03,  0xb3e,0xb3e,  0xb40,0xb40,  0xb47,0xb48,  0xb4b,0xb4c,  0xb57,0xb57,  0xbbe,0xbbf,  0xbc1,0xbc2,  0xbc6,0xbc8,  0xbca,0xbcc,  0xbd7,0xbd7,  0xc01,0xc03,  0xc41,0xc44,  0xc82,0xc83,  0xcbe,0xcbe,  0xcc0,0xcc4,  0xcc7,0xcc8,  0xcca,0xccb,  0xcd5,0xcd6,  0xd02,0xd03,  0xd3e,0xd40,  0xd46,0xd48,  0xd4a,0xd4c,  0xd57,0xd57,  0xd82,0xd83,  0xdcf,0xdd1,  0xdd8,0xddf,  0xdf2,0xdf3,  0xf3e,0xf3f,  0xf7f,0xf7f,  0x102b,0x102c,  0x1031,0x1031,  0x1038,0x1038,  0x103b,0x103c,  0x1056,0x1057,  0x1062,0x1064,  0x1067,0x106d,  0x1083,0x1084,  0x1087,0x108c,  0x108f,0x108f,  0x109a,0x109c,  0x17b6,0x17b6,  0x17be,0x17c5,  0x17c7,0x17c8,  0x1923,0x1926,  0x1929,0x192b,  0x1930,0x1931,  0x1933,0x1938,  0x19b0,0x19c0,  0x19c8,0x19c9,  0x1a19,0x1a1a,  0x1a55,0x1a55,  0x1a57,0x1a57,  0x1a61,0x1a61,  0x1a63,0x1a64,  0x1a6d,0x1a72,  0x1b04,0x1b04,  0x1b35,0x1b35,  0x1b3b,0x1b3b,  0x1b3d,0x1b41,  0x1b43,0x1b44,  0x1b82,0x1b82,  0x1ba1,0x1ba1,  0x1ba6,0x1ba7,  0x1baa,0x1baa,  0x1be7,0x1be7,  0x1bea,0x1bec,  0x1bee,0x1bee,  0x1bf2,0x1bf3,  0x1c24,0x1c2b,  0x1c34,0x1c35,  0x1ce1,0x1ce1,  0x1cf2,0x1cf3,  0x302e,0x302f,  0xa823,0xa824,  0xa827,0xa827,  0xa880,0xa881,  0xa8b4,0xa8c3,  0xa952,0xa953,  0xa983,0xa983,  0xa9b4,0xa9b5,  0xa9ba,0xa9bb,  0xa9bd,0xa9c0,  0xaa2f,0xaa30,  0xaa33,0xaa34,  0xaa4d,0xaa4d,  0xaa7b,0xaa7b,  0xaa7d,0xaa7d,  0xaaeb,0xaaeb,  0xaaee,0xaaef,  0xaaf5,0xaaf5,  0xabe3,0xabe4,  0xabe6,0xabe7,  0xabe9,0xabea,  0xabec,0xabec,  0x11000,0x11000,  0x11002,0x11002,  0x11082,0x11082,  0x110b0,0x110b2,  0x110b7,0x110b8,  0x1112c,0x1112c,  0x11182,0x11182,  0x111b3,0x111b5,  0x111bf,0x111c0,  0x1122c,0x1122e,  0x11232,0x11233,  0x11235,0x11235,  0x112e0,0x112e2,  0x11302,0x11303,  0x1133e,0x1133f,  0x11341,0x11344,  0x11347,0x11348,  0x1134b,0x1134d,  0x11357,0x11357,  0x11362,0x11363,  0x114b0,0x114b2,  0x114b9,0x114b9,  0x114bb,0x114be,  0x114c1,0x114c1,  0x115af,0x115b1,  0x115b8,0x115bb,  0x115be,0x115be,  0x11630,0x11632,  0x1163b,0x1163c,  0x1163e,0x1163e,  0x116ac,0x116ac,  0x116ae,0x116af,  0x116b6,0x116b6,  0x16f51,0x16f7e,  0x1d165,0x1d166,  0x1d16d,0x1d172,  0x0,0x0};
encode_utf8(const unsigned int * ranges,unsigned int ranges_count,unsigned int * s)812 static unsigned int encode_utf8 (const unsigned int * ranges, unsigned int ranges_count, unsigned int * s)
813 {
814 	unsigned int * const s_start = s;
815 	for (unsigned int i = 0; i < ranges_count - 2; i += 2)
816 		for (unsigned int j = ranges[i]; j <= ranges[i + 1]; ++j)
817 			s += re2c::utf8::rune_to_bytes (s, j);
818 	re2c::utf8::rune_to_bytes (s, ranges[ranges_count - 1]);
819 	return s - s_start + 1;
820 }
821 
main()822 int main ()
823 {
824 	unsigned int * buffer_Mc = new unsigned int [1600];
825 	YYCTYPE * s = (YYCTYPE *) buffer_Mc;
826 	unsigned int buffer_len = encode_utf8 (chars_Mc, sizeof (chars_Mc) / sizeof (unsigned int), buffer_Mc);
827 	/* convert 32-bit code units to YYCTYPE; reuse the same buffer */
828 	for (unsigned int i = 0; i < buffer_len; ++i) s[i] = buffer_Mc[i];
829 	if (!scan (s, s + buffer_len))
830 		printf("test 'Mc' failed\n");
831 	delete [] buffer_Mc;
832 	return 0;
833 }
834