| line |
true |
false |
branch |
|
259
|
0 |
0 |
if $phase == 0 |
|
261
|
0 |
0 |
if $phase == 1 |
|
263
|
0 |
0 |
if $phase == 2 |
|
320
|
0 |
6 |
if ($false_eval) |
|
324
|
4 |
2 |
if ($fatal_error) |
|
327
|
2 |
4 |
if ($warnings_count) |
|
332
|
0 |
6 |
unless (scalar @problems) |
|
348
|
4 |
2 |
if ($fatal_error) |
|
425
|
0 |
115 |
if (not $ref_type or $ref_type ne 'HASH') |
|
432
|
0 |
115 |
if (my(@bad_options) = grep({not $_ ~~ ['action_object', 'actions', 'cycle_ranking_action', 'infinite_action', 'default_action', 'default_null_value', 'inaccessible_ok', 'lhs_terminals', 'rules', 'start', 'strip', 'symbols', 'terminals', 'trace_file_handle', 'trace_rules', 'unproductive_ok', 'warnings'];} keys %{$args;})) |
|
441
|
7 |
108 |
if (defined(my $value = $$args{'trace_file_handle'})) |
|
446
|
0 |
115 |
if (defined(my $value = $$args{'trace_rules'})) |
|
448
|
0 |
0 |
if ($value) |
|
451
|
0 |
0 |
unless say {$trace_fh;} 'Setting trace_rules' |
|
453
|
0 |
0 |
if ($rule_count) |
|
454
|
0 |
0 |
unless say {$trace_fh;} "Warning: Setting trace_rules after $rule_count rules have been defined" |
|
467
|
12 |
103 |
if (defined(my $value = $$args{'symbols'})) |
|
468
|
0 |
12 |
if $phase >= 2 |
|
471
|
0 |
12 |
if ref $value ne 'HASH' |
|
480
|
7 |
108 |
if (defined(my $value = $$args{'lhs_terminals'})) |
|
481
|
0 |
7 |
if $phase >= 2 |
|
489
|
58 |
57 |
if (defined(my $value = $$args{'terminals'})) |
|
490
|
0 |
58 |
if $phase >= 2 |
|
493
|
0 |
58 |
if ref $value ne 'ARRAY' |
|
502
|
81 |
34 |
if (defined(my $value = $$args{'start'})) |
|
503
|
0 |
81 |
if $phase >= 2 |
|
509
|
82 |
33 |
if (defined(my $value = $$args{'rules'})) |
|
510
|
0 |
82 |
if $phase >= 2 |
|
513
|
0 |
82 |
if ref $value ne 'ARRAY' |
|
520
|
30 |
84 |
if (defined(my $value = $$args{'default_null_value'})) |
|
525
|
15 |
99 |
if (defined(my $value = $$args{'actions'})) |
|
529
|
1 |
113 |
if (defined(my $value = $$args{'action_object'})) |
|
533
|
0 |
114 |
if (defined(my $value = $$args{'cycle_ranking_action'})) |
|
538
|
51 |
63 |
if (defined(my $value = $$args{'default_action'})) |
|
542
|
44 |
70 |
if (defined(my $value = $$args{'strip'})) |
|
546
|
8 |
106 |
if (defined(my $value = $$args{'infinite_action'})) |
|
547
|
0 |
8 |
if ($value and $phase >= 2) |
|
549
|
0 |
0 |
unless say {$trace_fh;} '"infinite_action" option is useless after grammar is precomputed' |
|
554
|
0 |
8 |
unless $value ~~ ['warn', 'quiet', 'fatal'] |
|
560
|
9 |
105 |
if (defined(my $value = $$args{'warnings'})) |
|
561
|
0 |
9 |
if ($value and $phase >= 2) |
|
563
|
0 |
0 |
unless say {$trace_fh;} '"warnings" option is useless after grammar is precomputed' |
|
570
|
0 |
114 |
if (defined(my $value = $$args{'inaccessible_ok'})) |
|
571
|
0 |
0 |
if ($value and $phase >= 2) |
|
573
|
0 |
0 |
unless say {$trace_fh;} '"inaccessible_ok" option is useless after grammar is precomputed' |
|
598
|
0 |
114 |
if (defined(my $value = $$args{'unproductive_ok'})) |
|
599
|
0 |
0 |
if ($value and $phase >= 2) |
|
601
|
0 |
0 |
unless say {$trace_fh;} '"unproductive_ok" option is useless after grammar is precomputed' |
|
665
|
0 |
81 |
if ($problems) |
|
677
|
0 |
81 |
if ($phase == 2) |
|
681
|
0 |
81 |
if ($phase != 1) |
|
692
|
1 |
80 |
if ($distinguished and not $lhs_terminals_ok) |
|
696
|
60 |
20 |
if $distinguished |
|
697
|
6 |
14 |
unless ($lhs_terminals_ok) |
|
701
|
0 |
14 |
if (has_empty_rule($grammar)) |
|
710
|
0 |
79 |
unless nullable($grammar) |
|
712
|
0 |
76 |
unless check_start($grammar) |
|
726
|
75 |
1 |
if ($$grammar[11] and ref(my $ok = $$grammar[26]) eq 'HASH') |
|
743
|
0 |
2 |
if $symbol =~ /\]/msx |
|
744
|
0 |
2 |
if $$ok{$symbol} |
|
745
|
0 |
2 |
unless say {$trace_fh;} "Inaccessible symbol: $symbol" |
|
750
|
75 |
1 |
if ($$grammar[11] and ref(my $ok = $$grammar[27]) eq 'HASH') |
|
767
|
0 |
0 |
if $symbol =~ /\]/msx |
|
768
|
0 |
0 |
if $$ok{$symbol} |
|
769
|
0 |
0 |
unless say {$trace_fh;} "Unproductive symbol: $symbol" |
|
774
|
75 |
1 |
if ($$grammar[11]) |
|
781
|
990 |
1 |
unless $$symbol[14] |
|
784
|
0 |
1 |
if $$symbol[5] |
|
786
|
0 |
1 |
unless say {$trace_fh;} qq[Zero length sequence for symbol without null value: "$symbol_name"] |
|
795
|
32 |
44 |
if ($$grammar[9]) |
|
824
|
1 |
1 |
if ($problems) |
|
842
|
10 |
85 |
if ($stripped) { } |
|
855
|
32 |
63 |
if ($nullable) |
|
869
|
118 |
262 |
unless exists $$symbol[$offset] |
|
871
|
170 |
92 |
if ($reverse) |
|
872
|
57 |
205 |
if ($value) |
|
895
|
1 |
2 |
if scalar grep({$#{$_;} < 14;} @{$symbols;}) |
|
902
|
1 |
2 |
unless exists $$grammar[25] |
|
915
|
1 |
2 |
if scalar grep({$#{$_;} < 14;} @{$symbols;}) |
|
925
|
1 |
2 |
if scalar grep({$#{$_;} < 14;} @{$symbols;}) |
|
958
|
197 |
22 |
if (@{$rhs;}) |
|
977
|
0 |
0 |
unless (defined $original_rule) |
|
978
|
0 |
0 |
if defined $dot_position |
|
991
|
0 |
0 |
unless (defined $chaf_start) |
|
992
|
0 |
0 |
if defined $dot_position |
|
1015
|
0 |
0 |
if ($chaf_end < $#rhs_names) |
|
1021
|
0 |
0 |
$dot_position >= scalar @{$chaf_rhs;} ? : |
|
1045
|
22 |
159 |
unless (@{$rhs;}) |
|
1047
|
15 |
166 |
if ($stripped) |
|
1063
|
30 |
1056 |
unless exists $$rule[$offset] |
|
1065
|
513 |
543 |
if ($reverse) |
|
1066
|
923 |
133 |
unless $value |
|
1070
|
79 |
102 |
if ($$rule[6] or $$rule[7]) |
|
1079
|
124 |
57 |
if (@comment) |
|
1116
|
0 |
415 |
if ($dot_position < 0) |
|
1125
|
415 |
808 |
if ($position == $dot_position) |
|
1129
|
415 |
808 |
unless defined $name |
|
1140
|
3 |
376 |
if (not defined $item) { } |
|
1165
|
18 |
63 |
if ($at_nulling) |
|
1168
|
18 |
63 |
if (@properties) |
|
1180
|
32 |
51 |
$symbol_name eq '' ? : |
|
1190
|
1 |
3 |
unless exists $$grammar[23] |
|
1216
|
57 |
88 |
if $$state[7] |
|
1218
|
27 |
118 |
if $$state[6] |
|
1220
|
84 |
61 |
if scalar @tags |
|
1223
|
145 |
0 |
if (exists $$state[8]) |
|
1231
|
0 |
145 |
if ($stripped) |
|
1233
|
0 |
145 |
unless $verbose |
|
1235
|
81 |
64 |
if (exists $$state[4]) |
|
1241
|
69 |
165 |
unless (ref $to_state) |
|
1271
|
0 |
1 |
unless defined $name |
|
1274
|
0 |
1 |
unless defined $symbol_id |
|
1277
|
1 |
0 |
unless $$symbol[7] |
|
1289
|
1769 |
876 |
if (defined(my $symbol_id = $$symbol_hash{$name})) |
|
1293
|
876 |
1769 |
unless (defined $symbol) |
|
1315
|
0 |
2504 |
if (my $type = ref $name) |
|
1319
|
0 |
2504 |
if $name =~ /\]\z/msx |
|
1328
|
0 |
141 |
unless ($property ~~ ['terminal', 'ranking_action', 'null_value']) |
|
1331
|
124 |
17 |
if ($property eq 'terminal') |
|
1334
|
17 |
124 |
if ($property eq 'null_value') |
|
1383
|
0 |
1409 |
if ($rhs_length & -134217728) |
|
1407
|
1271 |
138 |
@{$rhs;} ? : |
|
1409
|
0 |
1409 |
if ($action and $nulling) |
|
1443
|
226 |
3088 |
if $new_rule_id ~~ \@{$rhs_rule_ids;} |
|
1447
|
0 |
1409 |
if ($trace_rules) |
|
1451
|
0 |
0 |
unless print {$trace_fh;} 'Added rule #', $#{$rules;}, ': ', $$lhs[1], ' -> ', join(' ', map({$$_[1];} @{$rhs;})), "\n" |
|
1468
|
0 |
201 |
if ($arg_count > 4 or $arg_count < 1) |
|
1469
|
0 |
0 |
defined $_ ? : |
|
1509
|
0 |
800 |
unless defined $grammar and defined $options |
|
1543
|
0 |
800 |
if (not $rhs_ref_type or $rhs_ref_type ne 'ARRAY') |
|
1544
|
0 |
0 |
$rhs_ref_type ? : |
|
1549
|
0 |
800 |
unless (defined $lhs_name) |
|
1552
|
800 |
0 |
unless scalar @problems |
|
1574
|
1 |
799 |
if exists $$rule_signature_hash{$rule_signature} |
|
1579
|
772 |
27 |
if (scalar @{$rhs_names;} == 0 or not defined $min) |
|
1581
|
0 |
772 |
if (defined $separator_name) |
|
1619
|
11 |
16 |
if ($min == 0) |
|
1630
|
1 |
10 |
if ($action) |
|
1634
|
0 |
11 |
if ($ranking_action) |
|
1642
|
0 |
27 |
if scalar @{$rhs_names;} != 1 |
|
1649
|
15 |
12 |
if (defined $separator_name) |
|
1676
|
9 |
18 |
if (defined $separator and not $proper_separation) |
|
1691
|
15 |
12 |
defined $separator ? : |
|
1729
|
1 |
78 |
unless defined $start_name |
|
1731
|
0 |
78 |
if (my $ref_type = ref $start_name) |
|
1741
|
0 |
78 |
unless defined $start_id |
|
1745
|
0 |
78 |
unless $start |
|
1752
|
1 |
77 |
unless ($$start[11]) |
|
1757
|
1 |
76 |
unless (scalar @{$lh_rule_ids;}) |
|
1789
|
0 |
873 |
if defined $$rule[15] |
|
1805
|
1021 |
661 |
if defined $$symbol[10] |
|
1854
|
456 |
461 |
unless defined &List::Util::first(sub {
not defined &List::Util::first(sub {
not $$_[11];
}
, @{$$rules[$_][2];});
}
, @{$$symbol[8];}) |
|
1878
|
3 |
881 |
if defined &List::Util::first(sub {
not $$_[11];
}
, @{$$rule[2];}) |
|
1890
|
64 |
0 |
if scalar @{$$rule[2];} |
|
1902
|
61 |
463 |
if $$symbol[7] |
|
1920
|
0 |
1 |
unless $$symbol[7] |
|
1923
|
0 |
1 |
unless scalar @{$$symbol[8];} |
|
1939
|
168 |
185 |
if scalar @{$$symbol[8];} |
|
1961
|
0 |
155 |
if $$symbol[3] |
|
1964
|
8 |
147 |
if $$symbol[7] |
|
1973
|
112 |
16 |
unless $$rh_symbol[3] |
|
2011
|
27 |
287 |
if $$symbol[6] |
|
2027
|
943 |
421 |
unless $$rh_symbol[6] |
|
2037
|
138 |
149 |
unless $nullable |
|
2057
|
1 |
754 |
if ($nullable and $counted) |
|
2065
|
1 |
79 |
if ($counted_nullable_count) |
|
2088
|
267 |
1120 |
unless $$rule[3] |
|
2096
|
1631 |
312 |
unless ($$rhs_symbol[6]) |
|
2100
|
541 |
1090 |
if defined $non_nulling_symbol |
|
2112
|
30 |
549 |
unless defined $non_nulling_symbol |
|
2137
|
449156 |
18472 |
unless $unit_derivation[$derived_id][$id] |
|
2141
|
15682 |
2790 |
if $unit_derivation[$start_id][$id] |
|
2158
|
531 |
18 |
if $start_symbol_id != $derived_symbol_id and not $unit_derivation[$derived_symbol_id][$start_symbol_id] |
|
2207
|
12 |
6 |
if ($warn_on_infinite and defined $warning_rule) |
|
2208
|
0 |
12 |
unless print {$trace_fh;} 'Cycle found involving rule: ', Marpa::PP::brief_rule($warning_rule), "\n" |
|
2215
|
7 |
69 |
if (scalar @{$infinite_rules;}) |
|
2216
|
0 |
7 |
if $infinite_is_fatal |
|
2236
|
29 |
47 |
if (defined(my $start_alias = $$start[2])) |
|
2271
|
267 |
1120 |
unless $useful |
|
2293
|
76 |
3888 |
unless (defined $item) |
|
2301
|
0 |
105 |
unless $$start_rule[3] |
|
2316
|
1120 |
2768 |
unless (defined $next_symbol) |
|
2321
|
430 |
2338 |
if ($$next_symbol[3]) |
|
2342
|
769 |
3253 |
unless $$predicted_rule[3] |
|
2387
|
6744 |
549379 |
unless defined $work_list_entry |
|
2392
|
381335 |
168044 |
if defined $NFA_state_seen[$NFA_id] |
|
2400
|
2311 |
165733 |
if ($$NFA_state[4]) |
|
2410
|
75770 |
89963 |
if ($empty_transitions) |
|
2425
|
336088 |
12594332 |
if defined $NFA_state_seen[$_] |
|
2430
|
4167 |
9321 |
unless scalar @NFA_ids |
|
2436
|
2079 |
7242 |
unless ($AHFA_state) |
|
2446
|
12165 |
1245 |
unless $$NFA_state[5] |
|
2458
|
105 |
1140 |
if ($lhs_is_start) |
|
2499
|
0 |
76 |
if ($tracing) |
|
2512
|
0 |
76 |
unless (defined $initial_NFA_states) |
|
2542
|
6237 |
12165 |
if $symbol eq '' |
|
2617
|
781 |
1298 |
if scalar @{$NFA_states;} != 1 |
|
2620
|
474 |
824 |
unless scalar @{$left_hand_sides;} |
|
2632
|
1 |
823 |
unless defined $non_nulling |
|
2638
|
244 |
579 |
unless scalar @{$$non_nulling[8];} |
|
2653
|
1245 |
12165 |
unless defined $symbol |
|
2752
|
0 |
742 |
if $null_alias |
|
2755
|
0 |
742 |
unless $productive |
|
2756
|
5 |
737 |
unless $accessible |
|
2759
|
31 |
706 |
if $nulling |
|
2760
|
595 |
111 |
unless $nullable |
|
2776
|
25 |
853 |
unless $$rule[3] |
|
2781
|
0 |
853 |
unless $productive |
|
2783
|
5 |
848 |
unless $accessible |
|
2796
|
114 |
734 |
unless defined &List::Util::first(sub {
not $$_[3];
}
, @{$rhs;}) |
|
2836
|
611 |
123 |
unless (scalar @proper_nullable_ixes) |
|
2842
|
0 |
123 |
if ($$rule[6]) |
|
2847
|
0 |
123 |
if ($$rule[7]) |
|
2869
|
73 |
88 |
if (defined $proper_nullable_1_ix) |
|
2897
|
9 |
29 |
if ($proper_nullable_1_ix < $last_nonnullable_ix) |
|
2929
|
22 |
139 |
if $nullable and not defined $proper_nullable_1_ix |
|
2950
|
29 |
110 |
if ($next_subproduction_lhs and $last_nullable_subproduction_ix > $last_nonnullable_ix - $subproduction_start_ix) { } |
|
2960
|
2 |
97 |
$$_[3] ? : |
|
2979
|
66 |
73 |
unless defined $proper_nullable_1_ix |
|
2986
|
31 |
42 |
unless ($nullable) |
|
3019
|
94 |
310 |
if ($next_subproduction_lhs and $$factor_rhs[-1] == $next_subproduction_lhs) |
|
3060
|
123 |
38 |
unless $next_subproduction_lhs |
|
3075
|
75 |
1 |
unless ($start_is_nulling) |
|
3104
|
1 |
75 |
$start_is_nulling ? : |
|
3108
|
30 |
46 |
if ($nulling_old_start) |
|
3110
|
29 |
1 |
if ($new_start_symbol) { } |