1/*
2 * cat.lex: A demonstration of YY_NEW_FILE.
3 */
4
5%{
6#include <stdio.h>
7
8char **names = NULL;
9int  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
29int 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