/* * cat.lex: A demonstration of YY_NEW_FILE. */ %{ #include char **names = NULL; int current = 1; %} %% <> { current += 1; if(names[current] != NULL){ yyin = fopen(names[current],"r"); if(yyin == NULL){ fprintf(stderr,"cat: unable to open %s\n", names[current]); yyterminate(); } YY_NEW_FILE; } else { yyterminate(); } } %% int main(int argc, char **argv) { if(argc < 2){ fprintf(stderr,"Usage: cat files....\n"); exit(1); } names = argv; yyin = fopen(names[current],"r"); if(yyin == NULL){ fprintf(stderr,"cat: unable to open %s\n", names[current]); yyterminate(); } yylex(); }