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