Problema: Escriba el programa YACC para la conversión de binario a decimal.
Explicación:
Yacc (por «otro compilador compilador más») es el generador de analizador estándar para el sistema operativo Unix. Un programa de código abierto, yacc genera código para el analizador en el lenguaje de programación C. El acrónimo generalmente se representa en minúsculas, pero ocasionalmente se ve como YACC o Yacc.
Ejemplos:
Input: 0101 Output: 5 Input: 1101 Output: 13 Input: 111001 Output: 57 Input: 1111111 Output: 127 Input: 100111000 Output: 312
Código fuente del analizador léxico:
%{ /* Definition section */ #include<stdio.h> #include<stdlib.h> #include"y.tab.h" extern int yylval; %} /* Rule Section */ %% 0 {yylval=0;return ZERO;} 1 {yylval=1;return ONE;} [ \t] {;} \n return 0; . return yytext[0]; %% int yywrap() { return 1; }
Código fuente del analizador:
%{ /* Definition section */ #include<stdio.h> #include<stdlib.h> void yyerror(char *s); %} %token ZERO ONE /* Rule Section */ %% N: L {printf("\n%d", $$);} L: L B {$$=$1*2+$2;} | B {$$=$1;} B:ZERO {$$=$1;} |ONE {$$=$1;}; %% //driver code int main() { while(yyparse()); } yyerror(char *s) { fprintf(stdout, "\n%s", s); }
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