%{
#include <stdio.h>
#include <stdlib.h>
%}
/* Definitions */
DIGIT [0-9]
ID [a-zA-Z_][a-zA-Z0-9_]*
KEYWORDS "if"|"else"|"while"|"for"|"int"|"float"|"return"
%%
{KEYWORDS} { printf("Keyword: %s\n", yytext); }
{ID} { printf("Identifier: %s\n", yytext); }
{DIGIT
}+ { printf
("
Number: %s\n", yytext); } "=="|"="|"+"|"-"|"*"|"/" { printf("Operator: %s\n", yytext); }
"(" { printf("Left Parenthesis: %s\n", yytext); }
")" { printf("Right Parenthesis: %s\n", yytext); }
";" { printf("Semicolon: %s\n", yytext); }
[ \t\n] { /* ignore whitespace */ }
. { printf("Unknown: %s\n", yytext); }
%%
int main(int argc, char **argv) {
yylex(); // Start scanning input
return 0;
}
int yywrap() {
return 1;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KJX0KCi8qIERlZmluaXRpb25zICovCkRJR0lUICAgICAgWzAtOV0KSUQgICAgICAgICBbYS16QS1aX11bYS16QS1aMC05X10qCktFWVdPUkRTICAgImlmInwiZWxzZSJ8IndoaWxlInwiZm9yInwiaW50InwiZmxvYXQifCJyZXR1cm4iCgolJQoKe0tFWVdPUkRTfSAgICB7IHByaW50ZigiS2V5d29yZDogJXNcbiIsIHl5dGV4dCk7IH0Ke0lEfSAgICAgICAgICB7IHByaW50ZigiSWRlbnRpZmllcjogJXNcbiIsIHl5dGV4dCk7IH0Ke0RJR0lUfSsgICAgICB7IHByaW50ZigiTnVtYmVyOiAlc1xuIiwgeXl0ZXh0KTsgfQoiPT0ifCI9InwiKyJ8Ii0ifCIqInwiLyIgICB7IHByaW50ZigiT3BlcmF0b3I6ICVzXG4iLCB5eXRleHQpOyB9CiIoIiAgICAgICAgICAgICB7IHByaW50ZigiTGVmdCBQYXJlbnRoZXNpczogJXNcbiIsIHl5dGV4dCk7IH0KIikiICAgICAgICAgICAgIHsgcHJpbnRmKCJSaWdodCBQYXJlbnRoZXNpczogJXNcbiIsIHl5dGV4dCk7IH0KIjsiICAgICAgICAgICAgIHsgcHJpbnRmKCJTZW1pY29sb246ICVzXG4iLCB5eXRleHQpOyB9ClsgXHRcbl0gICAgICAgICB7IC8qIGlnbm9yZSB3aGl0ZXNwYWNlICovIH0KLiAgICAgICAgICAgICAgIHsgcHJpbnRmKCJVbmtub3duOiAlc1xuIiwgeXl0ZXh0KTsgfQoKJSUKCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICAgeXlsZXgoKTsgICAvLyBTdGFydCBzY2FubmluZyBpbnB1dAogICAgcmV0dXJuIDA7Cn0KCmludCB5eXdyYXAoKSB7CiAgICByZXR1cm4gMTsKfQo=