Lex es un programa de computadora que genera analizadores léxicos y fue escrito por Mike Lesk y Eric Schmidt. 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.
Veamos cómo contar el número de líneas, espacios y tabulaciones usando Lex.
Ejemplo:
Input: Geeks for Geeks gfg gfg Output: No. of lines=2 No. of spaces=3 No. of tabs=1 No. of other characters=19 Input: Hello How are you? Output: No. of lines=2 No. of spaces=4 No. of tabs=1 No. of other characters=15
A continuación se muestra la implementación:
C
/*lex code to count the number of lines, tabs and spaces used in the input*/ %{ #include<stdio.h> int lc=0, sc=0, tc=0, ch=0; /*Global variables*/ %} /*Rule Section*/ %% \n lc++; //line counter ([ ])+ sc++; //space counter \t tc++; //tab counter . ch++; //characters counter %% int main() { // The function that starts the analysis yylex(); printf("\nNo. of lines=%d", lc); printf("\nNo. of spaces=%d", sc); printf("\nNo. of tabs=%d", tc); printf("\nNo. of other characters=%d", ch); }
Producción: