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