Problema: escriba un programa Lex para la conversión de decimal a hexadecimal.
Explicación:
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: 12 Output: C Input: 116 Output: 74 Input: 55 Output: 37 Input: 212 Output: D4
Implementación:
/* Lex program for decimal to hexadecimal conversion */ %{ /* Definition section */ #include<stdio.h> int num, r, digit=0, count, pcount=0, i; char a[20]; %} DIGIT [0-9] /* Rule Section */ %% {DIGIT}+ { num=atoi(yytext); while(num!=0) { r=num%16; digit='0'+r; if(digit>'9') digit+=7; a[count++]=digit; num=num/16; } for(i=count-1;i>=pcount;--i) printf("%c", a[i]); pcount=count; } .|\n ECHO; %% // driver code int main() { yylex(); 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