1 /* Generated by re2c */
2 #line 1 "bug1390174.re"
3 // re2c $INPUT -o $OUTPUT
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include <string.h>
7 
8 #define RET(n) return n
9 
scan(const char * s,int l)10 int scan(const char *s, int l) {
11 const char *p = s;
12 const char *q;
13 #define YYCTYPE         char
14 #define YYCURSOR        p
15 #define YYLIMIT         (s+l)
16 #define YYMARKER        q
17 #define YYFILL(n)
18 
19 #line 20 "bug1390174.c"
20 {
21 	YYCTYPE yych;
22 	if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
23 	yych = *YYCURSOR;
24 	switch (yych) {
25 	case '\n':	goto yy4;
26 	case 'A':
27 	case 'a':	goto yy6;
28 	default:	goto yy2;
29 	}
30 yy2:
31 	++YYCURSOR;
32 yy3:
33 #line 20 "bug1390174.re"
34 	{RET(0);}
35 #line 36 "bug1390174.c"
36 yy4:
37 	++YYCURSOR;
38 #line 19 "bug1390174.re"
39 	{RET(1);}
40 #line 41 "bug1390174.c"
41 yy6:
42 	yych = *(YYMARKER = ++YYCURSOR);
43 	switch (yych) {
44 	case '\n':	goto yy4;
45 	case 'A':
46 	case 'a':	goto yy7;
47 	default:	goto yy3;
48 	}
49 yy7:
50 	++YYCURSOR;
51 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
52 	yych = *YYCURSOR;
53 	switch (yych) {
54 	case '\n':	goto yy4;
55 	case 'A':
56 	case 'a':	goto yy7;
57 	default:	goto yy9;
58 	}
59 yy9:
60 	YYCURSOR = YYMARKER;
61 	goto yy3;
62 }
63 #line 21 "bug1390174.re"
64 
65 }
66 
_do_scan(int exp,const char * str,int len)67 void _do_scan(int exp, const char * str, int len)
68 {
69 	int ret = scan(str, len);
70 
71 	printf("%d %s %d\n", exp, exp == ret ? "==" : "!=", ret);
72 }
73 
74 #define do_scan(exp, str) _do_scan(exp, str, sizeof(str) - 1)
75 
main()76 main()
77 {
78 	do_scan(1, "a\n");
79 	do_scan(1, "aa\n");
80 	do_scan(1, "aaa\n");
81 	do_scan(1, "aaaa\n");
82 	do_scan(1, "\n");
83 
84 	do_scan(0, "q");
85 	do_scan(0, "a");
86 }
87