%{
#include <math.h>
%}
DIGIT [0-9]
ID [a-z][a-z0-9]*
%%
{DIGIT}+ {
printf
{"An
integer: %s (%d)\n", yytext, atoi( yytext ) );
}
{DIGIT}+" ." {DIGIT}*
printf
( "A
float : %s (%g)\n", yytext), atof( yytext ) );
}
if|then|begin|end|procedure|function {
printf( "A keyword: %s\n", yytext );
}
{ID} printf (" An identifier : %s\n" , yytext );
"+"|"-"||"*"|"/" printf ( "An operator: %s\n" , yytext );
"{"{^}\n}*"}"
{ \t\n}+
printf( "Unrecongnized character: %s\n", yytext);
%%
int yywrap() {} int main () { FILE *fp;
char filename[50];
printf("Enter the filename : \n");
scanf("%s",filename);
fp = fopen(filename ,"r");
yyin = fp;
yylex ();
}
int yywrap() {
return 1; // Indicate end of input (EOF)
}
JXsgCgogCgojaW5jbHVkZSA8bWF0aC5oPiAKCiAKCiV9IAoKIAoKRElHSVQgWzAtOV0gCgogCgpJRCBbYS16XVthLXowLTldKiAKCiAKCiAKCiAgICAgICAgICUlIAoKIAoKe0RJR0lUfSsgICAgIHsgCgogICAgIHByaW50ZiB7IkFuIGludGVnZXI6ICVzICglZClcbiIsIHl5dGV4dCwgYXRvaSggICAgIHl5dGV4dCApICk7IAoKIAoKfSAKCiAKCntESUdJVH0rIiAuIiB7RElHSVR9KiAKCnByaW50ZiggIkEgZmxvYXQgOiAlcyAoJWcpXG4iLCB5eXRleHQpLCBhdG9mKCB5eXRleHQgKSAgICk7IAoKIAoKfSAKCmlmfHRoZW58YmVnaW58ZW5kfHByb2NlZHVyZXxmdW5jdGlvbiAgICAgIHsgCgogCgogICAgICAgcHJpbnRmKCAiQSBrZXl3b3JkOiAgICVzXG4iLCB5eXRleHQgKTsgCgogCgp9IAoKIAoKe0lEfSAgICAgICAgICBwcmludGYgKCIgQW4gaWRlbnRpZmllciA6ICVzXG4iICwgeXl0ZXh0ICk7IAoKIAoKIisifCItInx8IioifCIvIiAgICAgcHJpbnRmICggIkFuIG9wZXJhdG9yOiAlc1xuIiAsIHl5dGV4dCApOyAKCiAKCiJ7IntefVxufSoifSIgICAgICAgICAgCgogCgp7ICBcdFxufSsgICAgICAgICAgICAgIAoKIAoKcHJpbnRmKCAiVW5yZWNvbmduaXplZCBjaGFyYWN0ZXI6ICAlc1xuIiwgeXl0ZXh0KTsgCgogCgolJSAKCiAKCmludCB5eXdyYXAoKSB7fSBpbnQgbWFpbiAoKSB7IEZJTEUgICpmcDsgCgpjaGFyIGZpbGVuYW1lWzUwXTsgCgogCgpwcmludGYoIkVudGVyIHRoZSBmaWxlbmFtZSA6ICBcbiIpOyAKCiAKCnNjYW5mKCIlcyIsZmlsZW5hbWUpOyAKCiAKCmZwID0gZm9wZW4oZmlsZW5hbWUgLCJyIik7IAoKIAoKeXlpbiA9IGZwOyAKCiAKCnl5bGV4ICgpOyAKCiAKCn0gCgogCgppbnQgeXl3cmFwKCkgeyAKCiAKCnJldHVybiAxOyAvLyBJbmRpY2F0ZSBlbmQgb2YgaW5wdXQgKEVPRikgCgogCgp9IA==