Open In App

YACC program for Binary to Decimal Conversion

Improve
Improve
Like Article
Like
Save
Share
Report

Problem: Write YACC program for Binary to Decimal Conversion.

Explanation:
Yacc (for “yet another compiler compiler.”) is the standard parser generator for the Unix operating system. An open source program, yacc generates code for the parser in the C programming language. The acronym is usually rendered in lowercase but is occasionally seen as YACC or Yacc.

Examples:

Input: 0101
Output: 5

Input: 1101
Output: 13

Input: 111001
Output: 57

Input: 1111111
Output: 127

Input: 100111000
Output: 312 

Lexical Analyzer Source Code:




%{
  /* 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;  
 }  


Parser Source Code:




%{
  /* 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);
}
  


Output:



Last Updated : 09 May, 2019
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads