1 /* Generated by re2c */ 2 #line 1 "bug46_infinite_loop.re" 3 // re2c $INPUT -o $OUTPUT 4 #include <string.h> 5 #include <stdio.h> 6 main(int argc,char ** argv)7int main(int argc, char** argv) 8 { 9 char* YYCURSOR = argv[1]; 10 char* YYLIMIT = YYCURSOR + strlen(YYCURSOR); 11 #define YYFILL(n) do { } while(0) 12 13 14 #line 15 "bug46_infinite_loop.c" 15 { 16 unsigned char yych; 17 #line 14 "bug46_infinite_loop.re" 18 { } 19 #line 20 "bug46_infinite_loop.c" 20 } 21 #line 15 "bug46_infinite_loop.re" 22 23 24 /* BUG BEGINS HERE */ 25 26 #line 27 "bug46_infinite_loop.c" 27 { 28 unsigned char yych; 29 goto yy3; 30 yy4: 31 ++YYCURSOR; 32 yy3: 33 if (YYLIMIT <= YYCURSOR) YYFILL(1); 34 yych = *YYCURSOR; 35 switch (yych) { 36 case 'a': goto yy7; 37 case 'b': 38 case 'c': goto yy6; 39 default: goto yy4; 40 } 41 yy6: 42 #line 19 "bug46_infinite_loop.re" 43 { printf("exit 0\n"); return 0; } 44 #line 45 "bug46_infinite_loop.c" 45 yy7: 46 ++YYCURSOR; 47 goto yy6; 48 } 49 #line 20 "bug46_infinite_loop.re" 50 51 52 printf("exit 1\n"); 53 return 0; 54 } 55 bug46_infinite_loop.re:19:13: warning: rule matches empty string [-Wmatch-empty-string] 56