📜  Lex程序搜索文件中的单词

📅  最后修改于: 2021-05-28 04:51:34             🧑  作者: Mango

问题:编写一个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基础课程》。