#include <stdio.h>
#include "y.tab.h"

extern FILE *yyin;
extern char *yyfilename;
extern char yytext[1024];

int main(int argc, char *argv[])
{
   if (argc < 2) {
      fprintf(stderr, "Usage: scan files...\n");
      return 1;
      }

   while (--argc > 0)
      if ((yyin = fopen(*++argv, "r")) == NULL) {
            fprintf(stderr, "scan: can't open %s\n", *argv);
	    }
      else {
         int i;
         yyfilename = *argv;
	 printf("%-16s%-16s%-16s%-16s%s\n",
		"Category","Text","Lineno","Filename","Ival/Sval");
         printf("--------------------------------------------------------------------\n");
         while ((i=yylex()) > 0) {
	    printf("%-16d%-16s%-16d%-16s",
		   i, yytoken.text, yytoken.lineno, yytoken.filename);
	    if (i==INT_LITERAL) printf("%08x", yytoken.ival);
	    else if (i == STRING_LITERAL) {
               int j=0;
	       while(yytoken.sval[j]) printf("%c", yytoken.sval[j++]);
	       }
	    printf("\n");
	    }
	 fclose(yyin);
	 }

   return 0;
}
