%option noyywrap
%{
#include<stdio.h>
void yyerror(char *);
%}
letter [a-zA-Z]
digit [0-9]
punct [,.;"]
%%
else|if|void|int {printf("%s is a keyword",yytext);}
{digit}+ {printf("%s is a number",yytext);}
{letter}({letter}|{digit})* {printf("%s is an identifier",yytext);}
{op} {printf
("
%s is an operator",yytext);} [ ] ;
\) {printf("%s is close parenthesis",yytext);}
{punct} {printf("%s is a punctuation",yytext);}
. yyerror("error");
%%
void yyerror(char *s)
{
fprintf(stderr,"%s\n",s);
}
int main(int argc, char *argv[])
{
FILE *fp;
if((fp=fopen(argv[1],"r"))==NULL)
{printf("file does not exist");}
yyin=fp;
yylex();
return 0;
}
JW9wdGlvbiBub3l5d3JhcAolewoJI2luY2x1ZGU8c3RkaW8uaD4KCXZvaWQgeXllcnJvcihjaGFyICopOwolfQpsZXR0ZXIgW2EtekEtWl0KZGlnaXQgWzAtOV0Kb3AgWy0rKi9dCnB1bmN0IFssLjsiXQolJQplbHNlfGlmfHZvaWR8aW50ICB7cHJpbnRmKCIlcyBpcyBhIGtleXdvcmQiLHl5dGV4dCk7fQp7ZGlnaXR9KyAge3ByaW50ZigiJXMgaXMgYSBudW1iZXIiLHl5dGV4dCk7fQp7bGV0dGVyfSh7bGV0dGVyfXx7ZGlnaXR9KSogICB7cHJpbnRmKCIlcyBpcyBhbiBpZGVudGlmaWVyIix5eXRleHQpO30Ke29wfSAge3ByaW50ZigiJXMgaXMgYW4gb3BlcmF0b3IiLHl5dGV4dCk7fQpbICBdICA7ClwpICB7cHJpbnRmKCIlcyBpcyBjbG9zZSBwYXJlbnRoZXNpcyIseXl0ZXh0KTt9CntwdW5jdH0gIHtwcmludGYoIiVzIGlzIGEgcHVuY3R1YXRpb24iLHl5dGV4dCk7fQouICB5eWVycm9yKCJlcnJvciIpOwolJQp2b2lkIHl5ZXJyb3IoY2hhciAqcykKewpmcHJpbnRmKHN0ZGVyciwiJXNcbiIscyk7Cn0KaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewoJRklMRSAqZnA7CgkKCWlmKChmcD1mb3Blbihhcmd2WzFdLCJyIikpPT1OVUxMKQoJe3ByaW50ZigiZmlsZSBkb2VzIG5vdCBleGlzdCIpO30KCXl5aW49ZnA7Cgl5eWxleCgpOwoJcmV0dXJuIDA7Cn0JCQ==