Skip to content
Related Articles

Related Articles

Lex program to search a word in a file
  • Last Updated : 30 Apr, 2019

Problem: Write a Lex program to search a word in a file.

Explanation:
FLEX (Fast Lexical Analyzer Generator) is a tool/computer program for generating lexical analyzers (scanners or lexers) written by Vern Paxson in C around 1987. Lex reads an input stream specifying the lexical analyzer and outputs source code implementing the lexer in the C programming language. The function yylex() is the main flex function which runs the Rule Section.

Examples:

Input: welcome to geeksforgeeks 
Output: welcome 
FOUND
 
for 
NOT FOUND

geeksforgeeks
FOUND 

Approach:
To search a word, I have stored words in file named “input.txt” and used lex to receive words from keyboard. On receiving each word, I check it with the words in the file. If the word is found, the program prints “FOUND” else “NOT FOUND”.

Input File: input.txt (Input File used in this program)



Below is the implementation of program:




/* Lex program to search a word in a file */
  
%{
 /* Definition section */
#include<string.h>
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;
}

Output:

Want to learn from the best curated videos and practice problems, check out the C Foundation Course for Basic to Advanced C.

My Personal Notes arrow_drop_up
Recommended Articles
Page :