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