Open In App

YACC program which accept strings that starts and ends with 0 or 1

Problem: Write a YACC program which accept strings that starts and ends with Zero or One

Explanation:
YACC (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: 001100
Output: Sequence Accepted

Input: 1001001
Output: Sequence Accepted

Input: 0011101
Output: Sequence Rejected

Input: 100110
Output: Sequence Rejected 

Lexical Analyzer Source Code :






%{
  /* Definition section */
  extern int yylval;
%}
  
/* Rule Section */
%%
  
0 {yylval = 0; return ZERO;}
  
1 {yylval = 1; return ONE;}
  
.|\n {yylval = 2; return 0;}
  
%%

Parser Source Code :




%{
  /* Definition section */
  #include<stdio.h>
  #include <stdlib.h>
  void yyerror(const char *str) 
  {
   printf("\nSequence Rejected\n");        
  }
  
%}
  
%token ZERO ONE
  
/* Rule Section */
%%
  
r : s {printf("\nSequence Accepted\n\n");}
;
  
s : n
| ZERO a
| ONE b
;
  
a : n a
| ZERO
;
  
b : n b
| ONE
;
  
n : ZERO
| ONE
;
  
%%
  
#include"lex.yy.c"
//driver code
int main() 
 {
    printf("\nEnter Sequence of Zeros and Ones : ");
    yyparse();
    printf("\n");
    return 0;
 }

Output:


Article Tags :