1 /* Generated by re2c */
2 #line 1 "bug1297658.re"
3 // re2c $INPUT -o $OUTPUT
4 #include <string.h>
5 #include <stdlib.h>
6 #include <iostream>
7
8 struct Scanner
9 {
ScannerScanner10 Scanner(char *_inp)
11 : inp(_inp), buf(NULL), ptr(NULL), len(0), siz(strlen(_inp)), line(0)
12 {
13 fill(0);
14 cur = buf;
15 }
16
fillScanner17 void fill(size_t n)
18 {
19 n++;
20 buf = (char*)realloc(buf, len + n + 1);
21 if ((len += n) > siz)
22 {
23 len = siz;
24 }
25 memcpy(buf, inp, len);
26 buf[len] = '\0';
27 lim = buf + len;
28 eof = buf + siz - 1;
29 }
30
31 char *inp;
32 char *cur;
33 char *buf;
34 char *ptr;
35 char *lim;
36 char *eof;
37 size_t len;
38 size_t siz;
39 size_t line;
40 };
41
42 enum What
43 {
44 UNEXPECTED,
45 FCON,
46 EOI
47 };
48
49 #define YYCTYPE char
50 #define YYCURSOR s.cur
51 #define YYLIMIT s.lim
52 #define YYMARKER s.ptr
53 #define YYFILL(n) s.fill(n)
54 #define RET(n) return (n)
55
scan(Scanner & s)56 int scan(Scanner &s)
57 {
58 std:
59
60
61 #line 62 "bug1297658.c"
62 {
63 YYCTYPE yych;
64 if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
65 yych = *YYCURSOR;
66 switch (yych) {
67 case '\n': goto yy4;
68 case '.': goto yy6;
69 case '0': goto yy8;
70 default: goto yy2;
71 }
72 yy2:
73 ++YYCURSOR;
74 yy3:
75 #line 75 "bug1297658.re"
76 {
77 RET(UNEXPECTED);
78 }
79 #line 80 "bug1297658.c"
80 yy4:
81 ++YYCURSOR;
82 #line 67 "bug1297658.re"
83 {
84 s.line++;
85 if(1||s.cur == s.eof) RET(EOI);
86 goto std;
87 }
88 #line 89 "bug1297658.c"
89 yy6:
90 yych = *++YYCURSOR;
91 switch (yych) {
92 case 'L': goto yy9;
93 case 'e': goto yy10;
94 default: goto yy7;
95 }
96 yy7:
97 #line 62 "bug1297658.re"
98 {
99 RET(FCON);
100 }
101 #line 102 "bug1297658.c"
102 yy8:
103 yych = *(YYMARKER = ++YYCURSOR);
104 switch (yych) {
105 case '.': goto yy6;
106 case '0': goto yy11;
107 default: goto yy3;
108 }
109 yy9:
110 ++YYCURSOR;
111 goto yy7;
112 yy10:
113 yych = *++YYCURSOR;
114 switch (yych) {
115 case 'L': goto yy9;
116 default: goto yy7;
117 }
118 yy11:
119 ++YYCURSOR;
120 if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
121 yych = *YYCURSOR;
122 switch (yych) {
123 case '.': goto yy6;
124 case '0': goto yy11;
125 default: goto yy13;
126 }
127 yy13:
128 YYCURSOR = YYMARKER;
129 goto yy3;
130 }
131 #line 78 "bug1297658.re"
132
133 }
134
main(int,char **)135 int main(int,char**)
136 {
137 Scanner s("\n0.eL\n00.eL\n");
138
139 std::cout << "RES(2): " << scan(s) << std::endl;
140 std::cout << "RES(1): " << scan(s) << std::endl;
141 std::cout << "RES(2): " << scan(s) << std::endl;
142 std::cout << "RES(1): " << scan(s) << std::endl;
143 std::cout << "RES(2): " << scan(s) << std::endl;
144 std::cout << "RES(0): " << scan(s) << std::endl;
145 }
146