%{
=head1 SYNOPSIS
See http://search.cpan.org/perldoc?Parse::Eyapp::debuggingtut
This file solves the conflict in Debug.eyp using dynamic
conflict resolution techniques
(see section 'SOLVING CONFLICTS WITH THE POSTPONED CONFLICT STRATEGY' in
http://search.cpan.org/perldoc?Parse::Eyapp::debuggingtut)
Be sure C<DebugTail.pm> is reachable
compile it with
eyapp -C DebugDynamicResolution.eyp
Execute the generated modulino with:
./DebugDynamicResolution.pm -t -i -c 'D;D;S;S'
It will output s.t. like C<PROG(D(TERMINAL[D],D[D]),SS(TERMINAL[S],S[S]))>
=head1 See also
Debug.eyp Debug1.eyp Debug2.eyp DebugLookForward.eyp
=cut
%}
%token D S
%conflict LAST_OR_MORE {
/(?=\G\s*;\s*S)/ ? $self->YYSetReduce( 'D:LAST' ) : $self->YYSetShift()
}
%tree
%%
p:
%name PROG
ds ';' ss
| %name SS
ss
;
ds:
%name D
D %PREC LAST_OR_MORE
';' ds
| %name D:LAST
D %PREC LAST_OR_MORE
;
ss:
%name SS
S ';' ss
| %name S
S
;
%%