File: //proc/597785/root/usr/share/doc/re2c/examples/15_binsyms.i--input(custom).c
/* Generated by re2c */
#include <stdlib.h>
#include <stdio.h>
static void lex(const char *cur, const char *lim)
{
const char *mar, *tok;
# define YYCTYPE char
# define YYPEEK() *cur
# define YYSKIP() if (++cur == lim) return;
# define YYBACKUP() mar = cur
# define YYRESTORE() cur = mar
loop:
tok = cur;
{
YYCTYPE yych;
yych = YYPEEK ();
switch (yych) {
case '_': goto yy4;
default: goto yy2;
}
yy2:
YYSKIP ();
yy3:
{ goto loop; }
yy4:
YYSKIP ();
YYBACKUP ();
yych = YYPEEK ();
switch (yych) {
case '_': goto yy5;
default: goto yy3;
}
yy5:
YYSKIP ();
yych = YYPEEK ();
switch (yych) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'Q':
case 'R':
case 'S':
case 'T':
case 'U':
case 'V':
case 'W':
case 'X':
case 'Y':
case 'Z':
case '_':
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
case 'g':
case 'h':
case 'i':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'o':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'u':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z': goto yy7;
default: goto yy6;
}
yy6:
YYRESTORE ();
goto yy3;
yy7:
YYSKIP ();
yych = YYPEEK ();
switch (yych) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'Q':
case 'R':
case 'S':
case 'T':
case 'U':
case 'V':
case 'W':
case 'X':
case 'Y':
case 'Z':
case '_':
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
case 'g':
case 'h':
case 'i':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'o':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'u':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z': goto yy7;
default: goto yy9;
}
yy9:
{
printf("%.*s\n", (int) (cur - tok), tok);
goto loop;
}
}
}
int main(int argc, char **argv)
{
if (argc < 2) {
fprintf(stderr, "no input files\n");
return 1;
}
FILE *file = fopen(argv[1], "rb");
if (file == NULL) {
fprintf(stderr, "cannot open file\n");
return 1;
}
fseek(file, 0, SEEK_END);
const size_t fsize = (size_t) ftell(file);
fseek(file, 0, SEEK_SET);
char *buffer = (char*) malloc(fsize);
fread(buffer, 1, fsize, file);
lex(buffer, buffer + fsize);
free(buffer);
fclose(file);
return 0;
}