YACC program to recognize string with grammar { anbn | n≥0 }
Problem: Write YACC program to recognize string with grammar { anbn | n≥0 }.
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: valid string Input: aab Output: invalid string Input: aabb Output: valid string Input: abb Output: invalid string Input: aaabbb Output: valid 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: S NL { printf ( "valid string\n" ); exit (0); } ; S: A S B | ; %% int yyerror( char *msg) { printf ( "invalid string\n" ); exit (0); } //driver code main() { printf ( "enter the string\n" ); yyparse(); } |
Output: