Open In App

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

Last Updated : 06 May, 2019
Improve
Improve
Like Article
Like
Save
Share
Report

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:



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads