YACC program to recognize strings of { anb | n≥5 }
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:
Contact Us