%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(srgv[1],"r"))==NULL)
{printf("file does not exist");}
yyin=fp;
yylex();
return 0;
}
JW9wdGlvbiBub3l5d3JhcAolewoJI2luY2x1ZGU8c3RkaW8uaD4KCXZvaWQgeXllcnJvcihjaGFyKik7CiV9CmxldHRlciBbYS16QS1aXQpkaWdpdCBbMC05XQpvcCBbLSsqL10KcHVuY3QgWywuOyJdCiUlCmVsc2V8aWZ8dm9pZHxpbnR7cHJpbnRmKCIlcyBpcyBhIGtleXdvcmQiLHl5dGV4dCk7fQp7ZGlnaXR9KyB7cHJpbnRmKCIlcyBpcyBhIG51bWJlciIseXl0ZXh0KTt9CntsZXR0ZXJ9KHtsZXR0ZXJ9fHtkaWdpdH0qIHtwcmludGYoIiVzIGlzIGFuIGlkZW50aWZpZXIiLHl5dGV4dCk7fQp7b3B9IHtwcmludGYoIiVzIGlzIGFuIG9wZXJhdG9yIix5eXRleHQpO30KW107ClwpIHtwcmludGYoIiVzIGlzIGNsb3NlIHBhcmVudGhlc2lzIix5eXRleHQpO30Ke3B1bmN0fSB7cHJpbnRmKCIlcyBpcyBhIHB1bmN0dWF0aW9uIix5eXRleHQpO30KLiB5eWVycm9yKCJlcnJvciIpOwolJQp2b2lkIHl5ZXJyb3IoY2hhcipzKQp7CmZwcmludGYoc3RkZXJyLCIlc1xuIixzKTsKfQppbnQgbWFpbihpbnQgYXJnYywgY2hhciphcmd2W10pCnsKRklMRSAqZnA7CmlmKChmcD1mb3Blbihzcmd2WzFdLCJyIikpPT1OVUxMKQp7cHJpbnRmKCJmaWxlIGRvZXMgbm90IGV4aXN0Iik7fQp5eWluPWZwOwp5eWxleCgpOwpyZXR1cm4gMDsKfQ==