%{
#include<stdio.h>
#include<conio.h>
%}
%%
"int" { printf("INT\n"); }
"void" { printf("VOID\n"); }
"printf" { printf("PRINTF\n"); }
"(" { printf("LPAREN\n"); }
")" { printf("RPAREN\n"); }
"{" { printf("LBRACE\n"); }
"}" { printf("RBRACE\n"); }
"=" { printf("ASSIGN\n"); }
";" { printf("SEMICOLON\n"); }
"+" { printf("PLUS\n"); }
"," { printf("COMMA\n"); }
"\"%d\"" { printf("FORMAT\n"); }
[0-9]+ { printf("NUM: %s\n", yytext); }
[a-zA-Z][a-zA-Z0-9]* { printf("ID: %s\n", yytext); }
[ \t\n] ; /* Skip whitespace and newline */
. { printf("ERROR: Unexpected character: %s\n", yytext); }
%%
int main()
{
yyin = fopen("input.c", "r");
yylex();
fclose(yyin);
return 0;
}
JXsKI2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8Y29uaW8uaD4KJX0KCiUlCiJpbnQiICAgICAgICAgICAgICAgeyBwcmludGYoIklOVFxuIik7IH0KInZvaWQiICAgICAgICAgICAgICB7IHByaW50ZigiVk9JRFxuIik7IH0KInByaW50ZiIgICAgICAgICAgICB7IHByaW50ZigiUFJJTlRGXG4iKTsgfQoiKCIgICAgICAgICAgICAgICAgIHsgcHJpbnRmKCJMUEFSRU5cbiIpOyB9CiIpIiAgICAgICAgICAgICAgICAgeyBwcmludGYoIlJQQVJFTlxuIik7IH0KInsiICAgICAgICAgICAgICAgICB7IHByaW50ZigiTEJSQUNFXG4iKTsgfQoifSIgICAgICAgICAgICAgICAgIHsgcHJpbnRmKCJSQlJBQ0VcbiIpOyB9CiI9IiAgICAgICAgICAgICAgICAgeyBwcmludGYoIkFTU0lHTlxuIik7IH0KIjsiICAgICAgICAgICAgICAgICB7IHByaW50ZigiU0VNSUNPTE9OXG4iKTsgfQoiKyIgICAgICAgICAgICAgICAgIHsgcHJpbnRmKCJQTFVTXG4iKTsgfQoiLCIgICAgICAgICAgICAgICAgIHsgcHJpbnRmKCJDT01NQVxuIik7IH0KIlwiJWRcIiIgICAgICAgICAgICB7IHByaW50ZigiRk9STUFUXG4iKTsgfQpbMC05XSsgICAgICAgICAgICAgIHsgcHJpbnRmKCJOVU06ICVzXG4iLCB5eXRleHQpOyB9ClthLXpBLVpdW2EtekEtWjAtOV0qICAgIHsgcHJpbnRmKCJJRDogJXNcbiIsIHl5dGV4dCk7IH0KWyBcdFxuXSAgICAgICAgICAgICA7IC8qIFNraXAgd2hpdGVzcGFjZSBhbmQgbmV3bGluZSAqLwouICAgICAgICAgICAgICAgICAgIHsgcHJpbnRmKCJFUlJPUjogVW5leHBlY3RlZCBjaGFyYWN0ZXI6ICVzXG4iLCB5eXRleHQpOyB9CiUlCgppbnQgbWFpbigpCnsKICAgIHl5aW4gPSBmb3BlbigiaW5wdXQuYyIsICJyIik7CiAgICB5eWxleCgpOwogICAgZmNsb3NlKHl5aW4pOwogICAgcmV0dXJuIDA7Cn0K