Branch Coverage

blib/lib/Marpa/R3/SLG.pm
Criterion Covered Total %
branch 228 352 64.7


line true false branch
77 0 291 unless $flat_args
101 0 271 unless $lua
117 0 2 unless $flat_args
121 2 0 if (defined $value)
127 0 2 if (scalar @bad_arguments)
139 0 291 unless defined $dsl
143 0 291 if ($dsl_ref_type ne 'SCALAR')
144 0 0 $dsl_ref_type ? :
150 0 291 unless (defined ${$dsl;})
159 0 291 if (defined $value)
167 0 291 if (exists $flat_args->{'trace_actions'})
170 0 0 if ($value)
171 0 0 unless say {$trace_file_handle;} 'Setting trace_actions option'
177 291 0 if (defined exists $flat_args->{'bless_package'})
183 4 287 if (exists $flat_args->{'exhaustion'})
209 6 285 if (exists $flat_args->{'rejection'})
235 42 249 if (exists $flat_args->{'semantics_package'})
241 18 273 if (exists $flat_args->{'ranking_method'})
265 0 291 if (exists $flat_args->{'debug_level'})
369 0 7221 unless (defined eval { do { $compiled_re = qr/$perl_re/msx; 1 } })
373 0 7221 unless ($compiled_re)
437 94 0 unless my $verbose = $options->{'verbose'}
438 47 47 $options->{'diag'} ? :
452 14 1 unless my $verbose = $options->{'verbose'}
453 0 15 $options->{'diag'} ? :
467 41 0 unless my $verbose = $options->{'verbose'}
468 0 41 $options->{'diag'} ? :
482 0 0 unless my $verbose = $options->{'verbose'}
483 0 0 $options->{'diag'} ? :
497 151 0 unless my $verbose = $options->{'verbose'}
498 20 131 $options->{'diag'} ? :
512 54 0 unless my $verbose = $options->{'verbose'}
513 27 27 $options->{'diag'} ? :
527 20 2 unless my $verbose = $options->{'verbose'}
528 1 21 $options->{'diag'} ? :
542 0 0 unless my $verbose = $options->{'verbose'}
543 0 0 $options->{'diag'} ? :
557 9 2 unless my $verbose = $options->{'verbose'}
558 1 10 $options->{'diag'} ? :
572 0 5 unless my $verbose = $options->{'verbose'}
573 1 4 $options->{'diag'} ? :
684 0 160891 unless ($eval_ok)
715 1948 8 unless ($cmd)
720 0 8 unless $handler
730 5 1948 unless ($eval_ok)
741 2 82 if $next > $last
753 0 0 if $next > $last
765 4 61 if $next > $last
777 2 68 if $next > $last
789 3 141 if $next > $last
801 0 0 if $next > $last
813 1488 50426 if $next > $last
825 4 108 if $next > $last
870 12 1 unless my $verbose = $options->{'verbose'}
968 10768 1422 if ('[' eq substr($semantics, 0, 1) and ']' eq substr($semantics, -1, 1))
983 1422 0 if $allowed_semantics->{$semantics}
985 0 0 if $semantics =~ / \A rhs \d+ \z /msx
1001 1452 10738 if $blessing eq '::undef'
1002 0 10738 if ($closure)
1004 0 0 if ($ref_type eq 'SCALAR')
1021 70 10668 if $semantics eq '::array'
1022 10668 0 if substr($semantics, 0, 1) eq '['
1051 554 11636 if $rule_is_nullable
1062 7573 548 unless defined $irlids
1066 0 548 if $rule_count <= 0
1069 542 6 if ($rule_count == 1)
1073 0 542 if ($trace_actions)
1075 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)
1103 5 1 if (scalar @{$empty_rules;})
1107 0 5 if ($trace_actions)
1109 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)
1131 0 1 if ($first_closure_name ne $other_closure_name or $first_semantics ne $other_semantics or $first_blessing ne $other_blessing)
1151 0 1 if ($trace_actions)
1153 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)
1186 0 14471 unless defined $blessing
1188 0 14471 unless ($semantics)
1192 7822 6649 if (substr($semantics, 0, 1) eq '[')
1199 0 6649 unless ($allowed_semantics->{$semantics})
1249 7573 548 unless defined $semantic_rule
1259 375 11815 if $semantics eq '::!default'
1260 502 11688 if $semantics eq '::array'
1261 514 11676 if $semantics eq '::first'
1279 1631 12840 if $semantics eq '::!default' and $blessing eq '::undef'
1280 5018 7822 if $semantics eq '::!default'
1281 0 12840 if $semantics eq '::array'
1299 12190 12840 if (defined $irlid)
1324 345 24685 if (defined $closure and ref $closure eq 'CODE')
1330 19122 5563 if (substr($semantics, 0, 1) eq '[')
1340 31 24999 if ($semantics eq '::undef')
1346 12840 12159 unless defined $irlid
1348 11814 345 unless defined $thingy_ref
1350 0 345 if ($ref_type eq '')
1360 345 0 if ($ref_type eq 'CODE')
1363 76 269 if defined $nulling_symbol_id and defined $irlid
1379 5018 19981 if (defined $lexeme_id and $semantics eq '::value')
1385 7822 12159 unless defined $irlid
1388 514 11645 if ($semantics =~ /\A [:][:] rhs (\d+) \z/msx)
1392 11645 514 unless defined $singleton
1395 0 514 if ($is_discard_sequence_rule)
1402 0 514 if ($is_sequence_rule)
1417 0 514 unless (scalar @elements)
1428 0 514 unless (defined $singleton_element)
1441 0 19467 unless (@array_fate)
1449 18440 1027 if ($blessing ne '::undef')
1453 0 19467 if substr($semantics, 0, 1) ne '['
1462 70 56711 if ($result_descriptor eq 'g1start')
1467 70 56641 if ($result_descriptor eq 'g1length')
1472 18319 38322 if ($result_descriptor eq 'start')
1476 18319 20003 if ($result_descriptor eq 'length')
1481 8 19995 if ($result_descriptor eq 'lhs')
1482 3 5 if (defined $irlid)
1495 5 0 if (defined $lexeme_id)
1504 505 19490 if ($result_descriptor eq 'name')
1505 435 70 if (defined $irlid)
1512 70 0 if (defined $lexeme_id)
1517 0 0 if (defined $nulling_symbol_id)
1526 16 19474 if ($result_descriptor eq 'symbol')
1527 6 10 if (defined $irlid)
1539 10 0 if (defined $lexeme_id)
1544 0 0 if (defined $nulling_symbol_id)
1553 8 19466 if ($result_descriptor eq 'rule')
1554 3 5 if (defined $irlid)
1561 19466 0 if ($result_descriptor eq 'values' or $result_descriptor eq 'value')
1564 7822 11644 if (defined $lexeme_id)
1568 697 10947 if ($is_sequence_rule)
1569 223 474 $is_discard_sequence_rule ? :
1581 10764 183 if ($rule_length > 0)
1583 13142 6819 $mask->[$_] ? :
1599 12190 12840 if (defined $irlid)
1603 548 24482 if (defined $nulling_symbol_id)
1608 12840 12190 if (defined $lexeme_id)
1632 0 371 unless $symbol_is_nullable
1637 371 1211 if ($start_symbol_id == $lhs)
1645 319 24218 if ($nulling_symbol_id == $start_rhs_symbol_id)
1677 0 372 unless $default_action_resolution
1688 0 12190 unless ($rule_resolution)
1713 10738 1452 if ($blessing ne '::undef')
1714 0 10738 if $semantics eq '::!default'
1716 70 10668 if $semantics eq '::array'
1718 10668 0 if substr($semantics, 0, 1) eq '['
1736 0 371 if ($trace_actions >= 2)
1749 0 0 unless say {$trace_file_handle;} 'Rule ', $slg->g1_rule_show($rule_id), qq[ resolves to "$resolution_name"]
1769 0 14471 unless (defined $semantics)
1777 0 14471 unless (defined $blessing)
1800 372 11816 unless defined $closure_name
1802 0 11816 if ($closure_name eq '')
1803 0 0 if defined $p_error
1808 31 11785 if $closure_name eq '::undef'
1809 11439 346 if (substr($closure_name, 0, 2) eq '::' or substr($closure_name, 0, 1) eq '[')
1816 211 135 if ($closure_name =~ /([:][:])|[']/msx)
1820 135 211 unless ($fully_qualified_name)
1823 0 135 unless (defined $resolve_package)
1842 345 1 if (defined $closure)
1852 0 1 if (defined $closure and defined ${$closure;})
1863 345 1 if (defined $closure)
1864 0 345 if ($trace_actions)
1865 0 0 unless print {$trace_file_handle;} qq[Successful resolution of action "$closure_name" as $type ], 'to ', $fully_qualified_name, "\n"
1873 1 0 if ($trace_actions or defined $p_error)
1876 0 4 if (defined *{$fully_qualified_name;}{$slot})
1880 0 0 if ($trace_actions)
1881 0 0 unless print {$trace_file_handle;} $error
1884 0 0 if defined $p_error
1893 1 0 if defined $p_error
1894 0 1 if ($trace_actions)
1895 0 0 unless print {$trace_file_handle;} $error
1914 375 11816 unless defined $action_name
1917 1 11815 unless ($resolution)
2013 25897 0 if $trace_actions <= 2
2014 0 0 if ($type eq 'nulling')
2015 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)
2022 0 0 if ($type eq 'rule')
2023 0 0 unless say {$trace_file_handle;} "Registering semantics for ${type}: ", $slg->g1_rule_show($id), ' Semantics are ', $slg->show_semantics(@raw_ops)
2030 0 0 if ($type eq 'token')
2031 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)
2038 0 0 unless say {$trace_file_handle;} "Registration has unknown type: $type"
2043 19553 297274 if (ref $raw_op)