问题:编写一个Lex程序以计算小于10且大于5的单词。
解释:
Lex是一个生成词法分析器的计算机程序。 Lex读取指定词法分析器的输入流,并输出以C编程语言实现词法分析器的源代码。
用于执行lex程序的命令为:
lex abc.l (abc is the file name)
cc lex.yy.c -efl
./a.out
让我们看一下Lex程序对小于10且大于5的单词进行计数。
例子:
Input: geeksforgeeks hey google test lays
Output: 1
下面是实现:
/*lex code to count words that are less than 10
- and greater than 5 */
%{
int len=0, counter=0;
%}
%%
[a-zA-Z]+ { len=strlen(yytext);
if(len<10 && len>5)
{counter++;} }
%%
int yywrap (void )
{
return 1;
}
int main()
{
printf("Enter the string:");
yylex();
printf("\n %d", counter);
return 0;
}
输出: