1 /* 2 * cat.lex: A demonstration of YY_NEW_FILE. 3 */ 4 5 %{ 6 #include <stdio.h> 7 8 char **names = NULL; 9 int current = 1; 10 %} 11 12 %% 13 <<EOF>> { 14 current += 1; 15 if(names[current] != NULL){ 16 yyin = fopen(names[current],"r"); 17 if(yyin == NULL){ 18 fprintf(stderr,"cat: unable to open %s\n", 19 names[current]); 20 yyterminate(); 21 } 22 YY_NEW_FILE; 23 } else { 24 yyterminate(); 25 } 26 } 27 %% 28 29 int main(int argc, char **argv) 30 { 31 if(argc < 2){ 32 fprintf(stderr,"Usage: cat files....\n"); 33 exit(1); 34 } 35 names = argv; 36 37 yyin = fopen(names[current],"r"); 38 if(yyin == NULL){ 39 fprintf(stderr,"cat: unable to open %s\n", 40 names[current]); 41 yyterminate(); 42 } 43 44 yylex(); 45 } 46