use lib
'../Pugs-Compiler-Rule/lib',
'../Pugs-Compiler-Tokenizer/lib',
'../Pugs-Compiler-Precedence/lib',
;
use Test::More tests => 2;
use Pugs::Compiler::Rule;
use Pugs::Grammar::Precedence;
use Pugs::Grammar::Term;
use Pugs::Grammar::Operator;
use Pugs::Grammar::Expression;
use Pugs::Grammar::Perl6;
use Data::Dumper;
$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;
{
my $match = Pugs::Grammar::Perl6->parse( q(10;) );
#print Dumper $match->();
is_deeply(
$match->(),
{
int => 10,
pos => 2,
},
'term 1'
);
}
TODO:
{
local $TODO = "expression without trailing ';'";
my $match;
eval {
$match = Pugs::Grammar::Perl6->parse( q(10) );
};
#print Dumper $match->();
is_deeply(
$match->(),
{
int => 10,
pos => 2,
},
'term 1'
);
}
__END__
# TODO - update
{
my $match = Pugs::Grammar::Expression->ast( q(10+20) );
#print Dumper $match->();
is_deeply(
$match->(),
{
'exp1' => {
'num' => '10'
},
'exp2' => {
'num' => '20'
},
'op1' => '+'
},
'term 2'
);
}
{
my $match = Pugs::Grammar::Expression->ast( q(10,20) );
#print Dumper $match->();
is_deeply(
$match->(),
{
'list' => [
{
'num' => '10'
},
{
'num' => '20'
}
],
'op1' => ','
},
'list'
);
}
{
my $match = Pugs::Grammar::Expression->ast( q(10 + $a / "abc") );
#print Dumper $match->();
is_deeply(
$match->(),
{
'exp1' => {
'num' => '10'
},
'exp2' => {
'exp1' => {
'scalar' => '$a'
},
'exp2' => {
'double_quoted' => 'abc'
},
'op1' => '/'
},
'op1' => '+'
},
'expression q(10 + $a / "abc")'
);
}
{
my $match = Pugs::Grammar::Expression->ast( q(1,2,3) );
#print Dumper $match->();
is_deeply(
$match->(),
{
'list' => [
{
'num' => '1'
},
{
'num' => '2'
},
{
'num' => '3'
}
],
'op1' => ','
},
'list expression'
);
}
{
my $match = Pugs::Grammar::Expression->ast( q(1,2 Y 3) );
#print Dumper $match->();
is_deeply(
$match->(),
{
'list' => [
{
'list' => [
{
'num' => '1'
},
{
'num' => '2'
}
],
'op1' => ','
},
{
'num' => '3'
}
],
'op1' => 'Y'
},
'list+list expression'
);
}