1 /* Generated by re2c */
2 #line 1 "encodings/unicode_group_Pe_8_encoding_policy_ignore.re"
3 // re2c $INPUT -o $OUTPUT -8 --encoding-policy ignore
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 Pe:
12 
13 #line 14 "encodings/unicode_group_Pe_8_encoding_policy_ignore.c"
14 {
15 	YYCTYPE yych;
16 	yych = *YYCURSOR;
17 	switch (yych) {
18 	case ')':
19 	case ']':
20 	case '}':	goto yy4;
21 	case 0xE0:	goto yy6;
22 	case 0xE1:	goto yy7;
23 	case 0xE2:	goto yy8;
24 	case 0xE3:	goto yy9;
25 	case 0xEF:	goto yy10;
26 	default:	goto yy2;
27 	}
28 yy2:
29 	++YYCURSOR;
30 yy3:
31 #line 14 "encodings/unicode_group_Pe_8_encoding_policy_ignore.re"
32 	{ return YYCURSOR == limit; }
33 #line 34 "encodings/unicode_group_Pe_8_encoding_policy_ignore.c"
34 yy4:
35 	++YYCURSOR;
36 #line 13 "encodings/unicode_group_Pe_8_encoding_policy_ignore.re"
37 	{ goto Pe; }
38 #line 39 "encodings/unicode_group_Pe_8_encoding_policy_ignore.c"
39 yy6:
40 	yych = *(YYMARKER = ++YYCURSOR);
41 	switch (yych) {
42 	case 0xBC:	goto yy11;
43 	default:	goto yy3;
44 	}
45 yy7:
46 	yych = *(YYMARKER = ++YYCURSOR);
47 	switch (yych) {
48 	case 0x9A:	goto yy13;
49 	default:	goto yy3;
50 	}
51 yy8:
52 	yych = *(YYMARKER = ++YYCURSOR);
53 	switch (yych) {
54 	case 0x81:	goto yy14;
55 	case 0x82:	goto yy15;
56 	case 0x8C:	goto yy16;
57 	case 0x9D:	goto yy17;
58 	case 0x9F:	goto yy18;
59 	case 0xA6:	goto yy19;
60 	case 0xA7:	goto yy20;
61 	case 0xB8:	goto yy21;
62 	default:	goto yy3;
63 	}
64 yy9:
65 	yych = *(YYMARKER = ++YYCURSOR);
66 	switch (yych) {
67 	case 0x80:	goto yy22;
68 	default:	goto yy3;
69 	}
70 yy10:
71 	yych = *(YYMARKER = ++YYCURSOR);
72 	switch (yych) {
73 	case 0xB4:	goto yy23;
74 	case 0xB8:	goto yy24;
75 	case 0xB9:	goto yy25;
76 	case 0xBC:	goto yy26;
77 	case 0xBD:	goto yy27;
78 	default:	goto yy3;
79 	}
80 yy11:
81 	yych = *++YYCURSOR;
82 	switch (yych) {
83 	case 0xBB:
84 	case 0xBD:	goto yy4;
85 	default:	goto yy12;
86 	}
87 yy12:
88 	YYCURSOR = YYMARKER;
89 	goto yy3;
90 yy13:
91 	yych = *++YYCURSOR;
92 	switch (yych) {
93 	case 0x9C:	goto yy4;
94 	default:	goto yy12;
95 	}
96 yy14:
97 	yych = *++YYCURSOR;
98 	switch (yych) {
99 	case 0x86:
100 	case 0xBE:	goto yy4;
101 	default:	goto yy12;
102 	}
103 yy15:
104 	yych = *++YYCURSOR;
105 	switch (yych) {
106 	case 0x8E:	goto yy4;
107 	default:	goto yy12;
108 	}
109 yy16:
110 	yych = *++YYCURSOR;
111 	switch (yych) {
112 	case 0x89:
113 	case 0x8B:
114 	case 0xAA:	goto yy4;
115 	default:	goto yy12;
116 	}
117 yy17:
118 	yych = *++YYCURSOR;
119 	switch (yych) {
120 	case 0xA9:
121 	case 0xAB:
122 	case 0xAD:
123 	case 0xAF:
124 	case 0xB1:
125 	case 0xB3:
126 	case 0xB5:	goto yy4;
127 	default:	goto yy12;
128 	}
129 yy18:
130 	yych = *++YYCURSOR;
131 	switch (yych) {
132 	case 0x86:
133 	case 0xA7:
134 	case 0xA9:
135 	case 0xAB:
136 	case 0xAD:
137 	case 0xAF:	goto yy4;
138 	default:	goto yy12;
139 	}
140 yy19:
141 	yych = *++YYCURSOR;
142 	switch (yych) {
143 	case 0x84:
144 	case 0x86:
145 	case 0x88:
146 	case 0x8A:
147 	case 0x8C:
148 	case 0x8E:
149 	case 0x90:
150 	case 0x92:
151 	case 0x94:
152 	case 0x96:
153 	case 0x98:	goto yy4;
154 	default:	goto yy12;
155 	}
156 yy20:
157 	yych = *++YYCURSOR;
158 	switch (yych) {
159 	case 0x99:
160 	case 0x9B:
161 	case 0xBD:	goto yy4;
162 	default:	goto yy12;
163 	}
164 yy21:
165 	yych = *++YYCURSOR;
166 	switch (yych) {
167 	case 0xA3:
168 	case 0xA5:
169 	case 0xA7:
170 	case 0xA9:	goto yy4;
171 	default:	goto yy12;
172 	}
173 yy22:
174 	yych = *++YYCURSOR;
175 	switch (yych) {
176 	case 0x89:
177 	case 0x8B:
178 	case 0x8D:
179 	case 0x8F:
180 	case 0x91:
181 	case 0x95:
182 	case 0x97:
183 	case 0x99:
184 	case 0x9B:
185 	case 0x9E:
186 	case 0x9F:	goto yy4;
187 	default:	goto yy12;
188 	}
189 yy23:
190 	yych = *++YYCURSOR;
191 	switch (yych) {
192 	case 0xBE:	goto yy4;
193 	default:	goto yy12;
194 	}
195 yy24:
196 	yych = *++YYCURSOR;
197 	switch (yych) {
198 	case 0x98:
199 	case 0xB6:
200 	case 0xB8:
201 	case 0xBA:
202 	case 0xBC:
203 	case 0xBE:	goto yy4;
204 	default:	goto yy12;
205 	}
206 yy25:
207 	yych = *++YYCURSOR;
208 	switch (yych) {
209 	case 0x80:
210 	case 0x82:
211 	case 0x84:
212 	case 0x88:
213 	case 0x9A:
214 	case 0x9C:
215 	case 0x9E:	goto yy4;
216 	default:	goto yy12;
217 	}
218 yy26:
219 	yych = *++YYCURSOR;
220 	switch (yych) {
221 	case 0x89:
222 	case 0xBD:	goto yy4;
223 	default:	goto yy12;
224 	}
225 yy27:
226 	yych = *++YYCURSOR;
227 	switch (yych) {
228 	case 0x9D:
229 	case 0xA0:
230 	case 0xA3:	goto yy4;
231 	default:	goto yy12;
232 	}
233 }
234 #line 15 "encodings/unicode_group_Pe_8_encoding_policy_ignore.re"
235 
236 }
237 static const unsigned int chars_Pe [] = {0x29,0x29,  0x5d,0x5d,  0x7d,0x7d,  0xf3b,0xf3b,  0xf3d,0xf3d,  0x169c,0x169c,  0x2046,0x2046,  0x207e,0x207e,  0x208e,0x208e,  0x2309,0x2309,  0x230b,0x230b,  0x232a,0x232a,  0x2769,0x2769,  0x276b,0x276b,  0x276d,0x276d,  0x276f,0x276f,  0x2771,0x2771,  0x2773,0x2773,  0x2775,0x2775,  0x27c6,0x27c6,  0x27e7,0x27e7,  0x27e9,0x27e9,  0x27eb,0x27eb,  0x27ed,0x27ed,  0x27ef,0x27ef,  0x2984,0x2984,  0x2986,0x2986,  0x2988,0x2988,  0x298a,0x298a,  0x298c,0x298c,  0x298e,0x298e,  0x2990,0x2990,  0x2992,0x2992,  0x2994,0x2994,  0x2996,0x2996,  0x2998,0x2998,  0x29d9,0x29d9,  0x29db,0x29db,  0x29fd,0x29fd,  0x2e23,0x2e23,  0x2e25,0x2e25,  0x2e27,0x2e27,  0x2e29,0x2e29,  0x3009,0x3009,  0x300b,0x300b,  0x300d,0x300d,  0x300f,0x300f,  0x3011,0x3011,  0x3015,0x3015,  0x3017,0x3017,  0x3019,0x3019,  0x301b,0x301b,  0x301e,0x301f,  0xfd3e,0xfd3e,  0xfe18,0xfe18,  0xfe36,0xfe36,  0xfe38,0xfe38,  0xfe3a,0xfe3a,  0xfe3c,0xfe3c,  0xfe3e,0xfe3e,  0xfe40,0xfe40,  0xfe42,0xfe42,  0xfe44,0xfe44,  0xfe48,0xfe48,  0xfe5a,0xfe5a,  0xfe5c,0xfe5c,  0xfe5e,0xfe5e,  0xff09,0xff09,  0xff3d,0xff3d,  0xff5d,0xff5d,  0xff60,0xff60,  0xff63,0xff63,  0x0,0x0};
encode_utf8(const unsigned int * ranges,unsigned int ranges_count,unsigned int * s)238 static unsigned int encode_utf8 (const unsigned int * ranges, unsigned int ranges_count, unsigned int * s)
239 {
240 	unsigned int * const s_start = s;
241 	for (unsigned int i = 0; i < ranges_count - 2; i += 2)
242 		for (unsigned int j = ranges[i]; j <= ranges[i + 1]; ++j)
243 			s += re2c::utf8::rune_to_bytes (s, j);
244 	re2c::utf8::rune_to_bytes (s, ranges[ranges_count - 1]);
245 	return s - s_start + 1;
246 }
247 
main()248 int main ()
249 {
250 	unsigned int * buffer_Pe = new unsigned int [296];
251 	YYCTYPE * s = (YYCTYPE *) buffer_Pe;
252 	unsigned int buffer_len = encode_utf8 (chars_Pe, sizeof (chars_Pe) / sizeof (unsigned int), buffer_Pe);
253 	/* convert 32-bit code units to YYCTYPE; reuse the same buffer */
254 	for (unsigned int i = 0; i < buffer_len; ++i) s[i] = buffer_Pe[i];
255 	if (!scan (s, s + buffer_len))
256 		printf("test 'Pe' failed\n");
257 	delete [] buffer_Pe;
258 	return 0;
259 }
260