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