问题:编写一个Lex程序来检查给定的字符串是否是回文。
解释:
Lex是一个生成词法分析器的计算机程序,由Mike Lesk和Eric Schmidt编写。 Lex读取指定词法分析器的输入流,并输出以C编程语言实现词法分析器的源代码。
说明:一个字符串被认为是回文如果反向字符串的是相同的字符串。例如,“ abba”是回文,但“ abbc”不是回文。
例子:
Input: Enter a string : naman
Output: Given string is Palindrome
Input: Enter a string : geeksforgeeks
Output: Given string is not Palindrome
执行:
/* Lex program to check whether
- given string is Palindrome or Not */
%
{
int i, j, flag;
%
}
/* Rule Section */
% %
[a - z A - z 0 - 9]*
{
for (i = 0, j = yyleng - 1; i <= j; i++, j--) {
if (yytext[i] == yytext[j]) {
flag = 1;
}
else {
flag = 0;
break;
}
}
if (flag == 1)
printf("Given string is Palindrome");
else
printf("Given string is not Palindrome");
}
% %
// driver code
int main()
{
printf("Enter a string :");
yylex();
return 0;
}
int yywrap()
{
return 1;
}
输出: