# $Header:$
use strict;
use warnings;
package Petal::CodePerl::Compiler;
use Code::Perl::Expr qw(:easy);
use Petal::CodePerl::Expr qw(:easy);
use Carp qw( confess );
use Data::Dumper qw(Dumper);
our $root = holder();
our $Parser;
sub compile
{
my $self = shift;
my $expr = shift;
return $self->compileRule("only_expr", $expr);
}
sub compileRule
{
require Petal::CodePerl::GrammarLoader;
my $self = shift;
my $rule = shift;
my $expr = shift;
my $expr_ref = ref($expr) ? $expr : \$expr;
my $comp = $Parser->$rule($expr_ref);
if (length($$expr_ref))
{
confess "'$$expr_ref' was left unparsed";
}
return $comp;
}
1;