%{
#include <stdio.h>
#include <stdlib.h>
%}
/* Definitions (Regex for tokens) */
DIGIT [0-9]
ID [a-zA-Z_][a-zA-Z0-9_]*
WS [ \t\n]+
%%
"if" { printf("KEYWORD : %s\n", yytext); }
"else" { printf("KEYWORD : %s\n", yytext); }
"while" { printf("KEYWORD : %s\n", yytext); }
"int"|"float"|"char" { printf("DATATYPE : %s\n", yytext); }
{ID} { printf("IDENTIFIER : %s\n", yytext); }
{DIGIT
}+ { printf
("
NUMBER : %s\n", yytext); } "=="|"=" { printf("ASSIGN/COMPARE OPERATOR : %s\n", yytext); }
"+"|"-"|"*"|"/" { printf("ARITHMETIC OPERATOR : %s\n", yytext); }
";" { printf("SEMICOLON\n"); }
{WS} { /* Ignore whitespace */ }
. { printf("UNKNOWN : %s\n", yytext); }
%%
int main() {
printf("Enter the input:\n");
yylex();
return 0;
}
int yywrap() {
return 1;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KJX0KCi8qIERlZmluaXRpb25zIChSZWdleCBmb3IgdG9rZW5zKSAqLwpESUdJVCAgIFswLTldCklEICAgICAgW2EtekEtWl9dW2EtekEtWjAtOV9dKgpXUyAgICAgIFsgXHRcbl0rCgolJQoiaWYiICAgICAgICAgICAgICAgIHsgcHJpbnRmKCJLRVlXT1JEIDogJXNcbiIsIHl5dGV4dCk7IH0KImVsc2UiICAgICAgICAgICAgICB7IHByaW50ZigiS0VZV09SRCA6ICVzXG4iLCB5eXRleHQpOyB9CiJ3aGlsZSIgICAgICAgICAgICAgeyBwcmludGYoIktFWVdPUkQgOiAlc1xuIiwgeXl0ZXh0KTsgfQoiaW50InwiZmxvYXQifCJjaGFyIiB7IHByaW50ZigiREFUQVRZUEUgOiAlc1xuIiwgeXl0ZXh0KTsgfQoKe0lEfSAgICAgICAgICAgICAgICB7IHByaW50ZigiSURFTlRJRklFUiA6ICVzXG4iLCB5eXRleHQpOyB9CntESUdJVH0rICAgICAgICAgICAgeyBwcmludGYoIk5VTUJFUiA6ICVzXG4iLCB5eXRleHQpOyB9CiI9PSJ8Ij0iICAgICAgICAgICAgeyBwcmludGYoIkFTU0lHTi9DT01QQVJFIE9QRVJBVE9SIDogJXNcbiIsIHl5dGV4dCk7IH0KIisifCItInwiKiJ8Ii8iICAgICB7IHByaW50ZigiQVJJVEhNRVRJQyBPUEVSQVRPUiA6ICVzXG4iLCB5eXRleHQpOyB9CiI7IiAgICAgICAgICAgICAgICAgeyBwcmludGYoIlNFTUlDT0xPTlxuIik7IH0Ke1dTfSAgICAgICAgICAgICAgICB7IC8qIElnbm9yZSB3aGl0ZXNwYWNlICovIH0KLiAgICAgICAgICAgICAgICAgICB7IHByaW50ZigiVU5LTk9XTiA6ICVzXG4iLCB5eXRleHQpOyB9CiUlCgppbnQgbWFpbigpIHsKICAgIHByaW50ZigiRW50ZXIgdGhlIGlucHV0OlxuIik7CiAgICB5eWxleCgpOwogICAgcmV0dXJuIDA7Cn0KCmludCB5eXdyYXAoKSB7CiAgICByZXR1cm4gMTsKfQo=