Branch Coverage

blib/lib/Marpa/R3/SLG.pm
Criterion Covered Total %
branch 227 350 64.8


line true false branch
77 0 288 unless $flat_args
101 0 269 unless $lua
117 0 2 unless $flat_args
121 2 0 if (defined $value)
127 0 2 if (scalar @bad_arguments)
139 0 288 unless defined $dsl
143 0 288 if ($dsl_ref_type ne 'SCALAR')
144 0 0 $dsl_ref_type ? :
150 0 288 unless (defined ${$dsl;})
159 0 288 if (defined $value)
167 0 288 if (exists $flat_args->{'trace_actions'})
170 0 0 if ($value)
171 0 0 unless say {$trace_file_handle;} 'Setting trace_actions option'
177 288 0 if (defined exists $flat_args->{'bless_package'})
183 4 284 if (exists $flat_args->{'exhaustion'})
209 6 282 if (exists $flat_args->{'rejection'})
235 42 246 if (exists $flat_args->{'semantics_package'})
241 18 270 if (exists $flat_args->{'ranking_method'})
349 0 7041 unless (defined eval { do { $compiled_re = qr/$perl_re/msx; 1 } })
353 0 7041 unless ($compiled_re)
417 92 0 unless my $verbose = $options->{'verbose'}
418 46 46 $options->{'diag'} ? :
432 14 1 unless my $verbose = $options->{'verbose'}
433 0 15 $options->{'diag'} ? :
447 40 0 unless my $verbose = $options->{'verbose'}
448 0 40 $options->{'diag'} ? :
462 0 0 unless my $verbose = $options->{'verbose'}
463 0 0 $options->{'diag'} ? :
477 151 0 unless my $verbose = $options->{'verbose'}
478 20 131 $options->{'diag'} ? :
492 52 0 unless my $verbose = $options->{'verbose'}
493 26 26 $options->{'diag'} ? :
507 20 2 unless my $verbose = $options->{'verbose'}
508 1 21 $options->{'diag'} ? :
522 0 0 unless my $verbose = $options->{'verbose'}
523 0 0 $options->{'diag'} ? :
537 9 2 unless my $verbose = $options->{'verbose'}
538 1 10 $options->{'diag'} ? :
552 0 5 unless my $verbose = $options->{'verbose'}
553 1 4 $options->{'diag'} ? :
664 0 157369 unless ($eval_ok)
695 1925 2394 unless ($cmd)
700 0 2394 unless $handler
710 5 1925 unless ($eval_ok)
721 2 80 if $next > $last
733 0 0 if $next > $last
745 4 61 if $next > $last
757 2 66 if $next > $last
769 3 138 if $next > $last
781 0 0 if $next > $last
793 1464 49133 if $next > $last
805 4 104 if $next > $last
855 12 1 unless my $verbose = $options->{'verbose'}
953 10456 1413 if ('[' eq substr($semantics, 0, 1) and ']' eq substr($semantics, -1, 1))
968 1413 0 if $allowed_semantics->{$semantics}
970 0 0 if $semantics =~ / \A rhs \d+ \z /msx
986 1443 10426 if $blessing eq '::undef'
987 0 10426 if ($closure)
989 0 0 if ($ref_type eq 'SCALAR')
1006 70 10356 if $semantics eq '::array'
1007 10356 0 if substr($semantics, 0, 1) eq '['
1036 545 11324 if $rule_is_nullable
1047 7360 539 unless defined $irlids
1051 0 539 if $rule_count <= 0
1054 533 6 if ($rule_count == 1)
1058 0 533 if ($trace_actions)
1060 0 0 unless say {$trace_file_handle;} qq[Nulled symbol "$lhs_name" ], qq[ resolved to "$resolution_name" from rule ], $slg->g1_rule_show($resolution_rule)
1088 5 1 if (scalar @{$empty_rules;})
1092 0 5 if ($trace_actions)
1094 0 0 unless say {$trace_file_handle;} qq[Nulled symbol "$lhs_name" ], qq[ resolved to "$resolution_name" from rule ], $slg->g1_rule_show($resolution_rule)
1116 0 1 if ($first_closure_name ne $other_closure_name or $first_semantics ne $other_semantics or $first_blessing ne $other_blessing)
1136 0 1 if ($trace_actions)
1138 0 0 unless say {$trace_file_handle;} qq[Nulled symbol "$lhs_name" ], qq[ resolved to "$resolution_name" from rule ], $slg->g1_rule_show($resolution_rule)
1171 0 14090 unless defined $blessing
1173 0 14090 unless ($semantics)
1177 7597 6493 if (substr($semantics, 0, 1) eq '[')
1184 0 6493 unless ($allowed_semantics->{$semantics})
1234 7360 539 unless defined $semantic_rule
1244 375 11494 if $semantics eq '::!default'
1245 499 11370 if $semantics eq '::array'
1246 508 11361 if $semantics eq '::first'
1264 1622 12468 if $semantics eq '::!default' and $blessing eq '::undef'
1265 4871 7597 if $semantics eq '::!default'
1266 0 12468 if $semantics eq '::array'
1284 11869 12468 if (defined $irlid)
1309 345 23992 if (defined $closure and ref $closure eq 'CODE')
1315 18582 5410 if (substr($semantics, 0, 1) eq '[')
1325 31 24306 if ($semantics eq '::undef')
1331 12468 11838 unless defined $irlid
1333 11493 345 unless defined $thingy_ref
1335 0 345 if ($ref_type eq '')
1345 345 0 if ($ref_type eq 'CODE')
1348 76 269 if defined $nulling_symbol_id and defined $irlid
1364 4871 19435 if (defined $lexeme_id and $semantics eq '::value')
1370 7597 11838 unless defined $irlid
1373 508 11330 if ($semantics =~ /\A [:][:] rhs (\d+) \z/msx)
1377 11330 508 unless defined $singleton
1380 0 508 if ($is_discard_sequence_rule)
1387 0 508 if ($is_sequence_rule)
1402 0 508 unless (scalar @elements)
1413 0 508 unless (defined $singleton_element)
1426 0 18927 unless (@array_fate)
1434 17903 1024 if ($blessing ne '::undef')
1438 0 18927 if substr($semantics, 0, 1) ne '['
1447 70 55097 if ($result_descriptor eq 'g1start')
1452 70 55027 if ($result_descriptor eq 'g1length')
1457 17782 37245 if ($result_descriptor eq 'start')
1461 17782 19463 if ($result_descriptor eq 'length')
1466 8 19455 if ($result_descriptor eq 'lhs')
1467 3 5 if (defined $irlid)
1480 5 0 if (defined $lexeme_id)
1489 505 18950 if ($result_descriptor eq 'name')
1490 435 70 if (defined $irlid)
1497 70 0 if (defined $lexeme_id)
1502 0 0 if (defined $nulling_symbol_id)
1511 16 18934 if ($result_descriptor eq 'symbol')
1512 6 10 if (defined $irlid)
1524 10 0 if (defined $lexeme_id)
1529 0 0 if (defined $nulling_symbol_id)
1538 8 18926 if ($result_descriptor eq 'rule')
1539 3 5 if (defined $irlid)
1546 18926 0 if ($result_descriptor eq 'values' or $result_descriptor eq 'value')
1549 7597 11329 if (defined $lexeme_id)
1553 676 10653 if ($is_sequence_rule)
1554 217 459 $is_discard_sequence_rule ? :
1566 10473 180 if ($rule_length > 0)
1568 12806 6621 $mask->[$_] ? :
1584 11869 12468 if (defined $irlid)
1588 539 23798 if (defined $nulling_symbol_id)
1593 12468 11869 if (defined $lexeme_id)
1617 0 365 unless $symbol_is_nullable
1622 365 1208 if ($start_symbol_id == $lhs)
1630 313 23528 if ($nulling_symbol_id == $start_rhs_symbol_id)
1662 0 366 unless $default_action_resolution
1673 0 11869 unless ($rule_resolution)
1698 10426 1443 if ($blessing ne '::undef')
1699 0 10426 if $semantics eq '::!default'
1701 70 10356 if $semantics eq '::array'
1703 10356 0 if substr($semantics, 0, 1) eq '['
1721 0 365 if ($trace_actions >= 2)
1734 0 0 unless say {$trace_file_handle;} 'Rule ', $slg->g1_rule_show($rule_id), qq[ resolves to "$resolution_name"]
1754 0 14090 unless (defined $semantics)
1762 0 14090 unless (defined $blessing)
1785 366 11495 unless defined $closure_name
1787 0 11495 if ($closure_name eq '')
1788 0 0 if defined $p_error
1793 31 11464 if $closure_name eq '::undef'
1794 11118 346 if (substr($closure_name, 0, 2) eq '::' or substr($closure_name, 0, 1) eq '[')
1801 211 135 if ($closure_name =~ /([:][:])|[']/msx)
1805 135 211 unless ($fully_qualified_name)
1808 0 135 unless (defined $resolve_package)
1827 345 1 if (defined $closure)
1837 0 1 if (defined $closure and defined ${$closure;})
1848 345 1 if (defined $closure)
1849 0 345 if ($trace_actions)
1850 0 0 unless print {$trace_file_handle;} qq[Successful resolution of action "$closure_name" as $type ], 'to ', $fully_qualified_name, "\n"
1858 1 0 if ($trace_actions or defined $p_error)
1861 0 4 if (defined *{$fully_qualified_name;}{$slot})
1865 0 0 if ($trace_actions)
1866 0 0 unless print {$trace_file_handle;} $error
1869 0 0 if defined $p_error
1878 1 0 if defined $p_error
1879 0 1 if ($trace_actions)
1880 0 0 unless print {$trace_file_handle;} $error
1899 375 11495 unless defined $action_name
1902 1 11494 unless ($resolution)
1998 25189 0 if $trace_actions <= 2
1999 0 0 if ($type eq 'nulling')
2000 0 0 unless say {$trace_file_handle;} 'Registering semantics for nulling symbol: ', $slg->g1_symbol_display_form($id), "\n", ' Semantics are ', $slg->show_semantics(@raw_ops)
2007 0 0 if ($type eq 'rule')
2008 0 0 unless say {$trace_file_handle;} "Registering semantics for ${type}: ", $slg->g1_rule_show($id), ' Semantics are ', $slg->show_semantics(@raw_ops)
2015 0 0 if ($type eq 'token')
2016 0 0 unless say {$trace_file_handle;} "Registering semantics for ${type}: ", $slg->g1_symbol_display_form($id), "\n", ' Semantics are ', $slg->show_semantics(@raw_ops)
2023 0 0 unless say {$trace_file_handle;} "Registration has unknown type: $type"
2028 19004 288985 if (ref $raw_op)