| line |
true |
false |
branch |
|
42
|
0 |
0 |
defined $verbosity ? : |
|
58
|
0 |
189 |
unless defined $option |
|
60
|
0 |
189 |
unless exists $self->{'generationoptions'}{$option} |
|
93
|
0 |
32 |
if exists $rules->{$rulename} |
|
106
|
0 |
0 |
unless exists $rules->{$rulename} |
|
122
|
1 |
0 |
unless exists $subrules->{$rulename} |
|
137
|
0 |
0 |
unless exists $self->{'subrules'}{$rulename} |
|
148
|
0 |
0 |
if ($_ eq $subrulename) { } |
|
159
|
0 |
0 |
if ($status) |
|
162
|
0 |
0 |
unless exists $rules->{$subrulename} |
|
173
|
0 |
5 |
unless exists $rules->{$rulename} |
|
184
|
0 |
96 |
unless (exists $rules->{$rulename}) |
|
186
|
0 |
0 |
unless defined $parent |
|
198
|
0 |
32 |
unless exists $rules->{$rulename} |
|
208
|
0 |
5 |
unless exists $subrules->{$rulename} |
|
212
|
5 |
4 |
if $sr eq $subrulename |
|
226
|
14 |
0 |
if exists $context->{'level'} |
|
227
|
0 |
14 |
unless defined $level |
|
245
|
0 |
360 |
if ref $token ne "HASH" |
|
248
|
51 |
309 |
if exists $token->{$tag} |
|
262
|
0 |
1 |
if ref $mxtoken ne "HASH" |
|
266
|
0 |
1 |
unless (exists $mxtoken->{'class4list'}) |
|
279
|
0 |
1 |
if exists $mxtoken->{'grammarstate'} |
|
280
|
0 |
1 |
if exists $mxtoken->{'isFragmentOrChild'} |
|
285
|
0 |
0 |
if (exists $mxtoken->{'rhs'} and exists $mxtoken->{'rhs'}{'token'}) |
|
288
|
0 |
0 |
if (ref $token eq "") |
|
301
|
0 |
0 |
$case =~ /^U/i ? : |
|
331
|
0 |
0 |
if ($lcp =~ /[A-Z]/i) { } |
|
336
|
0 |
0 |
if length $rest > 0 |
|
337
|
0 |
0 |
if length $uctoken > 1 |
|
344
|
0 |
0 |
if length $uctoken > 1 |
|
354
|
17 |
4 |
if $string =~ /^.$/ |
|
355
|
1 |
3 |
if $string =~ /^\\[^u]$/i |
|
356
|
0 |
3 |
if $string =~ /^\\u[0-9A-F]{4,4}$/i |
|
357
|
0 |
3 |
if $string =~ /^\\u\{[0-9A-F]{5,5}\}$/i |
|
365
|
62 |
9 |
unless exists $rule->{'class4list'} |
|
367
|
0 |
0 |
if $rulename =~ /^[a-z]$/i and $s =~ /([a-z])([a-z])/i and uc "$1" eq "$2" || lc "$1" eq "$2" |
|
378
|
30 |
30 |
unless exists $rule->{'class4list'} |
|
381
|
1 |
6 |
if $string =~ /([a-z])([a-z])/i and uc "$1" eq "$2" || lc "$1" eq "$2" |
|
382
|
21 |
8 |
unless $string =~ /[a-z]/i |
|
383
|
5 |
3 |
if $string =~ /[0-9]/i |
|
392
|
3 |
18 |
unless isSingleChar($literal) |
|
404
|
0 |
0 |
if $begr->{'type'} ne "literal" or $endr->{'type'} ne "literal" |
|
409
|
0 |
0 |
unless isSingleChar($begr) and isSingleChar($endr) |
|
420
|
0 |
120 |
unless exists $tracker->{'status'} |
|
422
|
90 |
30 |
if (not exists $mxelement->{'class4list'} or $tracker->{'status'} == -1) { } |
|
436
|
0 |
60 |
unless exists $tracker->{'status'} |
|
438
|
45 |
15 |
if (not exists $mxelement->{'keywordfragment'} or $tracker->{'status'} == -1) { } |
|
452
|
8 |
10 |
unless exists $context->{'subruleindex'}{$rulename}{'index'} |
|
457
|
4 |
14 |
if (defined $cardinality and $cardinality eq "?") |
|
478
|
0 |
18 |
if (defined $negation) |
|
488
|
14 |
4 |
if exists $context->{'subruleindex'}{$rulename}{'grammarstate'} |
|
489
|
7 |
11 |
if exists $context->{'subruleindex'}{$rulename}{'isFragmentOrChild'} |
|
494
|
4 |
14 |
if defined $cardinality and $cardinality eq "?" |
|
504
|
0 |
18 |
if exists $mxelement->{'class4list'} and not defined $cardinality |
|
505
|
14 |
4 |
if exists $context->{'subruleindex'}{$rulename}{'grammarstate'} |
|
506
|
7 |
11 |
if exists $context->{'subruleindex'}{$rulename}{'isFragmentOrChild'} |
|
529
|
0 |
40 |
if (ref $token eq "HASH" and exists $token->{'comment'} and not $self->testoption("stripallcomments")) |
|
531
|
0 |
0 |
if ref $token->{'comment'} ne "" |
|
540
|
0 |
40 |
if (ref $token eq "") |
|
547
|
9 |
31 |
if (ref $token eq "HASH" and exists $token->{'type'} and $token->{'type'} eq "tokengroup") |
|
554
|
0 |
31 |
if (ref $token eq "HASH" and exists $token->{'type'} and $token->{'type'} eq "rulegroup") |
|
563
|
21 |
10 |
if (ref $token eq "HASH" and exists $token->{'type'} and $token->{'type'} eq "literal") |
|
567
|
18 |
3 |
if defined $class4list |
|
570
|
9 |
1 |
if (ref $token eq "HASH" and exists $token->{'type'} and $token->{'type'} eq "class") |
|
574
|
0 |
1 |
if (ref $token eq "HASH" and exists $token->{'type'} and $token->{'type'} eq "regex") |
|
578
|
0 |
1 |
if (ref $token eq "HASH" and exists $token->{'type'} and $token->{'type'} eq "range") |
|
582
|
0 |
1 |
if (ref $token eq "HASH" and exists $token->{'type'} and $token->{'type'} eq "value") |
|
586
|
1 |
0 |
if (ref $token eq "HASH" and exists $token->{'token'}) |
|
590
|
0 |
0 |
if (ref $token eq "HASH" and exists $token->{'action'}) |
|
594
|
0 |
0 |
if (ref $token eq "HASH" and exists $token->{'comment'}) |
|
607
|
1 |
39 |
if (defined $negation) |
|
619
|
0 |
40 |
if (defined $cardinality) |
|
627
|
0 |
40 |
if defined $alternative |
|
628
|
0 |
40 |
if scalar @$comments > 0 and not $self->testoption("stripallcomments") |
|
637
|
0 |
0 |
if ref $nonterminal ne "HASH" |
|
643
|
0 |
0 |
if (exists $nonterminal->{'rhs'}) |
|
669
|
0 |
6 |
if ref $mxtoken ne "HASH" |
|
670
|
0 |
6 |
if $cardinality eq "?" |
|
672
|
0 |
6 |
if $cardinality =~ /[+*]\?/ and $self->testoption("shiftlazytogreedy") |
|
673
|
0 |
6 |
if $cardinality =~ /[+*]\?/ |
|
675
|
1 |
5 |
unless defined $options |
|
680
|
5 |
1 |
if (exists $mxtoken->{'rhs'}) |
|
683
|
0 |
5 |
if ref $rhs ne "HASH" |
|
684
|
0 |
5 |
if not exists $rhs->{'token'} or ref $rhs->{'token'} ne "" |
|
686
|
0 |
5 |
unless defined $self->checkMarpaRuleExists($rhs->{'token'}) |
|
690
|
5 |
0 |
if ($abortatfirstlevel) { } |
|
695
|
0 |
5 |
unless $self->isSubrule($rulename, $subrulename) |
|
698
|
5 |
0 |
if ($cardinality ne "?") |
|
711
|
0 |
0 |
unless $self->isSubrule($rulename, $subrulename) |
|
715
|
0 |
0 |
if ($rc) |
|
717
|
0 |
0 |
if exists $rule->{'cardinality'} |
|
726
|
0 |
1 |
if (exists $mxtoken->{'type'} and $mxtoken->{'type'} eq "group") |
|
727
|
0 |
0 |
unless exists $mxtoken->{'list'} |
|
731
|
0 |
0 |
if ref $al ne "HASH" or not exists $al->{'list'} |
|
734
|
0 |
0 |
if exists $le->{'type'} and not $le->{'type'} =~ /literal|class/ |
|
741
|
0 |
1 |
if (exists $mxtoken->{'type'} and $mxtoken->{'type'} eq "literal") |
|
746
|
1 |
0 |
if (exists $mxtoken->{'type'} and $mxtoken->{'type'} eq "class") |
|
747
|
0 |
1 |
if exists $mxtoken->{'cardinality'} |
|
752
|
0 |
0 |
if (exists $mxtoken->{'type'} and $mxtoken->{'type'} eq "negatedclass") |
|
753
|
0 |
0 |
if exists $mxtoken->{'cardinality'} |
|
779
|
17 |
6 |
if scalar @$alternativelists < 2 |
|
787
|
0 |
17 |
if (not exists $branch->{'list'}) { } |
|
794
|
5 |
12 |
if (scalar @$branchlist > 1) { } |
|
803
|
4 |
8 |
if (exists $rhs->{'type'} and $rhs->{'type'} eq "literal") |
|
807
|
2 |
2 |
if (defined $literal) { } |
|
812
|
0 |
2 |
if $matchfound |
|
820
|
12 |
0 |
unless $matchfound |
|
825
|
6 |
0 |
unless $filtered |
|
861
|
37 |
23 |
if ref $e eq "HASH" and exists $e->{'rhs'} and not exists $e->{'token'} |
|
862
|
4 |
0 |
if ref $e eq "HASH" and exists $e->{'type'} and exists $e->{'definition'} |
|
867
|
0 |
60 |
if (exists $e->{'comment'} or exists $e->{'action'}) |
|
869
|
0 |
0 |
if (exists $e->{'comment'} and not $self->testoption("stripallcomments")) |
|
875
|
0 |
0 |
if (exists $e->{'action'} and not $self->testoption("stripactions")) |
|
877
|
0 |
0 |
$self->testoption('embedactions') ? : |
|
887
|
0 |
60 |
if (ref $e eq "HASH" and not exists $e->{'token'}) |
|
889
|
0 |
0 |
if exists $e->{'type'} and $e->{'type'} eq "regex" |
|
895
|
11 |
49 |
if (defined $alternative) { } |
|
897
|
11 |
0 |
if (scalar @$currentlist > 0) |
|
908
|
0 |
11 |
if ($self->testoption('buildkeywords') and $keywordfragment->{'status'} == 0 and $keyword =~ /^[a-z]/i) { } |
|
918
|
2 |
9 |
if $class4list->{'status'} != -1 |
|
919
|
0 |
11 |
if exists $metalist->{'state'} |
|
938
|
12 |
37 |
if ($alternativelength > 1) |
|
947
|
21 |
39 |
if (ref $e->{'token'} eq '') { } |
|
957
|
0 |
39 |
if ref $e ne "HASH" or not exists $e->{'token'} |
|
960
|
0 |
39 |
if exists $mxelement->{'type'} and $mxelement->{'type'} eq "ignore" |
|
963
|
23 |
16 |
if defined $keywordfragment |
|
969
|
0 |
60 |
if (exists $mxelement->{'comments'}) |
|
974
|
0 |
0 |
if scalar keys %$mxelement == 0 |
|
981
|
31 |
29 |
unless defined $il |
|
986
|
0 |
60 |
if exists $mxelement->{'negation'} |
|
988
|
0 |
60 |
if (defined $negation) |
|
997
|
10 |
50 |
if (defined $cardinality) |
|
1004
|
1 |
9 |
if (scalar @$rhslist <= 1 and $self->retagSimpleRule($rulename, $mxelement, $cardinality, $context)) { } |
|
1010
|
0 |
1 |
if (defined $alternative and scalar @$rhslist > 1) |
|
1029
|
0 |
9 |
if ($cardinality ne "?" and not $self->retagSimpleRule($rulename, $mxelement, $cardinality, $context, {"abortatfirstlevel", "true"})) |
|
1031
|
0 |
0 |
if scalar @$rhslist > 1 |
|
1032
|
0 |
0 |
if $cardinality ne "?" |
|
1052
|
26 |
34 |
if $alternativelength > 1 |
|
1059
|
0 |
23 |
if ($self->testoption("buildkeywords") and $keywordfragment->{'status'} == 0 and $keywordfragment->{'value'} =~ /^[a-z]/i) |
|
1070
|
23 |
0 |
if (scalar @$currentlist > 0) |
|
1073
|
3 |
20 |
if $class4list->{'status'} != -1 |
|
1074
|
1 |
22 |
if $groupisLexeme->{'status'} == 0 |
|
1075
|
0 |
23 |
if exists $metalist->{'state'} |
|
1082
|
23 |
0 |
if $self->testoption("matchcaseinsensitive") |
|
1087
|
1 |
22 |
if $class4group->{'status'} != -1 |
|
1088
|
1 |
22 |
if $groupisLexeme->{'status'} == 0 |
|
1101
|
0 |
9 |
if ref $tokengroup ne "HASH" or not exists $tokengroup->{'definition'} |
|
1124
|
9 |
14 |
if (defined $rulestatus) |
|
1129
|
3 |
6 |
if ($rulestatus eq "inprogress") |
|
1130
|
6 |
0 |
if ($rulestatus eq "done") |
|
1132
|
0 |
0 |
if ($rulestatus eq "synthetic" and not $self->checkMarpaRuleExists($rulename)) |
|
1144
|
3 |
6 |
if exists $mxrule->{'class4list'} |
|
1153
|
14 |
0 |
if (defined $rightside) |
|
1155
|
0 |
14 |
if ref $rightside ne "ARRAY" |
|
1157
|
9 |
5 |
if exists $rule->{'grammarstate'} and $rule->{'grammarstate'} eq "lexer" |
|
1158
|
6 |
8 |
if exists $rule->{'type'} and $rule->{'type'} eq "fragment" |
|
1172
|
9 |
5 |
if exists $rule->{'grammarstate'} and $rule->{'grammarstate'} eq "lexer" |
|
1173
|
6 |
8 |
if exists $rule->{'type'} and $rule->{'type'} eq "fragment" |
|
1174
|
1 |
13 |
if (exists $rule->{'redirect'}) |
|
1202
|
4 |
17 |
if defined $keywordfragment |
|
1238
|
0 |
14 |
unless (exists $rule->{'generationstatus'}) |
|
1240
|
0 |
0 |
unless ($status) |
|
1248
|
0 |
0 |
exists $rule->{'grammarstate'} && $rule->{'grammarstate'} =~ /lexer/i ? : |
|
|
0 |
0 |
exists $rule->{'isFragmentOrChild'} ? : |
|
1253
|
0 |
1 |
if $status |
|
1272
|
1 |
0 |
if (not exists $rule->{'generationstatus'} and exists $rule->{'redirect'}) |
|
1298
|
0 |
1 |
unless exists $startrule->{'rightsides'} |
|
1316
|
1 |
0 |
if ($outputfile ne '-') { } |
|
1319
|
0 |
1 |
unless open $outf, ">$outputfile" |
|
1333
|
0 |
1 |
if $self->{'is_stdout'} |
|
1340
|
0 |
50 |
unless defined $s |
|
1345
|
1 |
49 |
if $pad < 0 |
|
1354
|
0 |
0 |
if ref $comments ne "ARRAY" |
|
1377
|
0 |
39 |
if ref $token ne "" |
|
1381
|
0 |
39 |
if ($self->testoption("matchcaseinsensitive") and $self->isKeywordLetter($token, $rule)) |
|
1388
|
0 |
39 |
if exists $rule->{'redirected'} |
|
1397
|
27 |
1 |
unless exists $rule->{'class4list'} |
|
1433
|
2 |
0 |
if (defined $fourmatch) |
|
1434
|
0 |
2 |
unless $fourmatch =~ /00([0-9A-Z][0-9A-Z])/i |
|
1439
|
0 |
0 |
if (defined $bracedmatch) |
|
1440
|
0 |
0 |
unless $bracedmatch =~ /0*([0-9A-Z]{2,2})/i |
|
1474
|
0 |
12 |
if ($classstring =~ /(\\[ux][0-9a-f]+)-(\\[ux][0-9a-f]+)(.*)$/i) |
|
1481
|
0 |
12 |
if ($classstring =~ /(\\[ux][0-9a-f]{2,4})(.*)$/i) |
|
1487
|
3 |
9 |
if ($classstring =~ /([^-])-([^-])(.*)$/) |
|
1491
|
2 |
0 |
unless (exists $$classhash{lc $key} or exists $$classhash{uc $key}) |
|
1495
|
1 |
1 |
if $beg =~ /[a-z]/i or $end =~ /[a-z]/i |
|
1500
|
1 |
8 |
if ($classstring =~ /(\\.)(.*)$/) |
|
1502
|
1 |
0 |
unless (exists $characterhash->{$c}) |
|
1510
|
8 |
0 |
if ($classstring =~ /(.)(.*)$/) |
|
1512
|
7 |
1 |
unless (exists $$characterhash{lc $c} or exists $$characterhash{uc $c}) |
|
1516
|
6 |
1 |
if $c =~ /^[a-z]$/i |
|
1531
|
21 |
8 |
unless $literal =~ /[a-z]/i |
|
1538
|
4 |
39 |
if ($literal =~ /(\\.)(.*)$/) |
|
1543
|
39 |
0 |
if ($literal =~ /(.)(.*)$/) |
|
1546
|
25 |
14 |
if $c =~ /^[a-z]$/i |
|
1569
|
1 |
68 |
if (exists $rhs->{'type'} and $rhs->{'type'} eq "negatedclass") |
|
1570
|
0 |
1 |
unless exists $rhs->{'value'} |
|
1576
|
0 |
68 |
if (exists $rhs->{'deletedafterconversiontoclass'}) |
|
1580
|
0 |
68 |
if (exists $rhs->{'type'} and $rhs->{'type'} eq "unsupported") |
|
1584
|
8 |
60 |
if (exists $rhs->{'type'} and $rhs->{'type'} eq "class") |
|
1588
|
3 |
5 |
if ($self->testoption("matchcaseinsensitive") and $self->isAlphaLiteral($value)) |
|
1592
|
3 |
0 |
if $normclass->{'isalphaclass'} |
|
1597
|
21 |
39 |
if (exists $rhs->{'type'} and $rhs->{'type'} eq "literal") |
|
1600
|
0 |
21 |
$literal eq q[\\'] ? : |
|
1601
|
4 |
17 |
if ($self->testoption("matchcaseinsensitive") and $self->isAlphaLiteral($literal)) |
|
1609
|
0 |
39 |
if (exists $rhs->{'type'} and $rhs->{'type'} eq "action") |
|
1614
|
39 |
0 |
if (exists $rhs->{'rhs'}) |
|
1616
|
0 |
39 |
if not exists $rhs->{'token'} or ref $rhs->{'token'} ne "" |
|
1620
|
0 |
0 |
if (exists $rhs->{'token'}) |
|
1624
|
0 |
0 |
if (exists $rhs->{'comments'}) |
|
1649
|
0 |
69 |
unless exists $options->{'status'} |
|
1654
|
0 |
69 |
if exists $rhs->{'discard'} |
|
1656
|
0 |
69 |
if ref $options ne "HASH" or not exists $options->{'delimiter'} |
|
1661
|
10 |
59 |
if exists $options->{'cardinality'} |
|
1662
|
0 |
69 |
if $cardinality =~ /[+*]\?/ and $self->testoption("shiftlazytogreedy") |
|
1663
|
0 |
69 |
if $cardinality =~ /[+*]\?/ |
|
1671
|
40 |
29 |
if exists $options->{'assignop'} |
|
1676
|
4 |
65 |
if (defined $cardinality and $cardinality eq "?") |
|
1684
|
32 |
37 |
if ($status == 0) |
|
1688
|
11 |
26 |
if ($status == 1) |
|
1692
|
26 |
0 |
if ($status == 2) |
|
1720
|
0 |
22 |
unless exists $rule->{'list'} |
|
1727
|
0 |
33 |
unless exists $rulelist->{'list'} |
|
1729
|
0 |
33 |
if (exists $rulelist->{'metalist'}) |
|
1735
|
0 |
0 |
if ref $cl eq "ARRAY" |
|
1738
|
0 |
0 |
if (exists $metalist->{'actions'}) |
|
1740
|
0 |
0 |
if (not $self->testoption('embedactions')) { } |
|
1744
|
0 |
0 |
if ref $cl eq "ARRAY" |
|
1753
|
0 |
0 |
if ref $cl eq "ARRAY" |
|
1765
|
1 |
58 |
if exists $rhs->{'cardinality'} |
|
1768
|
1 |
58 |
if defined $cardinality |
|
1770
|
0 |
59 |
if (exists $rhs->{'comments'}) |
|
1780
|
0 |
0 |
if (exists $rhs->{'type'} and $rhs->{'type'} eq "group" and exists $rhs->{'list'}) |
|
1781
|
0 |
0 |
if (exists $rhs->{'class4list'}) { } |
|
1801
|
0 |
59 |
if ($linelen + length($nextclause) > $self->{'indent'} + 3 + 125) { } |
|
1813
|
0 |
33 |
if (defined $actiontext) |
|
1816
|
0 |
0 |
if $padlen < 0 |
|
1822
|
33 |
0 |
if length $outputline > 0 |
|
1826
|
0 |
22 |
if (exists $options->{'comments'}) |
|
1845
|
0 |
32 |
if $self->{'verbosity'} |
|
1856
|
9 |
23 |
if exists $rule->{'cardinality'} |
|
1859
|
9 |
23 |
if defined $cardinality |
|
1860
|
18 |
9 |
if exists $rule->{'isLexeme'} or exists $rule->{'isFragmentOrChild'} or exists $rule->{'grammarstate'} |
|
1873
|
0 |
32 |
if ($self->testoption("buildkeywords") and $self->isKeywordLetter($rulename, $rule)) |
|
1882
|
1 |
31 |
if ($self->testoption("fragment2class") and not $rulename =~ /^opt_/ and fragmentEligible2Convert($rule)) |
|
1889
|
22 |
9 |
if (exists $rule->{'list'}) |
|
1898
|
0 |
9 |
unless length $outputline |
|
1903
|
9 |
23 |
if length $outputline > 0 |
|
1930
|
0 |
14 |
unless defined $rule and exists $rule->{'name'} and exists $rule->{'generationstatus'} |
|
1932
|
1 |
13 |
if length $rulename > $indent |
|
1933
|
6 |
8 |
unless exists $subrules->{$rulename} |
|
1936
|
3 |
15 |
if length $subrulename > $indent |
|
1940
|
0 |
1 |
if $indent == -1 |
|
1957
|
0 |
1 |
unless defined $startrule |
|
1968
|
0 |
1 |
if not exists $self->{'discarded'} or ref $self->{'discarded'} ne "ARRAY" or scalar @{$self->{'discarded'};} < 1 |
|
2026
|
0 |
16 |
if (exists $rule->{'comment'} and not $self->testoption("stripallcomments")) |
|
2029
|
0 |
0 |
if ref $comment ne "ARRAY" |
|
2037
|
2 |
14 |
unless defined $rule and exists $rule->{'name'} and exists $rule->{'generationstatus'} |
|
2041
|
1 |
13 |
unless ($status) |
|
2043
|
0 |
1 |
if $rulename ne $startrulename |
|
2050
|
4 |
4 |
if exists $subrules->{$rulename} and not $subrulestatus and $rulegeneratedoutput |
|
2058
|
8 |
6 |
if (exists $subrules->{$rulename}) |
|
2067
|
8 |
0 |
if $subrulegeneratedoutput |
|
2078
|
18 |
14 |
unless exists $g4rule->{'generationstatus'} |
|
2081
|
14 |
0 |
if exists $marparule->{'status'} |
|
2083
|
0 |
0 |
if $self->{'verbosity'} |
|
2101
|
0 |
1 |
if $self->{'verbosity'} > 1 |