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:
%{
#include<string.h>
void check( char *);
%}
%%
[a-zA-Z]+ check(yytext);
%%
int main()
{
yylex();
return 0;
}
void check( char *str)
{
FILE *fp;
char temp[30];
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:
Share your thoughts in the comments
Please Login to comment...