File Coverage

blib/lib/Petal/CodePerl/Compiler.pm
Criterion Covered Total %
statement 26 30 86.6
branch 2 4 50.0
condition n/a
subroutine 7 8 87.5
pod 0 2 0.0
total 35 44 79.5


line stmt bran cond sub pod time code
1             # $Header:$
2              
3 1     1   691 use strict;
  1         1  
  1         30  
4 1     1   6 use warnings;
  1         1  
  1         33  
5              
6             package Petal::CodePerl::Compiler;
7              
8 1     1   5 use Code::Perl::Expr qw(:easy);
  1         14  
  1         169  
9 1     1   7 use Petal::CodePerl::Expr qw(:easy);
  1         1  
  1         124  
10              
11 1     1   6 use Carp qw( confess );
  1         2  
  1         53  
12              
13 1     1   7 use Data::Dumper qw(Dumper);
  1         2  
  1         284  
14              
15             our $root = holder();
16              
17             our $Parser;
18              
19             sub compile
20             {
21 0     0 0 0 my $self = shift;
22              
23 0         0 my $expr = shift;
24              
25 0         0 return $self->compileRule("only_expr", $expr);
26             }
27              
28             sub compileRule
29             {
30 20     20 0 1168491 require Petal::CodePerl::GrammarLoader;
31              
32 20         61 my $self = shift;
33              
34 20         40 my $rule = shift;
35              
36 20         51 my $expr = shift;
37              
38 20 50       91 my $expr_ref = ref($expr) ? $expr : \$expr;
39              
40 20         268 my $comp = $Parser->$rule($expr_ref);
41              
42 20 50       579 if (length($$expr_ref))
43             {
44 0         0 confess "'$$expr_ref' was left unparsed";
45             }
46              
47 20         96 return $comp;
48             }
49              
50             1;