Programa Lex para tomar entradas del archivo y eliminar múltiples espacios, líneas y tabulaciones

FLEX (Fast Lexical Analyzer Generator) es una herramienta/programa de computadora 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 C lenguaje de programación. La función yylex() es la principal función flexible que ejecuta la sección de reglas. Prerrequisito: FLEX (Fast Lexical Analyzer Generator) Ejemplo:

Input:
hello      how
    are       
you?

Output:
hellohowareyou?

Input:
Welcome      to
Geeks    for
      Geeks

Output:
WelcometoGeeksforGeeks

Enfoque: abra el archivo de entrada en modo de lectura y cada vez que el analizador encuentre una nueva línea (\n), espacio() o tabulador (\t), elimínelo y escriba todos los demás caracteres en el archivo de salida. Archivo de entrada: Input.txt (Archivo de entrada utilizado en este programa) A continuación se muestra el programa de implementación: 

C

/*Lex program to take input from file and
remove multiple spaces, newline and tab
and write output in a separate file*/
 
% {
    /*Definition section */
    %
}
 
/* Rule: whenever space, tab or
newline is encountered, remove it*/
% %
[ \n\t]+ {fprintf(yyout, "");}
.       { fprintf(yyout, "%s", yytext); }
% %
 
int yywrap(){}
 
// driver code
int main()
{
 
    /* yyin and yyout as pointer
    of File type */
    extern FILE *yyin, *yyout;
 
    /* yyin points to the file input.txt
    and opens it in read mode*/
    yyin = fopen("Input.txt", "r");
 
    /* yyout points to the file output.txt
    and opens it in write mode*/
    yyout = fopen("Output.txt", "w");
 
    yylex();
    return 0;
}

Producción:

Publicación traducida automáticamente

Artículo escrito por shivani.mittal 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 *