Problema: Escriba un programa Lex para contar los números positivos, números negativos y fracciones
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.
Requisito previo: Flex (generador de analizador léxico rápido)
Ejemplos:
Input: 2 -8 -2.5 8.5 Output: No. of positive numbers: 1 No. of Negative numbers: 1 No. of Positive numbers in fractions: 1 No. of Negative numbers in fractions: 1 Input: 1 2 3 -4 -5 6.5 7.5 Output: No. of positive numbers: 3 No. of Negative numbers: 2 No. of Positive numbers in fractions: 2 No. of Negative numbers in fractions: 0
Implementación:
/* Lex program to Count the Positive numbers, - Negative numbers and Fractions */ %{ /* Definition section */ int postiveno=0; int negtiveno=0; int positivefractions=0; int negativefractions=0; %} /* Rule Section */ DIGIT [0-9] %% \+?{DIGIT}+ postiveno++; -{DIGIT}+ negtiveno++; \+?{DIGIT}*\.{DIGIT}+ positivefractions++; -{DIGIT}*\.{DIGIT}+ negativefractions++; . ; %% // driver code int main() { yylex(); printf("\nNo. of positive numbers: %d", postiveno); printf("\nNo. of Negative numbers: %d", negtiveno); printf("\nNo. of Positive numbers in fractions: %d", positivefractions); printf("\nNo. of Negative numbers in fractions: %d\n", negativefractions); return 0; }
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