1 /* Generated by re2c */
2 #line 1 "bug57.re"
3 // re2c $INPUT -o $OUTPUT
4 #include <stdio.h>
5 
scan(const char * p)6 int scan(const char *p)
7 {
8 #define YYCTYPE char
9     const char *YYCURSOR = p;
10     const char *YYMARKER;
11 
12 
13 #line 14 "bug57.c"
14 {
15 	YYCTYPE yych;
16 	unsigned int yyaccept = 0;
17 	yych = *YYCURSOR;
18 	switch (yych) {
19 	case '\n':	goto yy2;
20 	case '<':	goto yy5;
21 	case '\\':	goto yy6;
22 	case 'a':	goto yy7;
23 	default:	goto yy3;
24 	}
25 yy2:
26 #line 16 "bug57.re"
27 	{ return YYCURSOR - p; }
28 #line 29 "bug57.c"
29 yy3:
30 	++YYCURSOR;
31 yy4:
32 #line 17 "bug57.re"
33 	{ return 0; }
34 #line 35 "bug57.c"
35 yy5:
36 	yyaccept = 0;
37 	yych = *(YYMARKER = ++YYCURSOR);
38 	switch (yych) {
39 	case '>':	goto yy9;
40 	case '\\':	goto yy11;
41 	case 'x':
42 	case 'y':	goto yy13;
43 	default:	goto yy4;
44 	}
45 yy6:
46 	yych = *++YYCURSOR;
47 	switch (yych) {
48 	case 'b':	goto yy7;
49 	default:	goto yy4;
50 	}
51 yy7:
52 	yyaccept = 1;
53 	yych = *(YYMARKER = ++YYCURSOR);
54 	switch (yych) {
55 	case '\\':	goto yy15;
56 	case 'a':	goto yy7;
57 	default:	goto yy2;
58 	}
59 yy9:
60 	++YYCURSOR;
61 #line 15 "bug57.re"
62 	{ return YYCURSOR - p; }
63 #line 64 "bug57.c"
64 yy11:
65 	yych = *++YYCURSOR;
66 	switch (yych) {
67 	case 'b':	goto yy13;
68 	default:	goto yy12;
69 	}
70 yy12:
71 	YYCURSOR = YYMARKER;
72 	if (yyaccept == 0) {
73 		goto yy4;
74 	} else {
75 		goto yy2;
76 	}
77 yy13:
78 	yych = *++YYCURSOR;
79 	switch (yych) {
80 	case '>':	goto yy9;
81 	case '\\':	goto yy11;
82 	case 'x':
83 	case 'y':	goto yy13;
84 	default:	goto yy12;
85 	}
86 yy15:
87 	yych = *++YYCURSOR;
88 	switch (yych) {
89 	case 'b':	goto yy7;
90 	default:	goto yy12;
91 	}
92 }
93 #line 18 "bug57.re"
94 
95 }
96 
main()97 int main()
98 {
99     const char *str = "aaa\\baaa";
100     int res = scan(str);
101     printf("%d: %s\n", res, str + res);
102     return 0;
103 }
104 
105 bug57.re:16:26: warning: rule matches empty string [-Wmatch-empty-string]
106