Condition Coverage

blib/lib/Parse/RecDescent.pm
Criterion Covered Total %
condition 398 1004 39.6


and 3 conditions

line !l l&&!r l&&r condition
25 13 0 0 $file eq '-' and $line == 0
27 0 0 0 @ARGV >= 2 and $ARGV <= 3
97 0 9 0 $grammar and $sourcefile
324 3 1 0 $replace and not $self->{'changed'}
681 507 743 7 @items == 1 and ref($items[0]) =~ /\AParse::RecDescent::Error/
1250 7 0 @items == 1 and ref($items[0]) =~ /\AParse::RecDescent::Error/ and $items[0]{'commitonly'}
507 749 1 @items == 1 and ($items[0]->describe || '') =~ /
0 1256 0 @items and ref($items[0]) =~ /\AParse::RecDescent::UncondReject/ || ($items[0]->describe || '') =~ /
964 1257 0 0 $parser->{'_AUTOACTION'} and defined $item
1257 0 0 $parser->{'_AUTOACTION'} and defined $item and not $item->isa('Parse::RecDescent::Action')
1230 0 27 $parser->{'_AUTOTREE'} and defined $item
1230 0 27 $parser->{'_AUTOTREE'} and defined $item and not $item->isa('Parse::RecDescent::Action')
979 9 12 6 $i == 1 and $item->isterminal
1259 3 205 0 not eval "no strict;\n local \$SIG{__WARN__} = sub {0};\n '' =~ m$ldel$pattern$rdel$mod" and $@
2170 4200 85 0 $grammar =~ /(?=$ACTION)/cog and do { ($code) = &extract_codeblock($grammar); $code }
4163 37 0 $grammar =~ /(?=$IMPLICITSUBRULE)/cog and do { ($code) = &extract_codeblock($grammar, '{([', undef, '(', 1); $code }
1476 0 0 $grammar =~ /(?=$MTOKEN)/cog and do { ($code, undef, @components) = &extract_quotelike($grammar); $code }
1474 2 0 $grammar =~ /(?=$MATCHRULE)/cog and do { ($code) = &extract_bracketed($grammar, '<'); $code }
0 0 1474 $grammar =~ /$SUBRULE/cog and $code = $1
2194 1 0 84 $prod and $prod->additem($item)
2252 21 2 0 $grammar =~ /(?=$CONDREJECTMK)/cog and do { ($code) = &extract_codeblock($grammar, '{', undef, '<'); $code }
21 0 0 $grammar =~ /(?=$SCOREMK)/cog and do { ($code) = &extract_codeblock($grammar, '{', undef, '<'); $code }
21 0 0 $grammar =~ /(?=$AUTOSCOREMK)/cog and do { ($code) = &extract_codeblock($grammar, '{', undef, '<'); $code }
13 0 0 $grammar =~ /(?=$RESYNCPATMK)/cog and do { ($code) = &extract_bracketed($grammar, '<'); $code }
9 4 0 $grammar =~ /(?=$SKIPMK)/cog and do { ($code) = &extract_codeblock($grammar, '<'); $code }
8 1 0 $grammar =~ /(?=$RULEVARPATMK)/cog and do { ($code) = &extract_codeblock($grammar, '{', undef, '<'); $code }
8 0 0 $grammar =~ /(?=$AUTOACTIONPATMK)/cog and do { ($code) = &extract_codeblock($grammar, '{', undef, '<'); $code }
8 0 0 $grammar =~ /(?=$DEFERPATMK)/cog and do { ($code) = &extract_codeblock($grammar, '{', undef, '<'); $code }
8 0 0 $grammar =~ /(?=$TOKENPATMK)/cog and do { ($code) = &extract_codeblock($grammar, '{', undef, '<'); $code }
0 0 0 $grammar =~ /(?=$MSGERRORMK)/cog and do { $commitonly = $1; ($code) = &extract_bracketed($grammar, '<'); $code }
2263 0 0 2 $prod and $prod->additem($item)
2275 0 0 0 $prod and $prod->additem($item)
2285 0 0 0 $prod and $prod->additem($item)
2294 0 0 0 $prod and $prod->additem($item)
2327 1 1 1 $base and not $base =~ /::$/
2351 0 0 1 $prod and $prod->additem($item)
2363 0 0 2 $prod and $prod->additem($item)
2372 0 0 0 $prod and $prod->addscore($1, $lookahead, $line)
2383 0 0 0 $rule and $rule->addautoscore($1, $self)
2387 0 0 0 $prod and $prod->additem($item)
2396 0 0 8 $prod and $prod->additem($item)
2408 0 0 0 $prod and $prod->additem($item)
2421 0 0 3 $prod and $prod->additem($item)
2436 0 0 1 $rule and $rule->addvar($1, $self)
2440 0 0 1 $prod and $prod->additem($item)
2473 0 0 0 $prod and $prod->additem($item)
2502 0 0 0 $prod and $prod->additem($item)
2511 0 0 1 $prod and $prod->additem($item)
2539 0 0 7 $prod and $prod->additem($item)
2551 0 0 0 $prod and $prod->additem($item)
2613 0 0 1 $rule and $rule->addprod($prod)
2624 0 0 7 $rule and $rule->addprod($prod)
2632 0 582 0 $rule and !$prod || $prod->check_pending($line)
0 0 582 $rule and !$prod || $prod->check_pending($line) and $prod = $rule->addprod('Parse::RecDescent::Production'->new($line))
2644 0 0 919 $prod and $prod->additem($item)
2651 0 0 5 $prod and $prod->additem($item)
2658 0 0 208 $prod and $prod->additem($item)
2671 0 0 0 $prod and $prod->additem($item)
2708 0 0 246 $prod and $prod->additem($item)
2711 0 0 246 not $matchrule and $rule
2731 0 0 29 $prod and $prod->additem($item)
2734 0 0 29 not $matchrule and $rule
2759 0 0 53 $prod and $prod->additem($item)
2762 0 0 53 not $matchrule and $rule
2785 0 0 0 $prod and $prod->additem($item)
2788 0 0 0 not $matchrule and $rule
2809 0 0 1 $prod and $prod->additem($item)
2812 0 0 1 not $matchrule and $rule
2833 0 0 0 $prod and $prod->additem($item)
2836 0 0 0 not $matchrule and $rule
2858 0 0 0 $prod and $prod->additem($item)
2861 0 0 0 not $matchrule and $rule
2888 0 0 1020 $prod and $prod->additem($item)
2891 2 0 1018 not $matchrule and $rule
2956 0 0 0 open TRACE_FILE, $mode, 'RD_TRACE' and print TRACE_FILE "my \$ERRORS;\n$code"
2961 3 4 1 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 3 4 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Aeasy/
0 4 2 not defined $return and defined $score
1 0 4 not defined $return and defined $score
1 0 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 1 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Aa/
1 0 0 not defined $return and defined $score
1 0 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 1 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and do { $_tok = 'b'; 1 }
0 0 1 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and do { $_tok = 'b'; 1 } and substr($text, 0, length $_tok) eq $_tok
0 0 1 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and do { $_tok = 'b'; 1 } and substr($text, 0, length $_tok) eq $_tok and do { substr($text, 0, length $_tok) = ''; 1 }
0 0 0 not defined $return and defined $score
0 0 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 0 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Acat/
0 0 2 not defined $return and defined $score
0 2 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
5 0 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Ad/
0 5 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 0 5 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Ad/
0 0 5 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
5 0 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Ad/
0 2 0 not defined $return and defined $score
0 0 2 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 1 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Avar/
0 0 1 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
1 0 1 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Aholds/
2 0 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 2 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\A\;/
0 1 2 not defined $return and defined $score
2 0 1 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 2 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Adog/
0 0 1 not defined $return and defined $score
1 0 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 1 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\A(?:ee)/
1 0 0 not defined $return and defined $score
1 0 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 1 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Asome\ extension/
0 0 1 not defined $return and defined $score
0 2 0 not defined $return and defined $score
0 0 2 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 2 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\A(?:[a-z] # LEADING ALPHABETIC \w* # FOLLOWED BY ALPHAS, DIGITS, OR UNDERSCORES )/xi
0 2 0 not defined $return and defined $score
0 0 2 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 2 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Ais/
0 0 2 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 0 2 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Aare/
0 1 0 not defined $return and defined $score
0 0 1 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
1 0 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Afred/
0 0 3 not defined $return and defined $score
0 3 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 1 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\A(?:[a-z]\w*)/i
0 1 0 not defined $return and defined $score
0 1 0 not defined $return and defined $score
0 0 1 $text =~ s/\A($Parse::RecDescent::namespace000006::skip)/'' if $lastsep = $1;/e and do { $_tok = 'hello'; 1 }
1 0 0 $text =~ s/\A($Parse::RecDescent::namespace000006::skip)/'' if $lastsep = $1;/e and do { $_tok = 'hello'; 1 } and substr($text, 0, length $_tok) eq $_tok
0 1 0 $text =~ s/\A($Parse::RecDescent::namespace000006::skip)/'' if $lastsep = $1;/e and do { $_tok = 'hello'; 1 } and substr($text, 0, length $_tok) eq $_tok and do { substr($text, 0, length $_tok) = ''; 1 }
1 0 1 not defined $return and defined $score
0 2 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 4 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and do { $_tok = '('; 1 }
0 0 4 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and do { $_tok = '('; 1 } and substr($text, 0, length $_tok) eq $_tok
0 4 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and do { $_tok = '('; 1 } and substr($text, 0, length $_tok) eq $_tok and do { substr($text, 0, length $_tok) = ''; 1 }
0 0 4 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 4 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Athe/
0 1 3 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 3 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and do { $_tok = "$main::first"; 1 }
0 1 2 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and do { $_tok = "$main::first"; 1 } and substr($text, 0, length $_tok) eq $_tok
0 1 1 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and do { $_tok = "$main::first"; 1 } and substr($text, 0, length $_tok) eq $_tok and do { substr($text, 0, length $_tok) = ''; 1 }
0 0 4 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 2 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\A(?:te+st)/
4 0 0 not defined $return and defined $score
0 1 0 $text =~ s/\A($Parse::RecDescent::namespace000002::skip)/'' if $lastsep = $1;/e and $text =~ /\A(?:[a-z]+)/i
0 1 0 not defined $return and defined $score
1 0 0 not defined $return and defined $score
0 1 0 not defined $return and defined $score
0 1 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 0 1 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Aa/
0 1 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 0 1 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\A(?:c)/
0 1 0 not defined $return and defined $score
0 0 1 not defined $return and defined $score
0 1 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
2 0 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Aa/
0 2 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 0 2 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Ab/
0 0 2 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
2 0 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Ac/
0 2 0 $test6 && $text
0 4 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 0 4 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Aa/
0 2 0 not defined $return and defined $score
0 0 4 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
2 0 2 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Ax/
2 0 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
3 0 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\A(?:y+)/
0 0 3 not defined $return and defined $score
0 3 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 0 3 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Aa/
0 3 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
0 2 1 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\A(?:c+)/
0 0 3 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
1 0 2 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 } and $text =~ /\Adddd/
0 1 0 $text =~ s/\A($Parse::RecDescent::namespace000001::skip)/'' if $lastsep = $1;/e and do { $itempos[$#itempos]{'offset'}{'from'} += length $lastsep; $itempos[$#itempos]{'line'}{'from'} = $thisline; $itempos[$#itempos]{'column'}{'from'} = $thiscolumn; 1 }
2969 66 0 0 $ERRORS and not &_verbosity('HINT')
2997 82 0 6 $grammar =~ /$BETWEEN/cog and do { $min = $2; 1 }
82 4 0 $grammar =~ /$ATLEAST/cog and do { $min = $2; 1 }
3005 59 0 4 $1 eq $subrule and $min > 0
3049 5 0 0 $main::RD_AUTOSTUB and $main::RD_AUTOSTUB ne '1'
3275 86 10 3 defined $_itempos and not defined $itemposfirst
3281 6 93 1 ++$reps >= $min and $prevtextlen == length $text
3353 0 4209 0 defined $main::RD_ERRORS and $main::RD_ERRORS
0 4209 0 defined $main::RD_ERRORS and $main::RD_ERRORS and $_[0] =~ /ERRORS/
437 3797 2 defined $main::RD_HINT and $main::RD_HINT
3797 2 0 defined $main::RD_HINT and $main::RD_HINT and $_[0] =~ /ERRORS|WARN|HINT/
2 4234 0 defined $main::RD_WARN and $main::RD_WARN
0 4209 27 defined $main::RD_WARN and $main::RD_WARN and $_[0] =~ /ERRORS|WARN/
3373 0 27 1 &_verbosity('WARN') and $main::RD_HINT || $_[0] >= ($main::RD_WARN || 1)
3394 0 0 2 defined $main::RD_TRACE and $main::RD_TRACE =~ /\d+/
1 0 1 defined $main::RD_TRACE and $main::RD_TRACE =~ /\d+/ and $main::RD_TRACE > 1
2 0 0 defined $main::RD_TRACE and $main::RD_TRACE =~ /\d+/ and $main::RD_TRACE > 1 and $main::RD_TRACE + 10 < length $_[0]
3412 0 2 0 defined $main::RD_TRACE and $main::RD_TRACE =~ /\d+/
4 0 0 defined $main::RD_TRACE and $main::RD_TRACE =~ /\d+/ and $main::RD_TRACE > 1
0 4 0 defined $main::RD_TRACE and $main::RD_TRACE =~ /\d+/ and $main::RD_TRACE > 1 and $main::RD_TRACE + 10 < length $_[0]
3466 2853 2971 0 exists $self->{'lookahead'} and $self->{'lookahead'}

or 2 conditions

line l !l condition
681 748 2 $items[0]->describe || ''
1512 0 1020 $_[4] || undef
1 1019 $_[6] || undef
1627 0 329 $argcode || undef
2256 127 10 $2 || ''
2280 0 0 $1 || '{}'
2692 1 1475 &extract_codeblock($grammar, '[]', '') || ''
2961 4 0 4 $Parse::RecDescent::namespace000001::tracelevel || 0
3 1 1 $Parse::RecDescent::namespace000001::tracelevel || 0
0 1 0 $Parse::RecDescent::namespace000001::tracelevel || 0
0 1 0 $Parse::RecDescent::namespace000001::tracelevel || 0
0 0 0 $Parse::RecDescent::namespace000001::tracelevel || 0
2 0 0 $Parse::RecDescent::namespace000001::tracelevel || 0
0 1 1 $Parse::RecDescent::namespace000001::tracelevel || 0
0 0 3 $Parse::RecDescent::namespace000001::tracelevel || 0
0 0 1 $Parse::RecDescent::namespace000001::tracelevel || 0
0 1 0 $Parse::RecDescent::namespace000001::tracelevel || 0
1 0 0 $Parse::RecDescent::namespace000001::tracelevel || 0
0 2 0 $Parse::RecDescent::namespace000001::tracelevel || 0
0 2 0 $Parse::RecDescent::namespace000001::tracelevel || 0
0 0 1 $Parse::RecDescent::namespace000001::tracelevel || 0
3 0 0 $Parse::RecDescent::namespace000001::tracelevel || 0
0 1 $Parse::RecDescent::namespace000006::tracelevel || 0
0 0 1 $Parse::RecDescent::namespace000006::tracelevel || 0
2 0 0 $Parse::RecDescent::namespace000001::tracelevel || 0
0 4 0 $Parse::RecDescent::namespace000002::tracelevel || 0
0 0 1 $Parse::RecDescent::namespace000001::tracelevel || 0
0 1 $Parse::RecDescent::namespace000001::tracelevel || 0
0 0 1 $Parse::RecDescent::namespace000001::tracelevel || 0
0 1 $Parse::RecDescent::namespace000001::tracelevel || 0
0 0 1 $Parse::RecDescent::namespace000001::tracelevel || 0
0 0 2 $Parse::RecDescent::namespace000001::tracelevel || 0
0 3 0 $Parse::RecDescent::namespace000001::tracelevel || 0
3212 0 4 0 $_[2] || 0
3515 4278 434 3 pos $_[0] || 0

or 3 conditions

line l !l&&r !l&&!r condition
102 9 0 0 'Parse::RecDescent'->new($grammar, 1, $class) || croak(q[Can't compile bad grammar])
315 0 0 662 ref $_[0] || $_[0]
395 22 58 1216 not $next or &_contains($next, @expected)
631 0 1252 0 ref $self || $self
681 0 0 1256 ref($items[0]) =~ /\AParse::RecDescent::UncondReject/ || ($items[0]->describe || '') =~ /
1032 0 0 91 ref $_[0] || $_[0]
1086 0 0 23 ref $_[0] || $_[0]
1142 0 0 2 ref $_[0] || $_[0]
1186 0 0 7 ref $_[0] || $_[0]
1241 0 0 208 ref $_[0] || $_[0]
1347 0 0 919 ref $_[0] || $_[0]
1420 0 0 5 ref $_[0] || $_[0]
1492 0 0 3381 $_[0]{'implicit'} || $_[0]{'subrule'}
1511 0 0 1020 ref $_[0] || $_[0]
1582 186 0 1591 $_[0]{'expected'} || $_[0]{'subrule'}
1598 0 329 0 ref $self || $self
1798 127 0 6 $self->{'name'} || $self->{'hashname'}
1833 0 0 4 $self->{'name'} || $self->{'hashname'}
1886 127 0 10 $self->{'name'} || $self->{'hashname'}
1930 0 0 0 not $self->{'unexpected'} or $self->{'unexpected'} =~ /\A\s*\Z/s
1966 0 0 25 ref $_[0] || $_[0]
2148 0 0 305 $grammar =~ /\$$_/ || $self->{'_check'}{'itempos'}
2170 2 0 1474 $grammar =~ /(?=$MATCHRULE)/cog and do { ($code) = &extract_bracketed($grammar, '<'); $code } or $grammar =~ /$SUBRULE/cog and $code = $1
2486 0 0 0 eval 'no strict; local $SIG{__WARN__} = sub {0}; my @arr=(' . $code . '); @arr' || ()
2632 0 582 0 !$prod || $prod->check_pending($line)
2943 0 37 29 $ERRORS or $isimplicit
37 0 29 $ERRORS or $isimplicit or not $main::RD_CHECK
2948 0 37 29 $ERRORS or $isimplicit
37 0 29 $ERRORS or $isimplicit or $Parse::RecDescent::compiling
2961 5 1 3 $_matched or $commit
0 5 4 $_matched or defined $score
4 0 1 $_matched or $commit
0 5 0 $_matched or $commit
0 0 1 $_matched or $commit
0 0 5 $_matched or defined $score
0 0 1 $_matched or $commit
0 0 1 $_matched or defined $score
1 0 0 $_matched or $commit
0 1 0 $_matched or defined $score
0 0 0 $_matched or $commit
0 0 0 $_matched or $commit
2 0 0 $_matched or defined $score
0 5 0 $_matched or $commit
2 0 0 $_matched or defined $score
3 0 0 $_matched or $commit
0 3 0 $_matched or defined $score
1 0 0 $_matched or $commit
0 1 0 $_matched or defined $score
0 1 0 $_matched or $commit
0 0 1 $_matched or defined $score
0 0 1 $_matched or $commit
0 1 0 $_matched or defined $score
0 1 0 $_matched or $commit
0 2 0 $_matched or defined $score
0 2 0 $_matched or $commit
0 0 2 $_matched or defined $score
0 2 0 $_matched or $commit
2 0 0 $_matched or $commit
0 2 0 $_matched or defined $score
0 1 0 $_matched or $commit
0 3 0 $_matched or defined $score
0 0 1 $_matched or $commit
1 0 0 $_matched or defined $score
0 1 0 $_matched or $commit
0 0 1 $_matched or defined $score
0 2 0 $_matched or $commit
0 0 2 $_matched or defined $score
0 0 2 $_matched or $commit
1 0 3 $_matched or defined $score
0 1 0 $_matched or $commit
0 0 1 $_matched or defined $score
0 0 1 $_matched or $commit
1 0 0 $_matched or defined $score
0 1 0 $_matched or $commit
0 0 1 $_matched or defined $score
0 0 1 $_matched or $commit
1 0 0 $_matched or defined $score
0 1 0 $_matched or $commit
0 0 1 $_matched or $commit
0 1 0 $_matched or defined $score
1 0 0 $_matched or $commit
4 0 0 $_matched or $commit
0 4 0 $_matched or $commit
0 0 4 $_matched or defined $score
0 3 0 $_matched or $commit
0 3 0 $_matched or defined $score
2995 6 0 82 $grammar =~ /$OPTIONAL/cog or $grammar =~ /$ANY/cog
2997 0 6 82 $grammar =~ /$MANY/cog or $grammar =~ /$EXACTLY/cog
0 2 86 $grammar =~ /$MANY/cog or $grammar =~ /$EXACTLY/cog or $grammar =~ /$ATMOST/cog
4 0 84 $grammar =~ /$MANY/cog or $grammar =~ /$EXACTLY/cog or $grammar =~ /$ATMOST/cog or $grammar =~ /$BETWEEN/cog and do { $min = $2; 1 }
5 0 82 $grammar =~ /$MANY/cog or $grammar =~ /$EXACTLY/cog or $grammar =~ /$ATMOST/cog or $grammar =~ /$BETWEEN/cog and do { $min = $2; 1 } or $grammar =~ /$ATLEAST/cog and do { $min = $2; 1 }
0 58 29 $grammar =~ /$MANY/cog or $grammar =~ /$EXACTLY/cog or $grammar =~ /$ATMOST/cog or $grammar =~ /$BETWEEN/cog and do { $min = $2; 1 } or $grammar =~ /$ATLEAST/cog and do { $min = $2; 1 } or $grammar =~ /$SUBRULE(?!\s*:)/cog
3031 1037 0 2 defined do { $rules }->{$call} or defined &{"Parse::RecDescent::$call";}
3092 0 5 1257 $hasempty ||= $prod->isempty
3209 49 0 0 ref $_[0] || $_[0]
3225 48 0 1 $main::RD_WARN || $_[0]{'__WARN__'}
3226 0 0 49 $main::RD_HINT || $_[0]{'__HINT__'}
3227 1 0 48 $main::RD_TRACE || $_[0]{'__TRACE__'}
3353 0 0 4236 defined $main::RD_TRACE or defined $main::RD_HINT and $main::RD_HINT and $_[0] =~ /ERRORS|WARN|HINT/
2 0 4234 defined $main::RD_TRACE or defined $main::RD_HINT and $main::RD_HINT and $_[0] =~ /ERRORS|WARN|HINT/ or defined $main::RD_WARN and $main::RD_WARN and $_[0] =~ /ERRORS|WARN/
3373 0 1 27 $main::RD_HINT || $_[0] >= ($main::RD_WARN || 1)
3433 0 1 3 $_[1] || $lastcontext
3434 0 3 0 $_[2] || $lastrulename
3435 0 0 3 $_[3] || $lastlevel