Open In App

YACC program to recognize strings of { anb | n≥5 }

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

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:




%{
   /* Definition section */
  #include "y.tab.h"
 %}
  
/* Rule Section */
 %%
[aA] {return A;}
[bB] {return B;}
\n {return NL;}
.   {return yytext[0];}
 %%
  
int yywrap() 
 
   return 1; 
 


Parser Source Code:




%{
   /* Definition section */
  #include<stdio.h>
  #include<stdlib.h>
 %}
  
%token A B NL
  
/* Rule Section */
%%
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);
 }
  
  
//driver code 
main()
 {
  printf("enter the string\n");
  yyparse();
 }


Output:



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads