问题:编写一个Lex程序来搜索文件中的单词。
解释:
FLEX(快速词法分析器生成器)是一种工具/计算机程序,用于生成Vern Paxson于1987年左右在C中编写的词法分析器(扫描器或词法分析器)。Lex读取指定词法分析器的输入流,并输出在C语言中实现词法分析器的源代码编程语言。函数yylex()是运行Rule Section的主要flex函数。
例子:
Input: welcome to geeksforgeeks
Output: welcome
FOUND
for
NOT FOUND
geeksforgeeks
FOUND
方法:
为了搜索单词,我将单词存储在名为“ input.txt”的文件中,并使用lex从键盘接收单词。接收到每个单词后,我将使用文件中的单词进行检查。如果找到该单词,程序将打印“找到”,否则打印“找不到”。
输入文件:input.txt (此程序中使用的输入文件)
下面是程序的实现:
/* Lex program to search a word in a file */
%{
/* Definition section */
#include
void check(char *);
%}
/* Rule Section */
%%
[a-zA-Z]+ check(yytext);
%%
// driver code
int main()
{
// The function that starts the analysis
yylex();
return 0;
}
void check(char *str)
{
/* fp as pointer
of File type */
FILE *fp;
char temp[30];
/* fp points to the file input.txt
and opens it in read mode */
fp=fopen("input.txt", "r");
while((fscanf(fp, "%s", temp))!=EOF)
{
if(!(strcmp(temp, str)))
{
printf("FOUND\n");
return;
}
}
printf("NOT FOUND\n");
return;
}
输出:
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。