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