The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
%{
=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       
;

%%