The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

use Test::More tests => 5;

use_ok( 'Pugs::Compiler::Rule' );
use Pugs::Grammar::Base;
#no warnings qw( once );
use Data::Dumper;

{
    my $rule = Pugs::Compiler::Regex->compile( '(.)$0' );
    #print "Source: ", $rule->perl;
    my $match = $rule->match( "xxy" );
    is( "$match", "xx", 'match $0' );
    $match = $rule->match('xyy');
    is $match->str, 'yy';
}

{
    my $rule = Pugs::Compiler::Regex->compile( '(.)(.)$1' );
    my $match = $rule->match( "xyyz" );
    #print "Ast: ", Dumper( Pugs::Grammar::Rule->rule( '(.)(.)$1' )->() );
    #print "Source: ", $rule->perl;
    #print "Match: ", $match->perl;
    is( "$match", "xyy", 'match $1' );
    $match = $rule->match('xyxx');
    is "$match", 'yxx';
}

=for later

{
    my $rule = Pugs::Compiler::Regex->compile( '((.)$0[0])' );
    my $match = $rule->match( "xx" );
    #warn "Ast: ", Dumper( Pugs::Grammar::Rule->rule( '((.)$0[0])' )->() );
    #warn "Source: ", $rule->perl;
    #warn "Match: ", $match->perl;
    is( $match?1:0, 1, 'booleanify - unnamed rules are objects' );
    is( "$match", "xyz", 'match $0[0]' );
}

=cut