Show
Ignore:
Timestamp:
07/27/08 17:44:55 (6 months ago)
Author:
fglock
Message:

[v6.pm] fixed 'if'

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • perl5/Pugs-Compiler-Perl6/lib/Pugs/Grammar/StatementControl.pm

    r15805 r21573  
    190190        ) ); 
    191191    __PACKAGE__->add_rule( 
     192        'else' =>  q(  
     193            { die "bare 'else'" } 
     194        ) ); 
     195    __PACKAGE__->add_rule( 
    192196        'if' =>  q(  
    193197            <?ws>  
     
    201205                    exp1 => $_[0]{exp1}->(), 
    202206                    exp2 => $_[0]{exp2}->(), 
    203                     exp3 => [ $_[0]{exp3}->() ], 
    204                 } } 
    205         | 
    206             <?ws>? elsif <?ws>?  
    207             $<exp3> := <Pugs::Grammar::Expression.parse('no_blocks',0)> <?ws>? 
    208             $<exp4> := <Pugs::Grammar::Perl6.block> 
     207                    else => $_[0]{exp3}->(), 
     208                } } 
     209        | 
     210            [ 
     211                <?ws>? elsif <?ws>?  
     212                $<exp3> := <Pugs::Grammar::Expression.parse('no_blocks',0)> <?ws>? 
     213                $<exp4> := <Pugs::Grammar::Perl6.block> 
     214            ]+ 
     215             
    209216            [ 
    210217                <?ws>? else <?ws>?  
     
    214221                    exp1 => $_[0]{exp1}->(), 
    215222                    exp2 => $_[0]{exp2}->(), 
    216                     exp3 => [ [ $_[0]{exp3}->(), $_[0]{exp4}->() ], 
    217                               $_[0]{exp5}->() ], 
    218                 } } 
    219                  
    220                 # TODO: elsif ... 
    221             | 
    222                 { return {  
    223                     statement => 'if', 
    224                     exp1 => $_[0]{exp1}->(), 
    225                     exp2 => $_[0]{exp2}->(), 
    226                     exp3 => [ [$_[0]{exp3}->(), $_[0]{exp4}->() ] ], 
     223                    elsif => [ $_[0]{exp3}, $_[0]{exp4} ], 
     224                    else => $_[0]{exp5}->(), 
     225                } } 
     226            | 
     227                { return {  
     228                    statement => 'if', 
     229                    exp1 => $_[0]{exp1}->(), 
     230                    exp2 => $_[0]{exp2}->(), 
     231                    elsif => [ $_[0]{exp3}, $_[0]{exp4} ], 
    227232                } } 
    228233            ]