Programa Lex para buscar una palabra en un archivo

Problema: Escriba un programa Lex para buscar una palabra en un archivo.

Explicación:
FLEX (Fast Lexical Analyzer Generator) es una herramienta/programa informático para generar analizadores léxicos (escáneres o lexers) escrito por Vern Paxson en C alrededor de 1987. Lex lee un flujo de entrada que especifica el analizador léxico y genera el código fuente que implementa el lexer en el lenguaje de programación C. La función yylex() es la principal función flexible que ejecuta la sección de reglas.

Ejemplos:

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

geeksforgeeks
FOUND 

Enfoque:
para buscar una palabra, almacené palabras en un archivo llamado «input.txt» y usé lex para recibir palabras del teclado. Al recibir cada palabra, la compruebo con las palabras del archivo. Si se encuentra la palabra, el programa imprime «ENCONTRADO» de lo contrario «NO ENCONTRADO».

Archivo de entrada: input.txt (Archivo de entrada utilizado en este programa)

A continuación se muestra la implementación del programa:

/* 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;
}

Producción:

Publicación traducida automáticamente

Artículo escrito por thakur_aman y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *