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:
Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.