Grammar-Marpa
view release on metacpan or search on metacpan
lib/Grammar/Marpa.pm view on Meta::CPAN
}
sub new {
my $class = shift;
$class = ref($class) || $class;
my $ebnf = ref($_[0]) eq 'HASH' ? undef : shift(@_);
my $pkg;
my %args;
if (ref ($_[-1]) eq 'HASH') {
%args = %{pop(@_)};
$pkg = shift(@_) // (caller)[0];
}
elsif (@_ % 2) {
$pkg = shift;
%args = @_;
}
else {
$pkg = (caller)[0];
%args = @_;
}
my %Gargs;
$Gargs{ bless_package } = delete $args{ bless_package } if $args{ bless_package };
$Gargs{ trace_file_handle } = $args{ trace_file_handle } if $args{ trace_file_handle };
$ebnf //= delete $args{ source };
$ebnf = $$ebnf if ref($ebnf);
my $G = Marpa::R2::Scanless::G->new({ source => \$ebnf, %Gargs });
return bless [ $G, $pkg, \%args ] => $class;
}
( run in 0.618 second using v1.01-cache-2.11-cpan-a3c8064c92c )