Branch Coverage

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


line true false branch
77 0 292 unless $flat_args
101 0 272 unless $lua
117 0 2 unless $flat_args
121 2 0 if (defined $value)
127 0 2 if (scalar @bad_arguments)
139 0 292 unless defined $dsl
143 0 292 if ($dsl_ref_type ne 'SCALAR')
144 0 0 $dsl_ref_type ? :
150 0 292 unless (defined ${$dsl;})
159 0 292 if (defined $value)
167 0 292 if (exists $flat_args->{'trace_actions'})
170 0 0 if ($value)
171 0 0 unless say {$trace_file_handle;} 'Setting trace_actions option'
177 292 0 if (defined exists $flat_args->{'bless_package'})
183 4 288 if (exists $flat_args->{'exhaustion'})
209 6 286 if (exists $flat_args->{'rejection'})
235 43 249 if (exists $flat_args->{'semantics_package'})
241 18 274 if (exists $flat_args->{'ranking_method'})
265 0 292 if (exists $flat_args->{'debug_level'})
369 0 7228 unless (defined eval { do { $compiled_re = qr/$perl_re/msx; 1 } })
373 0 7228 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 161111 unless ($eval_ok)
715 1952 8 unless ($cmd)
720 0 8 unless $handler
730 5 1952 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 1492 50476 if $next > $last
825 4 108 if $next > $last
870 12 1 unless my $verbose = $options->{'verbose'}
968 10777 1423 if ('[' eq substr($semantics, 0, 1) and ']' eq substr($semantics, -1, 1))
983 1423 0 if $allowed_semantics->{$semantics}
985 0 0 if $semantics =~ / \A rhs \d+ \z /msx
1001 1462 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 11646 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 14483 unless defined $blessing
1188 0 14483 unless ($semantics)
1192 7830 6653 if (substr($semantics, 0, 1) eq '[')
1199 0 6653 unless ($allowed_semantics->{$semantics})
1249 7573 548 unless defined $semantic_rule
1259 375 11825 if $semantics eq '::!default'
1260 502 11698 if $semantics eq '::array'
1261 515 11685 if $semantics eq '::first'
1279 1635 12848 if $semantics eq '::!default' and $blessing eq '::undef'
1280 5018 7830 if $semantics eq '::!default'
1281 0 12848 if $semantics eq '::array'
1299 12200 12848 if (defined $irlid)
1324 345 24703 if (defined $closure and ref $closure eq 'CODE')
1330 19139 5564 if (substr($semantics, 0, 1) eq '[')
1340 31 25017 if ($semantics eq '::undef')
1346 12848 12169 unless defined $irlid
1348 11824 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 19999 if (defined $lexeme_id and $semantics eq '::value')
1385 7830 12169 unless defined $irlid
1388 515 11654 if ($semantics =~ /\A [:][:] rhs (\d+) \z/msx)
1392 11654 515 unless defined $singleton
1395 0 515 if ($is_discard_sequence_rule)
1402 0 515 if ($is_sequence_rule)
1417 0 515 unless (scalar @elements)
1428 0 515 unless (defined $singleton_element)
1441 0 19484 unless (@array_fate)
1449 18440 1044 if ($blessing ne '::undef')
1453 0 19484 if substr($semantics, 0, 1) ne '['
1462 70 56745 if ($result_descriptor eq 'g1start')
1467 70 56675 if ($result_descriptor eq 'g1length')
1472 18319 38356 if ($result_descriptor eq 'start')
1476 18319 20037 if ($result_descriptor eq 'length')
1481 8 20029 if ($result_descriptor eq 'lhs')
1482 3 5 if (defined $irlid)
1495 5 0 if (defined $lexeme_id)
1504 522 19507 if ($result_descriptor eq 'name')
1505 444 78 if (defined $irlid)
1512 78 0 if (defined $lexeme_id)
1517 0 0 if (defined $nulling_symbol_id)
1526 16 19491 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 19483 if ($result_descriptor eq 'rule')
1554 3 5 if (defined $irlid)
1561 19483 0 if ($result_descriptor eq 'values' or $result_descriptor eq 'value')
1564 7830 11653 if (defined $lexeme_id)
1568 699 10954 if ($is_sequence_rule)
1569 223 476 $is_discard_sequence_rule ? :
1581 10771 183 if ($rule_length > 0)
1583 13153 6819 $mask->[$_] ? :
1599 12200 12848 if (defined $irlid)
1603 548 24500 if (defined $nulling_symbol_id)
1608 12848 12200 if (defined $lexeme_id)
1632 0 372 unless $symbol_is_nullable
1637 372 1220 if ($start_symbol_id == $lhs)
1645 320 24218 if ($nulling_symbol_id == $start_rhs_symbol_id)
1677 0 373 unless $default_action_resolution
1688 0 12200 unless ($rule_resolution)
1713 10738 1462 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 372 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 14483 unless (defined $semantics)
1777 0 14483 unless (defined $blessing)
1800 373 11826 unless defined $closure_name
1802 0 11826 if ($closure_name eq '')
1803 0 0 if defined $p_error
1808 31 11795 if $closure_name eq '::undef'
1809 11449 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 11826 unless defined $action_name
1917 1 11825 unless ($resolution)
2013 25916 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 19571 297433 if (ref $raw_op)