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 :