Programa YACC para conversão de binário para decimal
Problema: Escreva o programa YACC para conversão de binário em decimal.
Explicação:
Yacc (para “mais um compilador compilador.”) É o gerador de analisador padrão para o sistema operacional Unix. Um programa de código aberto, o yacc gera código para o analisador na linguagem de programação C. O acrônimo é geralmente processado em minúsculas, mas às vezes é visto como YACC ou Yacc.
Exemplos:
Input: 0101 Output: 5 Input: 1101 Output: 13 Input: 111001 Output: 57 Input: 1111111 Output: 127 Input: 100111000 Output: 312
Código-fonte do Lexical Analyzer:
%{
/* 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-fonte do analisador:
%{
/* 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);
}
Saída:
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva