Skip to content
Related Articles

Related Articles

Improve Article

Lex program to count the frequency of the given word in a file

  • Difficulty Level : Expert
  • Last Updated : 08 May, 2019

Problem: Given a text file as input, the task is to count frequency of a given word in the file.

Explanation:
Lex is a computer program that generates lexical analyzers and was written by Mike Lesk and Eric Schmidt. Lex reads an input stream specifying the lexical analyzer and outputs source code implementing the lexer in the C programming language.

Approach:
As we know, yytext holds the value of current matched token, we can compare it with the word whose frequency is to be counted. if the value of yytext and the given word are same, increment the count variable.

Input File: input.txt



Below is the implementation of above approach:




/* LEX code to count the frequency
   of the given word in a file */
  
/* Definition section */
/* variable word indicates the word
   whose frequency is to be count */
/* variable count is used to store the 
   frequency of the given word */
  
%{
#include<stdio.h>
#include<string.h>
  
char word [] = "geeks";
int count = 0;
  
  
%}
  
/* Rule Section */
/* Rule 1 compares the matched token with the
   word to count and increments the count variable
   on successful match  */
/* Rule 2 matches everything other than string 
   (consists of albhabets only ) and do nothing */
  
%%
[a-zA-Z]+    { if(strcmp(yytext, word)==0)
                   count++; }
.  ;         
%%
  
  
int yywrap()
{
    return 1;
}
  
/* code section */
int main()
{
        extern FILE *yyin, *yyout;
          
        /* open the input file
           in read mode */
        yyin=fopen("input.txt", "r");
        yylex();
           
        printf("%d", count);
      
}

Output:

Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.

 




My Personal Notes arrow_drop_up
Recommended Articles
Page :