use lib '../Pugs-Compiler-Rule/lib', '../Pugs-Compiler-Precedence/lib', ; use Pugs::Grammar::Perl6; use Data::Dumper; $Data::Dumper::Indent = 1; $Data::Dumper::Sortkeys = 1; use Test::More 'no_plan'; { my $match = Pugs::Grammar::Perl6->parse(<<'PERL6'); if 1 { 10 + $a / "abc" } 1; PERL6 #print Dumper $match->(); is_deeply( $match->(), [ { 'if' => { 'block' => [ { 'exp1' => { 'num' => '10' }, 'exp2' => { 'exp1' => { 'scalar' => '$a' }, 'exp2' => { 'double_quoted' => '"abc"' }, 'op1' => '/' }, 'op1' => '+' } ], 'exp' => { 'num' => '1' } } }, { 'num' => '1' } ], 'statement: if 1 {10 + $a / "abc"} ' ); } { #print $Pugs::Grammar::StatementControl::hash{sub}->perl5; my $match = Pugs::Grammar::Perl6->parse(<<'PERL6'); sub prefix: { $a } PERL6 #print Dumper $match->(); is_deeply( $match->(), [ { 'sub' => { 'block' => [ { 'scalar' => '$a' } ], 'name' => { 'pair' => { 'key' => { 'single_quoted' => 'prefix' }, 'value' => { 'single_quoted' => 'xx' } } } } } ], 'statement: sub declaration ' ); } { #print $Pugs::Grammar::StatementControl::hash{sub}->perl5; my $match = Pugs::Grammar::Perl6->parse(<<'PERL6'); xx( $a ) PERL6 #print Dumper $match->(); is_deeply( $match->(), [ { 'exp1' => { 'scalar' => '$a' }, 'op1' => { 'name' => { 'single_quoted' => 'xx' }, 'op' => 'CALL' }, 'op2' => 'CLOSE_PAREN' } ], 'statement: sub call ' ); } { #print $Pugs::Grammar::StatementControl::hash{sub}->perl5; my $match = Pugs::Grammar::Perl6->parse(<<'PERL6'); xx() PERL6 #print Dumper $match->(); is_deeply( $match->(), [ { 'op1' => { 'name' => { 'single_quoted' => 'xx' }, 'op' => 'CALL' }, 'op2' => 'CLOSE_PAREN' } ], 'statement: sub call, no param ' ); } { #print $Pugs::Grammar::StatementControl::hash{sub}->perl5; my $match = Pugs::Grammar::Perl6->parse(<<'PERL6'); say $a; PERL6 #print Dumper $match->(); is_deeply( $match->(), [ { 'exp1' => { 'scalar' => '$a' }, 'op1' => { 'name' => { 'single_quoted' => 'say' }, 'op' => 'CALL_NO_PAREN' } } ], 'statement: sub call, no parenthesis ' ); } { #print $Pugs::Grammar::StatementControl::hash{sub}->perl5; my $match = Pugs::Grammar::Perl6->parse(<<'PERL6'); say $a, $b; PERL6 #print Dumper $match->(); is_deeply( $match->(), [ { 'exp1' => { 'list' => [ { 'scalar' => '$a' }, { 'scalar' => '$b' } ], 'op1' => ',' }, 'op1' => { 'name' => { 'single_quoted' => 'say' }, 'op' => 'CALL_NO_PAREN' } } ], 'statement: sub call, no parenthesis, commas ' ); } { #print $Pugs::Grammar::StatementControl::hash{sub}->perl5; my $match = Pugs::Grammar::Perl6->parse(<<'PERL6'); #comment $a PERL6 #print Dumper $match->(); is_deeply( $match->(), [ { 'scalar' => '$a' } ], 'statement: comment ' ); } __END__ # fails! my $match = Pugs::Grammar::Perl6->parse(<<'PERL6'); if 1 { 10 + $a / "abc" } "expression"; PERL6 use YAML; print Dump $match->();