%% S : A B { printf("S -> A B\n"); } ; A : 'a' A { printf("A -> a A\n"); } | { printf("A -> epsilon\n"); } ; B : 'b' B { printf("B -> b B\n"); } | { printf("B -> epsilon\n"); } ; %% #include int yylex() { char ch; // Skip newlines while ((ch = getchar()) == '\n') ; return ch; } void yyerror(char *s) { fprintf(stderr, "Error: %s\n", s); } int main() { return yyparse(); }