%{
#include <stdio.h>
#include <string.h>
// List of keywords
char *keywords[] = {
"int", "float", "char", "double", "if", "else",
"while", "for", "return", "void", "break", "continue"
};
int isKeyword(char *word) {
int i;
for(i = 0; i < 12; i++) {
if(strcmp(word, keywords[i]) == 0)
return 1;
}
return 0;
}
%}
%%
[a-zA-Z_][a-zA-Z0-9_]* {
if(isKeyword(yytext))
printf("%s is a KEYWORD\n", yytext);
else
printf("%s is an IDENTIFIER\n", yytext);
}
\n { return 0; }
. ;
%%
int main() {
printf("Enter a word: ");
yylex();
return 0;
}
int yywrap() {
return 1;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCi8vIExpc3Qgb2Yga2V5d29yZHMKY2hhciAqa2V5d29yZHNbXSA9IHsKICAgICJpbnQiLCAiZmxvYXQiLCAiY2hhciIsICJkb3VibGUiLCAiaWYiLCAiZWxzZSIsCiAgICAid2hpbGUiLCAiZm9yIiwgInJldHVybiIsICJ2b2lkIiwgImJyZWFrIiwgImNvbnRpbnVlIgp9OwoKaW50IGlzS2V5d29yZChjaGFyICp3b3JkKSB7CiAgICBpbnQgaTsKICAgIGZvcihpID0gMDsgaSA8IDEyOyBpKyspIHsKICAgICAgICBpZihzdHJjbXAod29yZCwga2V5d29yZHNbaV0pID09IDApCiAgICAgICAgICAgIHJldHVybiAxOwogICAgfQogICAgcmV0dXJuIDA7Cn0KJX0KCiUlClthLXpBLVpfXVthLXpBLVowLTlfXSogewogICAgaWYoaXNLZXl3b3JkKHl5dGV4dCkpCiAgICAgICAgcHJpbnRmKCIlcyBpcyBhIEtFWVdPUkRcbiIsIHl5dGV4dCk7CiAgICBlbHNlCiAgICAgICAgcHJpbnRmKCIlcyBpcyBhbiBJREVOVElGSUVSXG4iLCB5eXRleHQpOwp9CgpcbiAgICAgIHsgcmV0dXJuIDA7IH0KLiAgICAgICA7CiUlCgppbnQgbWFpbigpIHsKICAgIHByaW50ZigiRW50ZXIgYSB3b3JkOiAiKTsKICAgIHl5bGV4KCk7CiAgICByZXR1cm4gMDsKfQoKaW50IHl5d3JhcCgpIHsKICAgIHJldHVybiAxOwp9