File Coverage

blib/lib/Perlito/Grammar/Control.pm
Criterion Covered Total %
statement 188 247 76.1
branch 29 74 39.1
condition 85 227 37.4
subroutine 13 14 92.8
pod 0 7 0.0
total 315 569 55.3


line stmt bran cond sub pod time code
1             # Do not edit this file - Generated by Perlito 7.0
2 31     31   495 use v5;
  31         123  
  31         1567  
3 31     31   212 use utf8;
  31         72  
  31         291  
4 31     31   1148 use strict;
  31         116  
  31         1366  
5 31     31   246 use warnings;
  31         91  
  31         1671  
6 31     31   162 no warnings ('redefine', 'once', 'void', 'uninitialized', 'misc', 'recursion');
  31         61  
  31         1854  
7 31     31   188 use Perlito::Perl5::Runtime;
  31         76  
  31         726  
8 31     31   253 use Perlito::Perl5::Prelude;
  31         76  
  31         141375  
9             our $MATCH = Perlito::Match->new();
10             {
11             package GLOBAL;
12             sub new { shift; bless { @_ }, "GLOBAL" }
13              
14             # use v6
15             ;
16             {
17             package Perlito::Grammar;
18 0     0 0 0 sub new { shift; bless { @_ }, "Perlito::Grammar" }
  0         0  
19             sub unless {
20 935     935 0 2015 my $grammar = $_[0];
21 935         1675 my $str = $_[1];
22 935         1381 my $pos = $_[2];
23 935         1646 (my $MATCH);
24 935         3987 ($MATCH = Perlito::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
25 935         1779 (($MATCH)->{bool} = ((do {
26 935         2908 ((my $pos1) = $MATCH->to());
27 935         1396 (do {
28             ((((((((((('u' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && ((('n' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('l' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('e' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('s' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('s' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
29 2         8 ((my $m2) = $grammar->ws($str, $MATCH->to()));
30 2 50       8 if ($m2) {
31 2         9 (($MATCH)->{to} = $m2->to());
32 2         11 1
33             }
34             else {
35 0         0 0
36             }
37             })) && (do {
38 2         9 ((my $m2) = $grammar->exp($str, $MATCH->to()));
39 2 50       8 if ($m2) {
40 2         8 (($MATCH)->{to} = $m2->to());
41 2         6 ($MATCH->{'exp'} = $m2);
42 2         11 1
43             }
44             else {
45 0         0 0
46             }
47 935 50 50     5081 })) && (((do {
      66        
      66        
      66        
      33        
      66        
      33        
      33        
      33        
      33        
      33        
      33        
      33        
      33        
48 2         3 ((my $body) = (${$MATCH->{'exp'}})->{'end_block'});
  2         8  
49 2 50       8 if (!((defined($body)))) {
50 0         0 die(('Missing code block in ' . chr(39) . 'unless' . chr(39)))
51             };
52 2         4 ($MATCH->{capture} = (If->new(('cond' => (${$MATCH->{'exp'}})->{'exp'}), ('body' => Lit::Block->new(('stmts' => do {
  2         7  
53 2         6 (my $List_a = bless [], 'ARRAY');
54 2         4 (my $List_v = bless [], 'ARRAY');
55 2         10 $List_a
56             }))), ('otherwise' => $body))))
57             }) || 1)))
58             })
59             })));
60 935         3329 $MATCH
61             };
62             sub if {
63 1013     1013 0 1920 my $grammar = $_[0];
64 1013         2037 my $str = $_[1];
65 1013         1721 my $pos = $_[2];
66 1013         1367 (my $MATCH);
67 1013         4612 ($MATCH = Perlito::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
68 1013         1848 (($MATCH)->{bool} = ((do {
69 1013         3293 ((my $pos1) = $MATCH->to());
70 1013         1738 (do {
71             ((((((('i' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && ((('f' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
72 78         341 ((my $m2) = $grammar->ws($str, $MATCH->to()));
73 78 50       253 if ($m2) {
74 78         376 (($MATCH)->{to} = $m2->to());
75 78         471 1
76             }
77             else {
78 0         0 0
79             }
80             })) && (do {
81 78         306 ((my $m2) = $grammar->exp($str, $MATCH->to()));
82 78 50       415 if ($m2) {
83 78         2447 (($MATCH)->{to} = $m2->to());
84 78         216 ($MATCH->{'exp'} = $m2);
85 78         590 1
86             }
87             else {
88 0         0 0
89             }
90 1013 50 66     3232 })) && (do {
      33        
      66        
      33        
      33        
91 78         309 ((my $pos1) = $MATCH->to());
92             (((do {
93             (((((((do {
94 78         656 ((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
95 78 50       536 if ($m2) {
96 78         278 (($MATCH)->{to} = $m2->to());
97 78         624 1
98             }
99             else {
100 0         0 0
101             }
102             }) && ((('e' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('l' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('s' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('e' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
103 14         53 ((my $m2) = $grammar->exp2($str, $MATCH->to()));
104 14 50       50 if ($m2) {
105 14         57 (($MATCH)->{to} = $m2->to());
106 14         64 ($MATCH->{'exp2'} = $m2);
107 14         68 1
108             }
109             else {
110 0         0 0
111             }
112 78 50 50     149 })) && (((do {
      66        
      33        
      33        
      66        
      33        
      33        
      66        
      33        
      66        
113 14         26 ((my $body) = (${$MATCH->{'exp'}})->{'end_block'});
  14         57  
114 14         27 ((my $otherwise) = (${$MATCH->{'exp2'}})->{'exp'});
  14         53  
115 14 50       49 if (!((defined($body)))) {
116 0         0 die(('Missing code block in ' . chr(39) . 'if' . chr(39)))
117             };
118 14 50       45 if (!((defined($otherwise)))) {
119 0         0 die(('Missing code block in ' . chr(39) . 'else' . chr(39)))
120             };
121 14 50       51 if (Main::isa($otherwise, 'Lit::Hash')) {
122 0         0 ($otherwise = Lit::Block->new(('stmts' => $otherwise->hash1())))
123             };
124 14         36 ($MATCH->{capture} = (If->new(('cond' => (${$MATCH->{'exp'}})->{'exp'}), ('body' => $body), ('otherwise' => $otherwise))))
  14         50  
125             }) || 1)))
126             }) || (do {
127 64         178 (($MATCH)->{to} = $pos1);
128             (((((((do {
129 64         267 ((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
130 64 50       198 if ($m2) {
131 64         242 (($MATCH)->{to} = $m2->to());
132 64         575 1
133             }
134             else {
135 0         0 0
136             }
137             }) && ((('e' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('l' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('s' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
138 1         6 ((my $m2) = $grammar->if($str, $MATCH->to()));
139 1 50       4 if ($m2) {
140 1         5 (($MATCH)->{to} = $m2->to());
141 1         3 ($MATCH->{'if'} = $m2);
142 1         6 1
143             }
144             else {
145 0         0 0
146             }
147 64 50 50     118 })) && (((do {
      66        
      33        
      33        
      66        
      33        
      33        
      33        
148 1         2 ((my $body) = (${$MATCH->{'exp'}})->{'end_block'});
  1         4  
149 1 50       5 if (!((defined($body)))) {
150 0         0 die(('Missing code block in ' . chr(39) . 'if' . chr(39)))
151             };
152 1         2 ($MATCH->{capture} = (If->new(('cond' => (${$MATCH->{'exp'}})->{'exp'}), ('body' => $body), ('otherwise' => Lit::Block->new(('stmts' => do {
  1         4  
153 1         4 (my $List_a = bless [], 'ARRAY');
154 1         3 (my $List_v = bless [], 'ARRAY');
155 1         3 push( @{$List_a}, ${$MATCH->{'if'}} );
  1         3  
  1         3  
156 1         6 $List_a
157             }))))))
158             }) || 1))))
159 78 100 66     144 })) || (do {
160 63         164 (($MATCH)->{to} = $pos1);
161 63 50       114 ((((do {
162 63         110 ((my $body) = (${$MATCH->{'exp'}})->{'end_block'});
  63         337  
163 63 50       239 if (!((defined($body)))) {
164 0         0 die(('Missing code block in ' . chr(39) . 'if' . chr(39)))
165             };
166 63         131 ($MATCH->{capture} = (If->new(('cond' => (${$MATCH->{'exp'}})->{'exp'}), ('body' => $body), ('otherwise' => Lit::Block->new(('stmts' => do {
  63         235  
167 63         211 (my $List_a = bless [], 'ARRAY');
168 63         185 (my $List_v = bless [], 'ARRAY');
169 63         333 $List_a
170             }))))))
171             }) || 1)))
172             }))
173             }))
174             })
175             })));
176 1013         3760 $MATCH
177             };
178             sub when {
179 933     933 0 2136 my $grammar = $_[0];
180 933         1534 my $str = $_[1];
181 933         1546 my $pos = $_[2];
182 933         1270 (my $MATCH);
183 933         4663 ($MATCH = Perlito::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
184 933         1925 (($MATCH)->{bool} = ((do {
185 933         3527 ((my $pos1) = $MATCH->to());
186 933         1894 (do {
187             ((((((((('w' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && ((('h' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('e' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('n' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
188 0         0 ((my $m2) = $grammar->ws($str, $MATCH->to()));
189 0 0       0 if ($m2) {
190 0         0 (($MATCH)->{to} = $m2->to());
191 0         0 1
192             }
193             else {
194 0         0 0
195             }
196             })) && (do {
197 0         0 ((my $m2) = $grammar->exp($str, $MATCH->to()));
198 0 0       0 if ($m2) {
199 0         0 (($MATCH)->{to} = $m2->to());
200 0         0 ($MATCH->{'exp'} = $m2);
201 0         0 1
202             }
203             else {
204 0         0 0
205             }
206 933 0 0     2904 })) && (((do {
      66        
      33        
      66        
      33        
      33        
      0        
      33        
      0        
      0        
207 0         0 ((my $body) = (${$MATCH->{'exp'}})->{'end_block'});
  0         0  
208 0 0       0 if (!((defined($body)))) {
209 0         0 die(('Missing code block in ' . chr(39) . 'when' . chr(39)))
210             };
211 0         0 ($MATCH->{capture} = (When->new(('parameters' => (${$MATCH->{'exp'}})->{'exp'}), ('body' => $body))))
  0         0  
212             }) || 1)))
213             })
214             })));
215 933         2985 $MATCH
216             };
217             sub for {
218 933     933 0 1991 my $grammar = $_[0];
219 933         1669 my $str = $_[1];
220 933         1440 my $pos = $_[2];
221 933         1307 (my $MATCH);
222 933         3886 ($MATCH = Perlito::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
223 933         1957 (($MATCH)->{bool} = ((do {
224 933         3434 ((my $pos1) = $MATCH->to());
225 933         1821 (do {
226             (((((((('f' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && ((('o' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('r' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
227 4         14 ((my $m2) = $grammar->ws($str, $MATCH->to()));
228 4 50       15 if ($m2) {
229 4         18 (($MATCH)->{to} = $m2->to());
230 4         25 1
231             }
232             else {
233 0         0 0
234             }
235             })) && (do {
236 4         18 ((my $m2) = $grammar->exp($str, $MATCH->to()));
237 4 50       14 if ($m2) {
238 4         15 (($MATCH)->{to} = $m2->to());
239 4         9 ($MATCH->{'exp'} = $m2);
240 4         18 1
241             }
242             else {
243 0         0 0
244             }
245 933 50 50     2879 })) && (((do {
      66        
      33        
      66        
      33        
      33        
      33        
      33        
246 4         7 ((my $body) = (${$MATCH->{'exp'}})->{'end_block'});
  4         13  
247 4 50       11 if (!((defined($body)))) {
248 0         0 die(('Missing code block in ' . chr(39) . 'when' . chr(39)))
249             };
250 4         10 ($MATCH->{capture} = (For->new(('cond' => (${$MATCH->{'exp'}})->{'exp'}), ('topic' => undef()), ('body' => $body))))
  4         11  
251             }) || 1)))
252             })
253             })));
254 933         4030 $MATCH
255             };
256             sub while {
257 929     929 0 3397 my $grammar = $_[0];
258 929         1746 my $str = $_[1];
259 929         1638 my $pos = $_[2];
260 929         1185 (my $MATCH);
261 929         4637 ($MATCH = Perlito::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
262 929         1677 (($MATCH)->{bool} = ((do {
263 929         3274 ((my $pos1) = $MATCH->to());
264 929         1515 (do {
265             (((((((((('w' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && ((('h' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('i' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('l' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('e' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
266 6         26 ((my $m2) = $grammar->ws($str, $MATCH->to()));
267 6 50       24 if ($m2) {
268 6         24 (($MATCH)->{to} = $m2->to());
269 6         37 1
270             }
271             else {
272 0         0 0
273             }
274             })) && (do {
275 6         26 ((my $m2) = $grammar->exp($str, $MATCH->to()));
276 6 50       23 if ($m2) {
277 6         24 (($MATCH)->{to} = $m2->to());
278 6         20 ($MATCH->{'exp'} = $m2);
279 6         32 1
280             }
281             else {
282 0         0 0
283             }
284 929 50 50     3223 })) && (((do {
      66        
      33        
      66        
      33        
      33        
      33        
      33        
      33        
      33        
      33        
      33        
285 6         11 ((my $body) = (${$MATCH->{'exp'}})->{'end_block'});
  6         22  
286 6 50       23 if (!((defined($body)))) {
287 0         0 die(('Missing code block in ' . chr(39) . 'while' . chr(39)))
288             };
289 6         12 ($MATCH->{capture} = (While->new(('cond' => (${$MATCH->{'exp'}})->{'exp'}), ('body' => $body))))
  6         21  
290             }) || 1)))
291             })
292             })));
293 929         3078 $MATCH
294             };
295             sub loop {
296 923     923 0 2135 my $grammar = $_[0];
297 923         1525 my $str = $_[1];
298 923         1402 my $pos = $_[2];
299 923         1502 (my $MATCH);
300 923         3866 ($MATCH = Perlito::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
301 923         1882 (($MATCH)->{bool} = ((do {
302 923         3262 ((my $pos1) = $MATCH->to());
303 923         1557 (do {
304             ((((((((('l' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && ((('o' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('o' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && ((('p' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
305 0         0 ((my $m2) = $grammar->ws($str, $MATCH->to()));
306 0 0       0 if ($m2) {
307 0         0 (($MATCH)->{to} = $m2->to());
308 0         0 1
309             }
310             else {
311 0         0 0
312             }
313             })) && (do {
314 0         0 ((my $m2) = $grammar->exp($str, $MATCH->to()));
315 0 0       0 if ($m2) {
316 0         0 (($MATCH)->{to} = $m2->to());
317 0         0 ($MATCH->{'exp'} = $m2);
318 0         0 1
319             }
320             else {
321 0         0 0
322             }
323 923 0 0     3909 })) && (((do {
      33        
      0        
      33        
      0        
      0        
      0        
      0        
      0        
      0        
324 0         0 ((my $body) = (${$MATCH->{'exp'}})->{'end_block'});
  0         0  
325 0 0       0 if (!((defined($body)))) {
326 0         0 ($body = (${$MATCH->{'exp'}})->{'exp'});
  0         0  
327 0 0       0 if (Main::isa($body, 'Lit::Block')) {
328 0         0 ($MATCH->{capture} = (While->new(('cond' => Val::Bit->new(('bit' => 1))), ('body' => $body))))
329             }
330             else {
331 0         0 die(('Missing code block in ' . chr(39) . 'loop' . chr(39)))
332             }
333             }
334             else {
335 0         0 die((chr(39) . 'loop' . chr(39) . ' with parameters is not implemented'))
336             }
337             }) || 1)))
338             })
339             })));
340 923         3405 $MATCH
341             }
342             }
343              
344              
345             }
346              
347             1;