#!/usr/bin/perl
#Copyright 2007-8 Arthur S Goldstein
use Test::More tests => 4;
BEGIN { use_ok('Parse::Stallion') };
use Time::Local;
#use Data::Dumper;
my %rule;
$rule{start_rule} =
A('white_space_word', 'end_of_string',
E(sub {
my $param = shift;
#use Data::Dumper;print STDERR "param in to start rule is ".Dumper($param)."\n";
if ($param->{white_space_word} =~ /\s/) {
return "found white space";
}
else {
return "no white space";
}
})
);
$rule{white_space_word} =
L(qr/\s+\w+\s+/
);
$rule{end_of_string} =
L(qr/\z/
);
my ($result_1, $result_2);
my $after_parser = new Parse::Stallion(
\%rule,
{start_rule => 'start_rule',
});
$result_1 = $after_parser->parse_and_evaluate(' jj ');
my $during_parser = new Parse::Stallion(
\%rule,
{do_evaluation_in_parsing => 1,
start_rule => 'start_rule',
});
#print STDERR "getting result 2\n";
$result_2 = $during_parser->parse_and_evaluate(' jj ');
#print STDERR "result 1 is $result_1 and r2 is $result_2\n";
is ($result_1, $result_2, "with spaces match");
my $ks_after_parser = new Parse::Stallion(
\%rule,
{keep_white_space => 0,
start_rule => 'start_rule',
});
$result_1 = $ks_after_parser->parse_and_evaluate(' jj ');
my $ks_during_parser = new Parse::Stallion(
\%rule,
{do_evaluation_in_parsing => 1,
keep_white_space => 0,
start_rule => 'start_rule',
});
$result_2 = $ks_during_parser->parse_and_evaluate(' jj ');
is ($result_1, $result_2, "with forced keep white spaces match");
my $kws_after_parser = new Parse::Stallion(
\%rule,
{keep_white_space => 1,
start_rule => 'start_rule',
});
$result_1 = $kws_after_parser->parse_and_evaluate(' jj ');
my $kws_during_parser = new Parse::Stallion(
\%rule,
{do_evaluation_in_parsing => 1,
keep_white_space => 1,
start_rule => 'start_rule',
});
$result_2 = $kws_during_parser->parse_and_evaluate(' jj ');
is ($result_1, $result_2, "with forced not to keep white spaces match");