1// re2c $INPUT -o $OUTPUT --input custom 2#include <stdio.h> 3 4char peek (FILE * f) 5{ 6 char c = fgetc (f); 7 ungetc (c, f); 8 return c; 9} 10 11bool lex (FILE * f, const long limit) 12{ 13 long marker; 14 long ctxmarker; 15# define YYCTYPE char 16# define YYPEEK() peek (f) 17# define YYSKIP() fgetc (f) 18# define YYBACKUP() marker = ftell (f) 19# define YYBACKUPCTX() ctxmarker = ftell (f) 20# define YYRESTORE() fseek (f, marker, SEEK_SET) 21# define YYRESTORECTX() fseek (f, ctxmarker, SEEK_SET) 22# define YYLESSTHAN(n) limit - ftell (f) < n 23# define YYFILL(n) {} 24 /*!re2c 25 "int buffer " / "[" [0-9]+ "]" { return true; } 26 * { return false; } 27 */ 28} 29 30int main () 31{ 32 const char buffer [] = "int buffer [1024]"; 33 const char fn [] = "input.txt"; 34 35 FILE * f = fopen (fn, "w"); 36 fwrite (buffer, 1, sizeof (buffer), f); 37 fclose (f); 38 39 f = fopen (fn, "rb"); 40 int result = !lex (f, sizeof (buffer)); 41 fclose (f); 42 43 return result; 44} 45