| 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} |
|
119
|
0 |
0 |
unless exists $self->{'subrules'}{$rulename} |
|
127
|
0 |
0 |
if ($_ eq $subrulename) { } |
|
138
|
0 |
0 |
if ($status) |
|
141
|
0 |
0 |
unless exists $rules->{$subrulename} |
|
152
|
0 |
5 |
unless exists $rules->{$rulename} |
|
163
|
0 |
96 |
unless (exists $rules->{$rulename}) |
|
165
|
0 |
0 |
unless defined $parent |
|
177
|
0 |
32 |
unless exists $rules->{$rulename} |
|
187
|
0 |
5 |
unless exists $subrules->{$rulename} |
|
191
|
5 |
4 |
if $sr eq $subrulename |
|
205
|
14 |
0 |
if exists $context->{'level'} |
|
206
|
0 |
14 |
unless defined $level |
|
224
|
8 |
10 |
unless exists $context->{'subruleindex'}{$rulename}{'index'} |
|
229
|
4 |
14 |
if (defined $cardinality and $cardinality eq "?") |
|
243
|
0 |
360 |
if ref $token ne "HASH" |
|
246
|
51 |
309 |
if exists $token->{$tag} |
|
260
|
0 |
1 |
if ref $mxtoken ne "HASH" |
|
264
|
0 |
1 |
unless (exists $mxtoken->{'class4list'}) |
|
277
|
0 |
1 |
if exists $mxtoken->{'grammarstate'} |
|
278
|
0 |
1 |
if exists $mxtoken->{'isFragmentOrChild'} |
|
283
|
0 |
0 |
if (exists $mxtoken->{'rhs'} and exists $mxtoken->{'rhs'}{'token'}) |
|
286
|
0 |
0 |
if (ref $token eq "") |
|
299
|
0 |
0 |
$case =~ /^U/i ? : |
|
329
|
0 |
0 |
if ($lcp =~ /[A-Z]/i) { } |
|
334
|
0 |
0 |
if length $rest > 0 |
|
335
|
0 |
0 |
if length $uctoken > 1 |
|
342
|
0 |
0 |
if length $uctoken > 1 |
|
352
|
17 |
4 |
if $string =~ /^.$/ |
|
353
|
1 |
3 |
if $string =~ /^\\[^u]$/i |
|
354
|
0 |
3 |
if $string =~ /^\\u[0-9A-F]{4,4}$/i |
|
355
|
0 |
3 |
if $string =~ /^\\u\{[0-9A-F]{5,5}\}$/i |
|
363
|
62 |
9 |
unless exists $rule->{'class4list'} |
|
365
|
0 |
0 |
if $rulename =~ /^[a-z]$/i and $s =~ /([a-z])([a-z])/i and uc "$1" eq "$2" || lc "$1" eq "$2" |
|
376
|
30 |
30 |
unless exists $rule->{'class4list'} |
|
379
|
1 |
6 |
if $string =~ /([a-z])([a-z])/i and uc "$1" eq "$2" || lc "$1" eq "$2" |
|
380
|
21 |
8 |
unless $string =~ /[a-z]/i |
|
381
|
5 |
3 |
if $string =~ /[0-9]/i |
|
390
|
3 |
18 |
unless isSingleChar($literal) |
|
402
|
0 |
0 |
if $begr->{'type'} ne "literal" or $endr->{'type'} ne "literal" |
|
407
|
0 |
0 |
unless isSingleChar($begr) and isSingleChar($endr) |
|
418
|
0 |
120 |
unless exists $tracker->{'status'} |
|
420
|
90 |
30 |
if (not exists $mxelement->{'class4list'} or $tracker->{'status'} == -1) { } |
|
434
|
0 |
60 |
unless exists $tracker->{'status'} |
|
436
|
45 |
15 |
if (not exists $mxelement->{'keywordfragment'} or $tracker->{'status'} == -1) { } |
|
457
|
0 |
18 |
if (defined $negation) |
|
467
|
14 |
4 |
if exists $context->{'subruleindex'}{$rulename}{'grammarstate'} |
|
468
|
7 |
11 |
if exists $context->{'subruleindex'}{$rulename}{'isFragmentOrChild'} |
|
473
|
4 |
14 |
if defined $cardinality and $cardinality eq "?" |
|
483
|
0 |
18 |
if exists $mxelement->{'class4list'} and not defined $cardinality |
|
484
|
14 |
4 |
if exists $context->{'subruleindex'}{$rulename}{'grammarstate'} |
|
485
|
7 |
11 |
if exists $context->{'subruleindex'}{$rulename}{'isFragmentOrChild'} |
|
497
|
1 |
0 |
unless exists $subrules->{$rulename} |
|
523
|
0 |
40 |
if (ref $token eq "HASH" and exists $token->{'comment'} and not $self->testoption("stripallcomments")) |
|
525
|
0 |
0 |
if ref $token->{'comment'} ne "" |
|
534
|
0 |
40 |
if (ref $token eq "") |
|
541
|
9 |
31 |
if (ref $token eq "HASH" and exists $token->{'type'} and $token->{'type'} eq "tokengroup") |
|
548
|
0 |
31 |
if (ref $token eq "HASH" and exists $token->{'type'} and $token->{'type'} eq "rulegroup") |
|
557
|
21 |
10 |
if (ref $token eq "HASH" and exists $token->{'type'} and $token->{'type'} eq "literal") |
|
563
|
18 |
3 |
if defined $class4list |
|
575
|
9 |
1 |
if (ref $token eq "HASH" and exists $token->{'type'} and $token->{'type'} eq "class") |
|
579
|
0 |
1 |
if (ref $token eq "HASH" and exists $token->{'type'} and $token->{'type'} eq "regex") |
|
583
|
0 |
1 |
if (ref $token eq "HASH" and exists $token->{'type'} and $token->{'type'} eq "range") |
|
587
|
0 |
1 |
if (ref $token eq "HASH" and exists $token->{'type'} and $token->{'type'} eq "value") |
|
591
|
1 |
0 |
if (ref $token eq "HASH" and exists $token->{'token'}) |
|
595
|
0 |
0 |
if (ref $token eq "HASH" and exists $token->{'action'}) |
|
599
|
0 |
0 |
if (ref $token eq "HASH" and exists $token->{'comment'}) |
|
612
|
1 |
39 |
if (defined $negation) |
|
624
|
0 |
40 |
if (defined $cardinality) |
|
632
|
0 |
40 |
if defined $alternative |
|
633
|
0 |
40 |
if scalar @$comments > 0 and not $self->testoption("stripallcomments") |
|
642
|
0 |
0 |
if ref $nonterminal ne "HASH" |
|
648
|
0 |
0 |
if (exists $nonterminal->{'rhs'}) |
|
674
|
0 |
6 |
if ref $mxtoken ne "HASH" |
|
675
|
0 |
6 |
if $cardinality eq "?" |
|
677
|
0 |
6 |
if $cardinality =~ /[+*]\?/ and $self->testoption("shiftlazytogreedy") |
|
678
|
0 |
6 |
if $cardinality =~ /[+*]\?/ |
|
683
|
5 |
1 |
if (exists $mxtoken->{'rhs'}) |
|
686
|
0 |
5 |
if ref $rhs ne "HASH" |
|
687
|
0 |
5 |
if not exists $rhs->{'token'} or ref $rhs->{'token'} ne "" |
|
689
|
0 |
5 |
unless defined $self->checkMarpaRuleExists($rhs->{'token'}) |
|
693
|
5 |
0 |
if ($abortatfirstlevel) { } |
|
698
|
0 |
5 |
unless $self->isSubrule($rulename, $subrulename) |
|
701
|
5 |
0 |
if ($cardinality ne "?") |
|
714
|
0 |
0 |
unless $self->isSubrule($rulename, $subrulename) |
|
718
|
0 |
0 |
if ($rc) |
|
720
|
0 |
0 |
if exists $rule->{'cardinality'} |
|
729
|
0 |
1 |
if (exists $mxtoken->{'type'} and $mxtoken->{'type'} eq "group") |
|
730
|
0 |
0 |
unless exists $mxtoken->{'list'} |
|
734
|
0 |
0 |
if ref $al ne "HASH" or not exists $al->{'list'} |
|
737
|
0 |
0 |
if exists $le->{'type'} and not $le->{'type'} =~ /literal|class/ |
|
744
|
0 |
1 |
if (exists $mxtoken->{'type'} and $mxtoken->{'type'} eq "literal") |
|
749
|
1 |
0 |
if (exists $mxtoken->{'type'} and $mxtoken->{'type'} eq "class") |
|
750
|
0 |
1 |
if exists $mxtoken->{'cardinality'} |
|
755
|
0 |
0 |
if (exists $mxtoken->{'type'} and $mxtoken->{'type'} eq "negatedclass") |
|
756
|
0 |
0 |
if exists $mxtoken->{'cardinality'} |
|
782
|
17 |
6 |
if scalar @$alternativelists < 2 |
|
790
|
0 |
17 |
if (not exists $branch->{'list'}) { } |
|
797
|
5 |
12 |
if (scalar @$branchlist > 1) { } |
|
806
|
4 |
8 |
if (exists $rhs->{'type'} and $rhs->{'type'} eq "literal") |
|
810
|
2 |
2 |
if (defined $literal) { } |
|
815
|
0 |
2 |
if $matchfound |
|
823
|
12 |
0 |
unless $matchfound |
|
828
|
6 |
0 |
unless $filtered |
|
864
|
37 |
23 |
if ref $e eq "HASH" and exists $e->{'rhs'} and not exists $e->{'token'} |
|
865
|
4 |
0 |
if ref $e eq "HASH" and exists $e->{'type'} and exists $e->{'definition'} |
|
870
|
0 |
60 |
if (exists $e->{'comment'} or exists $e->{'action'}) |
|
872
|
0 |
0 |
if (exists $e->{'comment'} and not $self->testoption("stripallcomments")) |
|
878
|
0 |
0 |
if (exists $e->{'action'} and not $self->testoption("stripactions")) |
|
880
|
0 |
0 |
$self->testoption('embedactions') ? : |
|
890
|
0 |
60 |
if (ref $e eq "HASH" and not exists $e->{'token'}) |
|
892
|
0 |
0 |
if exists $e->{'type'} and $e->{'type'} eq "regex" |
|
898
|
11 |
49 |
if (defined $alternative) { } |
|
900
|
11 |
0 |
if (scalar @$currentlist > 0) |
|
911
|
0 |
11 |
if ($self->testoption('buildkeywords') and $keywordfragment->{'status'} == 0 and $keyword =~ /^[a-z]/i) { } |
|
921
|
2 |
9 |
if $class4list->{'status'} != -1 |
|
922
|
0 |
11 |
if exists $metalist->{'state'} |
|
941
|
12 |
37 |
if ($alternativelength > 1) |
|
950
|
21 |
39 |
if (ref $e->{'token'} eq '') { } |
|
960
|
0 |
39 |
if ref $e ne "HASH" or not exists $e->{'token'} |
|
963
|
0 |
39 |
if exists $mxelement->{'type'} and $mxelement->{'type'} eq "ignore" |
|
966
|
23 |
16 |
if defined $keywordfragment |
|
972
|
0 |
60 |
if (exists $mxelement->{'comments'}) |
|
977
|
0 |
0 |
if scalar keys %$mxelement == 0 |
|
984
|
31 |
29 |
unless defined $il |
|
989
|
0 |
60 |
if exists $mxelement->{'negation'} |
|
991
|
0 |
60 |
if (defined $negation) |
|
1000
|
10 |
50 |
if (defined $cardinality) |
|
1007
|
1 |
9 |
if (scalar @$rhslist <= 1 and $self->retagSimpleRule($rulename, $mxelement, $cardinality, $context)) { } |
|
1012
|
0 |
1 |
if (defined $alternative) |
|
1014
|
0 |
0 |
if scalar @$rhslist > 1 |
|
1031
|
0 |
9 |
if ($cardinality ne "?" and not $self->retagSimpleRule($rulename, $mxelement, $cardinality, $context, {"abortatfirstlevel", "true"})) |
|
1033
|
0 |
0 |
if scalar @$rhslist > 1 |
|
1034
|
0 |
0 |
if $cardinality ne "?" |
|
1054
|
26 |
34 |
if $alternativelength > 1 |
|
1061
|
0 |
23 |
if ($self->testoption("buildkeywords") and $keywordfragment->{'status'} == 0 and $keywordfragment->{'value'} =~ /^[a-z]/i) |
|
1072
|
23 |
0 |
if (scalar @$currentlist > 0) |
|
1075
|
3 |
20 |
if $class4list->{'status'} != -1 |
|
1076
|
1 |
22 |
if $groupisLexeme->{'status'} == 0 |
|
1077
|
0 |
23 |
if exists $metalist->{'state'} |
|
1084
|
23 |
0 |
if $self->testoption("matchcaseinsensitive") |
|
1089
|
1 |
22 |
if $class4group->{'status'} != -1 |
|
1090
|
1 |
22 |
if $groupisLexeme->{'status'} == 0 |
|
1103
|
0 |
9 |
if ref $tokengroup ne "HASH" or not exists $tokengroup->{'definition'} |
|
1126
|
9 |
14 |
if (defined $rulestatus) |
|
1128
|
0 |
9 |
if ($rulestatus eq "synthetic" and not $self->checkMarpaRuleExists($rulename)) |
|
1139
|
3 |
6 |
if ($rulestatus eq "inprogress") |
|
1140
|
6 |
0 |
if ($rulestatus eq "done") |
|
1145
|
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'}) |
|
1201
|
4 |
17 |
if defined $keywordfragment |
|
1237
|
0 |
14 |
unless (exists $rule->{'generationstatus'}) |
|
1239
|
0 |
0 |
unless ($status) |
|
1247
|
0 |
0 |
exists $rule->{'grammarstate'} && $rule->{'grammarstate'} =~ /lexer/i ? : |
|
|
0 |
0 |
exists $rule->{'isFragmentOrChild'} ? : |
|
1252
|
0 |
1 |
if $status |
|
1271
|
1 |
0 |
if (not exists $rule->{'generationstatus'} and exists $rule->{'redirect'}) |
|
1297
|
0 |
1 |
unless exists $startrule->{'rightsides'} |
|
1315
|
1 |
0 |
if ($outputfile ne '-') { } |
|
1318
|
0 |
1 |
unless open $outf, ">$outputfile" |
|
1332
|
0 |
1 |
if $self->{'is_stdout'} |
|
1339
|
0 |
50 |
unless defined $s |
|
1344
|
1 |
49 |
if $pad < 0 |
|
1353
|
0 |
0 |
if ref $comments ne "ARRAY" |
|
1376
|
0 |
39 |
if ref $token ne "" |
|
1380
|
0 |
39 |
if ($self->testoption("matchcaseinsensitive") and $self->isKeywordLetter($token, $rule)) |
|
1387
|
0 |
39 |
if exists $rule->{'redirected'} |
|
1396
|
27 |
1 |
unless exists $rule->{'class4list'} |
|
1437
|
0 |
12 |
if ($classstring =~ /(\\u[0-9a-f]+)-(\\u[0-9a-f]+)(.*)$/i) |
|
1444
|
0 |
12 |
if ($classstring =~ /(\\u[0-9a-f]{4,4})(.*)$/i) |
|
1450
|
3 |
9 |
if ($classstring =~ /([^-])-([^-])(.*)$/) |
|
1454
|
2 |
0 |
unless (exists $$classhash{lc $key} or exists $$classhash{uc $key}) |
|
1458
|
1 |
1 |
if $beg =~ /[a-z]/i or $end =~ /[a-z]/i |
|
1463
|
1 |
8 |
if ($classstring =~ /(\\.)(.*)$/) |
|
1465
|
1 |
0 |
unless (exists $characterhash->{$c}) |
|
1473
|
8 |
0 |
if ($classstring =~ /(.)(.*)$/) |
|
1475
|
7 |
1 |
unless (exists $$characterhash{lc $c} or exists $$characterhash{uc $c}) |
|
1479
|
6 |
1 |
if $c =~ /^[a-z]$/i |
|
1494
|
21 |
8 |
unless $literal =~ /[a-z]/i |
|
1501
|
4 |
39 |
if ($literal =~ /(\\.)(.*)$/) |
|
1506
|
39 |
0 |
if ($literal =~ /(.)(.*)$/) |
|
1509
|
25 |
14 |
if $c =~ /^[a-z]$/i |
|
1525
|
27 |
42 |
if exists $rhs->{'isLexeme'} |
|
1533
|
1 |
68 |
if (exists $rhs->{'type'} and $rhs->{'type'} eq "negatedclass") |
|
1534
|
0 |
1 |
unless exists $rhs->{'value'} |
|
1538
|
0 |
68 |
if (exists $rhs->{'deletedafterconversiontoclass'}) |
|
1542
|
0 |
68 |
if (exists $rhs->{'type'} and $rhs->{'type'} eq "unsupported") |
|
1546
|
8 |
60 |
if (exists $rhs->{'type'} and $rhs->{'type'} eq "class") |
|
1549
|
3 |
5 |
if ($self->testoption("matchcaseinsensitive") and $self->isAlphaLiteral($value)) |
|
1553
|
3 |
0 |
if $normclass->{'isalphaclass'} |
|
1558
|
21 |
39 |
if (exists $rhs->{'type'} and $rhs->{'type'} eq "literal") |
|
1560
|
0 |
21 |
$literal eq q[\\'] ? : |
|
1561
|
4 |
17 |
if ($self->testoption("matchcaseinsensitive") and $self->isAlphaLiteral($literal)) |
|
1569
|
0 |
39 |
if (exists $rhs->{'type'} and $rhs->{'type'} eq "action") |
|
1574
|
39 |
0 |
if (exists $rhs->{'rhs'}) |
|
1576
|
0 |
39 |
if not exists $rhs->{'token'} or ref $rhs->{'token'} ne "" |
|
1580
|
0 |
0 |
if (exists $rhs->{'token'}) |
|
1584
|
0 |
0 |
if (exists $rhs->{'comments'}) |
|
1609
|
0 |
69 |
unless exists $options->{'status'} |
|
1614
|
0 |
69 |
if exists $rhs->{'discard'} |
|
1616
|
0 |
69 |
if ref $options ne "HASH" or not exists $options->{'delimiter'} |
|
1621
|
10 |
59 |
if exists $options->{'cardinality'} |
|
1622
|
0 |
69 |
if $cardinality =~ /[+*]\?/ and $self->testoption("shiftlazytogreedy") |
|
1623
|
0 |
69 |
if $cardinality =~ /[+*]\?/ |
|
1631
|
40 |
29 |
if exists $options->{'assignop'} |
|
1636
|
4 |
65 |
if (defined $cardinality and $cardinality eq "?") |
|
1643
|
32 |
37 |
if ($status == 0) |
|
1647
|
11 |
26 |
if ($status == 1) |
|
1651
|
26 |
0 |
if ($status == 2) |
|
1679
|
0 |
22 |
unless exists $rule->{'list'} |
|
1686
|
0 |
33 |
unless exists $rulelist->{'list'} |
|
1688
|
0 |
33 |
if (exists $rulelist->{'metalist'}) |
|
1694
|
0 |
0 |
if ref $cl eq "ARRAY" |
|
1697
|
0 |
0 |
if (exists $metalist->{'actions'}) |
|
1699
|
0 |
0 |
if (not $self->testoption('embedactions')) { } |
|
1703
|
0 |
0 |
if ref $cl eq "ARRAY" |
|
1712
|
0 |
0 |
if ref $cl eq "ARRAY" |
|
1724
|
1 |
58 |
if exists $rhs->{'cardinality'} |
|
1727
|
1 |
58 |
if defined $cardinality |
|
1729
|
0 |
59 |
if (exists $rhs->{'comments'}) |
|
1738
|
0 |
0 |
if (exists $rhs->{'type'} and $rhs->{'type'} eq "group" and exists $rhs->{'list'}) |
|
1739
|
0 |
0 |
if (exists $rhs->{'class4list'}) { } |
|
1759
|
0 |
59 |
if ($linelen + length($nextclause) > $self->{'indent'} + 3 + 125) { } |
|
1771
|
0 |
33 |
if (defined $actiontext) |
|
1774
|
0 |
0 |
if $padlen < 0 |
|
1780
|
33 |
0 |
if length $outputline > 0 |
|
1784
|
0 |
22 |
if (exists $options->{'comments'}) |
|
1803
|
0 |
32 |
if $self->{'verbosity'} |
|
1814
|
9 |
23 |
if exists $rule->{'cardinality'} |
|
1817
|
9 |
23 |
if defined $cardinality |
|
1818
|
18 |
9 |
if exists $rule->{'isLexeme'} or exists $rule->{'isFragmentOrChild'} or exists $rule->{'grammarstate'} |
|
1831
|
0 |
32 |
if ($self->testoption("buildkeywords") and $self->isKeywordLetter($rulename, $rule)) |
|
1840
|
1 |
31 |
if ($self->testoption("fragment2class") and not $rulename =~ /^opt_/ and fragmentEligible2Convert($rule)) |
|
1847
|
22 |
9 |
if (exists $rule->{'list'}) |
|
1856
|
0 |
9 |
unless length $outputline |
|
1861
|
9 |
23 |
if length $outputline > 0 |
|
1888
|
0 |
14 |
unless defined $rule and exists $rule->{'name'} and exists $rule->{'generationstatus'} |
|
1890
|
1 |
13 |
if length $rulename > $indent |
|
1891
|
6 |
8 |
unless exists $subrules->{$rulename} |
|
1894
|
3 |
15 |
if length $subrulename > $indent |
|
1898
|
0 |
1 |
if $indent == -1 |
|
1915
|
0 |
1 |
unless defined $startrule |
|
1926
|
0 |
1 |
if not exists $self->{'discarded'} or ref $self->{'discarded'} ne "ARRAY" or scalar @{$self->{'discarded'};} < 1 |
|
1985
|
0 |
16 |
if (exists $rule->{'comment'} and not $self->testoption("stripallcomments")) |
|
1988
|
0 |
0 |
if ref $comment ne "ARRAY" |
|
1996
|
2 |
14 |
unless defined $rule and exists $rule->{'name'} and exists $rule->{'generationstatus'} |
|
2000
|
1 |
13 |
unless ($status) |
|
2002
|
0 |
1 |
if $rulename ne $startrulename |
|
2009
|
4 |
4 |
if exists $subrules->{$rulename} and not $subrulestatus and $rulegeneratedoutput |
|
2017
|
8 |
6 |
if (exists $subrules->{$rulename}) |
|
2026
|
8 |
0 |
if $subrulegeneratedoutput |
|
2037
|
18 |
14 |
unless exists $g4rule->{'generationstatus'} |
|
2040
|
14 |
0 |
if exists $marparule->{'status'} |
|
2042
|
0 |
0 |
if $self->{'verbosity'} |
|
2060
|
0 |
1 |
if $self->{'verbosity'} > 1 |