%{
=head1 SYNOPSIS
A deliberately confusing example
Almost quoting Pete Jinks at L<http://www.cs.man.ac.uk/~pjj/cs2121/ho/node19.html>:
The following grammar would confuse any LR(n) or LL(n) parser with a fixed amount of look-ahead:
A : B C d | E C f ;
B : x y ;
E : x y ;
C : /* empty */ | C c ;
As usual, one of the simplest solutions is to rewrite the grammar
to unify the common prefix e.g.:
A : BorE C d | BorE C f ;
BorE : x y ;
C : /* empty */ | C c ;
The grammar would confuse any LR(n) or LL(n) parser with a fixed amount of look-ahead
See a solution in file: C<lr_1_grammar.eyp>
=head1 SEE ALSO
This grammar is a variation of one seen at Pete Jinks page:
L<http://www.cs.man.ac.uk/~pjj>
Files
lr_1_grammar.eyp
=cut
%}
%%
A:
B C 'd'
| E C 'f'
;
B:
'x' 'y'
;
E:
'x' 'y'
;
C:
/* empty */
| C 'c'
;
%%