YACC program to recognize strings of { anb | n≥5 }
Last Updated :
07 May, 2019
Problem: Write YACC program to recognize strings of { anb | n≥5 }
Explanation:
Yacc (for “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: ab
Output: invalid string
Input: aaaaab
Output: valid string
Input: aabb
Output: invalid string
Input: aaaaaaab
Output: valid string
Input: aaaaaabb
Output: invalid string
Lexical Analyzer Source Code:
%{
#include "y.tab.h"
%}
%%
[aA] { return A;}
[bB] { return B;}
\n { return NL;}
. { return yytext[0];}
%%
int yywrap()
{
return 1;
}
|
Parser Source Code:
%{
#include<stdio.h>
#include<stdlib.h>
%}
%token A B NL
%%
stmt: A A A A A S B NL { printf ( "valid string\n" );
exit (0);}
;
S: S A
|
;
%%
int yyerror( char *msg)
{
printf ( "invalid string\n" );
exit (0);
}
main()
{
printf ( "enter the string\n" );
yyparse();
}
|
Output:
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...