1 /* Generated by re2c */
2 #line 1 "input_custom_fgetc.re"
3 // re2c $INPUT -o $OUTPUT  --input custom
4 #include <stdio.h>
5 
peek(FILE * f)6 char peek (FILE * f)
7 {
8     char c = fgetc (f);
9     ungetc (c, f);
10     return c;
11 }
12 
lex(FILE * f,const long limit)13 bool lex (FILE * f, const long limit)
14 {
15     long marker;
16     long ctxmarker;
17 #   define YYCTYPE        char
18 #   define YYPEEK()       peek (f)
19 #   define YYSKIP()       fgetc (f)
20 #   define YYBACKUP()     marker = ftell (f)
21 #   define YYBACKUPCTX()  ctxmarker = ftell (f)
22 #   define YYRESTORE()    fseek (f, marker, SEEK_SET)
23 #   define YYRESTORECTX() fseek (f, ctxmarker, SEEK_SET)
24 #   define YYLESSTHAN(n)  limit - ftell (f) < n
25 #   define YYFILL(n)      {}
26 
27 #line 28 "input_custom_fgetc.c"
28 {
29 	YYCTYPE yych;
30 	if (YYLESSTHAN(13)) YYFILL(13);
31 	yych = YYPEEK();
32 	switch (yych) {
33 	case 'i':	goto yy4;
34 	default:	goto yy2;
35 	}
36 yy2:
37 	YYSKIP();
38 yy3:
39 #line 26 "input_custom_fgetc.re"
40 	{ return false; }
41 #line 42 "input_custom_fgetc.c"
42 yy4:
43 	YYSKIP();
44 	YYBACKUP();
45 	yych = YYPEEK();
46 	switch (yych) {
47 	case 'n':	goto yy5;
48 	default:	goto yy3;
49 	}
50 yy5:
51 	YYSKIP();
52 	yych = YYPEEK();
53 	switch (yych) {
54 	case 't':	goto yy7;
55 	default:	goto yy6;
56 	}
57 yy6:
58 	YYRESTORE();
59 	goto yy3;
60 yy7:
61 	YYSKIP();
62 	yych = YYPEEK();
63 	switch (yych) {
64 	case ' ':	goto yy8;
65 	default:	goto yy6;
66 	}
67 yy8:
68 	YYSKIP();
69 	yych = YYPEEK();
70 	switch (yych) {
71 	case 'b':	goto yy9;
72 	default:	goto yy6;
73 	}
74 yy9:
75 	YYSKIP();
76 	yych = YYPEEK();
77 	switch (yych) {
78 	case 'u':	goto yy10;
79 	default:	goto yy6;
80 	}
81 yy10:
82 	YYSKIP();
83 	yych = YYPEEK();
84 	switch (yych) {
85 	case 'f':	goto yy11;
86 	default:	goto yy6;
87 	}
88 yy11:
89 	YYSKIP();
90 	yych = YYPEEK();
91 	switch (yych) {
92 	case 'f':	goto yy12;
93 	default:	goto yy6;
94 	}
95 yy12:
96 	YYSKIP();
97 	yych = YYPEEK();
98 	switch (yych) {
99 	case 'e':	goto yy13;
100 	default:	goto yy6;
101 	}
102 yy13:
103 	YYSKIP();
104 	yych = YYPEEK();
105 	switch (yych) {
106 	case 'r':	goto yy14;
107 	default:	goto yy6;
108 	}
109 yy14:
110 	YYSKIP();
111 	yych = YYPEEK();
112 	switch (yych) {
113 	case ' ':	goto yy15;
114 	default:	goto yy6;
115 	}
116 yy15:
117 	YYSKIP();
118 	yych = YYPEEK();
119 	switch (yych) {
120 	case '[':
121 		YYBACKUPCTX();
122 		goto yy16;
123 	default:	goto yy6;
124 	}
125 yy16:
126 	YYSKIP();
127 	yych = YYPEEK();
128 	switch (yych) {
129 	case '0':
130 	case '1':
131 	case '2':
132 	case '3':
133 	case '4':
134 	case '5':
135 	case '6':
136 	case '7':
137 	case '8':
138 	case '9':	goto yy17;
139 	default:	goto yy6;
140 	}
141 yy17:
142 	YYSKIP();
143 	if (YYLESSTHAN(1)) YYFILL(1);
144 	yych = YYPEEK();
145 	switch (yych) {
146 	case '0':
147 	case '1':
148 	case '2':
149 	case '3':
150 	case '4':
151 	case '5':
152 	case '6':
153 	case '7':
154 	case '8':
155 	case '9':	goto yy17;
156 	case ']':	goto yy19;
157 	default:	goto yy6;
158 	}
159 yy19:
160 	YYSKIP();
161 	YYRESTORECTX();
162 #line 25 "input_custom_fgetc.re"
163 	{ return true; }
164 #line 165 "input_custom_fgetc.c"
165 }
166 #line 27 "input_custom_fgetc.re"
167 
168 }
169 
main()170 int main ()
171 {
172     const char buffer [] = "int buffer [1024]";
173     const char fn [] = "input.txt";
174 
175     FILE * f = fopen (fn, "w");
176     fwrite (buffer, 1, sizeof (buffer), f);
177     fclose (f);
178 
179     f = fopen (fn, "rb");
180     int result = !lex (f, sizeof (buffer));
181     fclose (f);
182 
183     return result;
184 }
185