1 /* Generated by re2c */ 2 #line 1 "bug1163046.re" 3 // re2c $INPUT -o $OUTPUT 4 #include <iostream> 5 6 #define YYCTYPE unsigned char 7 #define YYCURSOR cursor 8 #define YYLIMIT cursor 9 #define YYMARKER marker 10 #define YYFILL(n) 11 scan(const char * text)12bool scan(const char *text) 13 { 14 YYCTYPE *start = (YYCTYPE *)text; 15 YYCTYPE *cursor = (YYCTYPE *)text; 16 YYCTYPE *marker = (YYCTYPE *)text; 17 next: 18 YYCTYPE *token = cursor; 19 20 #line 21 "bug1163046.c" 21 { 22 YYCTYPE yych; 23 if ((YYLIMIT - YYCURSOR) < 45) YYFILL(45); 24 yych = *YYCURSOR; 25 switch (yych) { 26 case 0x00: goto yy2; 27 case '(': goto yy6; 28 default: goto yy4; 29 } 30 yy2: 31 ++YYCURSOR; 32 #line 26 "bug1163046.re" 33 { return false; } 34 #line 35 "bug1163046.c" 35 yy4: 36 ++YYCURSOR; 37 yy5: 38 #line 24 "bug1163046.re" 39 { goto next; } 40 #line 41 "bug1163046.c" 41 yy6: 42 yych = *(YYMARKER = ++YYCURSOR); 43 switch (yych) { 44 case 'T': 45 case 't': goto yy7; 46 default: goto yy5; 47 } 48 yy7: 49 yych = *++YYCURSOR; 50 switch (yych) { 51 case 'H': 52 case 'h': goto yy9; 53 default: goto yy8; 54 } 55 yy8: 56 YYCURSOR = YYMARKER; 57 goto yy5; 58 yy9: 59 yych = *++YYCURSOR; 60 switch (yych) { 61 case 'I': 62 case 'i': goto yy10; 63 default: goto yy8; 64 } 65 yy10: 66 yych = *++YYCURSOR; 67 switch (yych) { 68 case 'S': 69 case 's': goto yy11; 70 default: goto yy8; 71 } 72 yy11: 73 yych = *++YYCURSOR; 74 switch (yych) { 75 case ' ': goto yy12; 76 default: goto yy8; 77 } 78 yy12: 79 yych = *++YYCURSOR; 80 switch (yych) { 81 case 'F': 82 case 'f': goto yy13; 83 default: goto yy8; 84 } 85 yy13: 86 yych = *++YYCURSOR; 87 switch (yych) { 88 case 'I': 89 case 'i': goto yy14; 90 default: goto yy8; 91 } 92 yy14: 93 yych = *++YYCURSOR; 94 switch (yych) { 95 case 'L': 96 case 'l': goto yy15; 97 default: goto yy8; 98 } 99 yy15: 100 yych = *++YYCURSOR; 101 switch (yych) { 102 case 'E': 103 case 'e': goto yy16; 104 default: goto yy8; 105 } 106 yy16: 107 yych = *++YYCURSOR; 108 switch (yych) { 109 case ' ': goto yy17; 110 default: goto yy8; 111 } 112 yy17: 113 yych = *++YYCURSOR; 114 switch (yych) { 115 case 'M': 116 case 'm': goto yy18; 117 default: goto yy8; 118 } 119 yy18: 120 yych = *++YYCURSOR; 121 switch (yych) { 122 case 'U': 123 case 'u': goto yy19; 124 default: goto yy8; 125 } 126 yy19: 127 yych = *++YYCURSOR; 128 switch (yych) { 129 case 'S': 130 case 's': goto yy20; 131 default: goto yy8; 132 } 133 yy20: 134 yych = *++YYCURSOR; 135 switch (yych) { 136 case 'T': 137 case 't': goto yy21; 138 default: goto yy8; 139 } 140 yy21: 141 yych = *++YYCURSOR; 142 switch (yych) { 143 case ' ': goto yy22; 144 default: goto yy8; 145 } 146 yy22: 147 yych = *++YYCURSOR; 148 switch (yych) { 149 case 'B': 150 case 'b': goto yy23; 151 default: goto yy8; 152 } 153 yy23: 154 yych = *++YYCURSOR; 155 switch (yych) { 156 case 'E': 157 case 'e': goto yy24; 158 default: goto yy8; 159 } 160 yy24: 161 yych = *++YYCURSOR; 162 switch (yych) { 163 case ' ': goto yy25; 164 default: goto yy8; 165 } 166 yy25: 167 yych = *++YYCURSOR; 168 switch (yych) { 169 case 'C': 170 case 'c': goto yy26; 171 default: goto yy8; 172 } 173 yy26: 174 yych = *++YYCURSOR; 175 switch (yych) { 176 case 'O': 177 case 'o': goto yy27; 178 default: goto yy8; 179 } 180 yy27: 181 yych = *++YYCURSOR; 182 switch (yych) { 183 case 'N': 184 case 'n': goto yy28; 185 default: goto yy8; 186 } 187 yy28: 188 yych = *++YYCURSOR; 189 switch (yych) { 190 case 'V': 191 case 'v': goto yy29; 192 default: goto yy8; 193 } 194 yy29: 195 yych = *++YYCURSOR; 196 switch (yych) { 197 case 'E': 198 case 'e': goto yy30; 199 default: goto yy8; 200 } 201 yy30: 202 yych = *++YYCURSOR; 203 switch (yych) { 204 case 'R': 205 case 'r': goto yy31; 206 default: goto yy8; 207 } 208 yy31: 209 yych = *++YYCURSOR; 210 switch (yych) { 211 case 'T': 212 case 't': goto yy32; 213 default: goto yy8; 214 } 215 yy32: 216 yych = *++YYCURSOR; 217 switch (yych) { 218 case 'E': 219 case 'e': goto yy33; 220 default: goto yy8; 221 } 222 yy33: 223 yych = *++YYCURSOR; 224 switch (yych) { 225 case 'D': 226 case 'd': goto yy34; 227 default: goto yy8; 228 } 229 yy34: 230 yych = *++YYCURSOR; 231 switch (yych) { 232 case ' ': goto yy35; 233 default: goto yy8; 234 } 235 yy35: 236 yych = *++YYCURSOR; 237 switch (yych) { 238 case 'W': 239 case 'w': goto yy36; 240 default: goto yy8; 241 } 242 yy36: 243 yych = *++YYCURSOR; 244 switch (yych) { 245 case 'I': 246 case 'i': goto yy37; 247 default: goto yy8; 248 } 249 yy37: 250 yych = *++YYCURSOR; 251 switch (yych) { 252 case 'T': 253 case 't': goto yy38; 254 default: goto yy8; 255 } 256 yy38: 257 yych = *++YYCURSOR; 258 switch (yych) { 259 case 'H': 260 case 'h': goto yy39; 261 default: goto yy8; 262 } 263 yy39: 264 yych = *++YYCURSOR; 265 switch (yych) { 266 case ' ': goto yy40; 267 default: goto yy8; 268 } 269 yy40: 270 yych = *++YYCURSOR; 271 switch (yych) { 272 case 'B': 273 case 'b': goto yy41; 274 default: goto yy8; 275 } 276 yy41: 277 yych = *++YYCURSOR; 278 switch (yych) { 279 case 'I': 280 case 'i': goto yy42; 281 default: goto yy8; 282 } 283 yy42: 284 yych = *++YYCURSOR; 285 switch (yych) { 286 case 'N': 287 case 'n': goto yy43; 288 default: goto yy8; 289 } 290 yy43: 291 yych = *++YYCURSOR; 292 switch (yych) { 293 case 'H': 294 case 'h': goto yy44; 295 default: goto yy8; 296 } 297 yy44: 298 yych = *++YYCURSOR; 299 switch (yych) { 300 case 'E': 301 case 'e': goto yy45; 302 default: goto yy8; 303 } 304 yy45: 305 yych = *++YYCURSOR; 306 switch (yych) { 307 case 'X': 308 case 'x': goto yy46; 309 default: goto yy8; 310 } 311 yy46: 312 yych = *++YYCURSOR; 313 switch (yych) { 314 case ' ': goto yy47; 315 default: goto yy8; 316 } 317 yy47: 318 yych = *++YYCURSOR; 319 switch (yych) { 320 case '4': goto yy48; 321 default: goto yy8; 322 } 323 yy48: 324 yych = *++YYCURSOR; 325 switch (yych) { 326 case '.': goto yy49; 327 default: goto yy8; 328 } 329 yy49: 330 yych = *++YYCURSOR; 331 switch (yych) { 332 case '0': goto yy50; 333 default: goto yy8; 334 } 335 yy50: 336 yych = *++YYCURSOR; 337 switch (yych) { 338 case ')': goto yy51; 339 default: goto yy8; 340 } 341 yy51: 342 ++YYCURSOR; 343 #line 19 "bug1163046.re" 344 { 345 if (token == start || *(token - 1) == '\n') 346 return true; else goto next; 347 } 348 #line 349 "bug1163046.c" 349 } 350 #line 27 "bug1163046.re" 351 352 return false; 353 } 354 355 #define do_scan(str, expect) \ 356 res = scan(str) == expect ? 0 : 1; \ 357 std::cerr << str << "\t-\t" << (res ? "fail" : "ok") << std::endl; \ 358 result += res 359 360 #line 361 "bug1163046.c" 361 #define YYMAXFILL 45 362 #line 36 "bug1163046.re" 363 364 main(int,void **)365int main(int,void**) 366 { 367 int res, result = 0; 368 do_scan("(This file must be converted with BinHex 4.0)", 1); 369 do_scan("x(This file must be converted with BinHex 4.0)", 0); 370 do_scan("(This file must be converted with BinHex 4.0)x", 1); 371 do_scan("x(This file must be converted with BinHex 4.0)x", 0); 372 373 return result; 374 } 375