Programa YACC para conversión de binario a decimal

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *