%{
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char str[256];
%}
%%
[a-zA-Z]+ { strcpy(str, yytext); }
\n {
int i = 0;
int j = strlen(str) - 1;
int is_palindrome = 1;
while (i < j) {
if (tolower(str[i]) != tolower(str[j])) {
is_palindrome = 0;
break;
}
i++;
j--;
}
if (is_palindrome)
printf("\"%s\" IS a palindrome.\n", str);
else
printf("\"%s\" is NOT a palindrome.\n", str);
}
. { /* ignore other characters */ }
%%
int main(void) {
printf("Enter a string: ");
yylex();
return 0;
}
int yywrap(void) {
return 1;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGN0eXBlLmg+CgpjaGFyIHN0clsyNTZdOwolfQoKJSUKClthLXpBLVpdKyAgIHsgc3RyY3B5KHN0ciwgeXl0ZXh0KTsgfQoKXG4gICAgICAgICAgewogICAgICAgICAgICAgICAgaW50IGkgPSAwOwogICAgICAgICAgICAgICAgaW50IGogPSBzdHJsZW4oc3RyKSAtIDE7CiAgICAgICAgICAgICAgICBpbnQgaXNfcGFsaW5kcm9tZSA9IDE7CgogICAgICAgICAgICAgICAgd2hpbGUgKGkgPCBqKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRvbG93ZXIoc3RyW2ldKSAhPSB0b2xvd2VyKHN0cltqXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaXNfcGFsaW5kcm9tZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICAgICAgai0tOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChpc19wYWxpbmRyb21lKQogICAgICAgICAgICAgICAgICAgIHByaW50ZigiXCIlc1wiIElTIGEgcGFsaW5kcm9tZS5cbiIsIHN0cik7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJcIiVzXCIgaXMgTk9UIGEgcGFsaW5kcm9tZS5cbiIsIHN0cik7CiAgICAgICAgICAgIH0KCi4gICAgICAgICAgIHsgLyogaWdub3JlIG90aGVyIGNoYXJhY3RlcnMgKi8gfQoKJSUKCmludCBtYWluKHZvaWQpIHsKICAgIHByaW50ZigiRW50ZXIgYSBzdHJpbmc6ICIpOwogICAgeXlsZXgoKTsKICAgIHJldHVybiAwOwp9CgppbnQgeXl3cmFwKHZvaWQpIHsKICAgIHJldHVybiAxOwp9