YACC program which accept strings that starts and ends with 0 or 1
Last Updated :
06 May, 2019
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 :
%{
extern int yylval;
%}
%%
0 {yylval = 0; return ZERO;}
1 {yylval = 1; return ONE;}
.|\n {yylval = 2; return 0;}
%%
|
Parser Source Code :
%{
#include<stdio.h>
#include <stdlib.h>
void yyerror( const char *str)
{
printf ( "\nSequence Rejected\n" );
}
%}
%token ZERO ONE
%%
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"
int main()
{
printf ( "\nEnter Sequence of Zeros and Ones : " );
yyparse();
printf ( "\n" );
return 0;
}
|
Output:
Share your thoughts in the comments
Please Login to comment...