The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
/*VIM: set ts=2 */
%{
=head1 SYNOPSIS

See 
   
   http://search.cpan.org/perldoc?Parse::Eyapp::debuggingtut
   file DebugLookForward.eyp

This grammar fixes the conflicts an bugs in Debug.eyp and Debug1.eyp

Be sure C<DebugTail.pm> is reachable
compile it with 

      eyapp -C DebugLookForward.eyp

execute the generated modulino with:

      ./DebugLookForward.pm -t -i -c 'D;D;S'

=head1 See also

    Debug.eyp Debug1.eyp Debug2.eyp DebugLookForward2.eyp

=cut

our $VERSION = '0.01';

%}
%strict

%token SEMICOLONS = /(;)(?=\s*S)/
%token ';'

%syntactic token SEMICOLONS 
%semantic token 'D' 'S'

%tree

%%
p:
    %name P
    ds SEMICOLONS ss  
  | %name SS
    ss
;

ds:
    %name D2
      'D' ';' ds   
  | %name D1
      'D'       
;

ss:
    %name S2
      'S' SEMICOLONS ss     
  | %name S1
      'S'       
;

%%