File Coverage

blib/lib/Perlito6/Grammar/Control.pm
Criterion Covered Total %
statement 187 246 76.0
branch 29 74 39.1
condition 85 227 37.4
subroutine 13 14 92.8
pod 0 7 0.0
total 314 568 55.2


line stmt bran cond sub pod time code
1             # Do not edit this file - Generated by Perlito6 9.0
2 31     31   269 use v5;
  31         74  
3 31     31   117 use utf8;
  31         37  
  31         137  
4 31     31   525 use strict;
  31         34  
  31         456  
5 31     31   97 use warnings;
  31         37  
  31         987  
6 31     31   115 no warnings ('redefine', 'once', 'void', 'uninitialized', 'misc', 'recursion');
  31         43  
  31         1042  
7 31     31   116 use Perlito6::Perl5::Runtime;
  31         53  
  31         566  
8 31     31   109 use Perlito6::Perl5::Prelude;
  31         42  
  31         64402  
9             our $MATCH = Perlito6::Match->new();
10             {
11             package GLOBAL;
12             sub new { shift; bless { @_ }, "GLOBAL" }
13              
14             # use v6
15             ;
16             {
17             package Perlito6::Grammar;
18 0     0 0 0 sub new { shift; bless { @_ }, "Perlito6::Grammar" }
  0         0  
19             sub unless {
20 935     935 0 842 my $grammar = $_[0];
21 935         810 my $str = $_[1];
22 935         699 my $pos = $_[2];
23 935         679 (my $MATCH);
24 935         1675 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
25 935         788 (($MATCH)->{bool} = ((do {
26 935         1468 ((my $pos1) = $MATCH->to());
27 935         741 (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         4 ((my $m2) = $grammar->ws($str, $MATCH->to()));
30 2 50       3 if ($m2) {
31 2         3 (($MATCH)->{to} = $m2->to());
32 2         7 1
33             }
34             else {
35 0         0 0
36             }
37             })) && (do {
38 2         4 ((my $m2) = $grammar->exp($str, $MATCH->to()));
39 2 50       3 if ($m2) {
40 2         5 (($MATCH)->{to} = $m2->to());
41 2         4 ($MATCH->{'exp'} = $m2);
42 2         6 1
43             }
44             else {
45 0         0 0
46             }
47 935 50 50     1383 })) && (((do {
      66        
      66        
      66        
      33        
      66        
      33        
      33        
      33        
      33        
      33        
      33        
      33        
      33        
48 2         2 ((my $body) = (${$MATCH->{'exp'}})->{'end_block'});
  2         4  
49 2 50       3 if (!((defined($body)))) {
50 0         0 die(('Missing code block in ' . chr(39) . 'unless' . chr(39)))
51             };
52 2         3 ($MATCH->{capture} = (If->new(('cond' => (${$MATCH->{'exp'}})->{'exp'}), ('body' => Lit::Block->new(('stmts' => do {
  2         3  
53 2         4 (my $List_a = bless [], 'ARRAY');
54 2         3 (my $List_v = bless [], 'ARRAY');
55 2         5 $List_a
56             }))), ('otherwise' => $body))))
57             }) || 1)))
58             })
59             })));
60 935         1440 $MATCH
61             };
62             sub if {
63 1013     1013 0 886 my $grammar = $_[0];
64 1013         811 my $str = $_[1];
65 1013         747 my $pos = $_[2];
66 1013         664 (my $MATCH);
67 1013         1824 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
68 1013         797 (($MATCH)->{bool} = ((do {
69 1013         1499 ((my $pos1) = $MATCH->to());
70 1013         754 (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         202 ((my $m2) = $grammar->ws($str, $MATCH->to()));
73 78 50       143 if ($m2) {
74 78         191 (($MATCH)->{to} = $m2->to());
75 78         279 1
76             }
77             else {
78 0         0 0
79             }
80             })) && (do {
81 78         174 ((my $m2) = $grammar->exp($str, $MATCH->to()));
82 78 50       129 if ($m2) {
83 78         178 (($MATCH)->{to} = $m2->to());
84 78         128 ($MATCH->{'exp'} = $m2);
85 78         244 1
86             }
87             else {
88 0         0 0
89             }
90 1013 50 66     1496 })) && (do {
      33        
      66        
      33        
      33        
91 78         312 ((my $pos1) = $MATCH->to());
92             (((do {
93             (((((((do {
94 78         169 ((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
95 78 50       135 if ($m2) {
96 78         171 (($MATCH)->{to} = $m2->to());
97 78         373 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         26 ((my $m2) = $grammar->exp2($str, $MATCH->to()));
104 14 50       25 if ($m2) {
105 14         30 (($MATCH)->{to} = $m2->to());
106 14         21 ($MATCH->{'exp2'} = $m2);
107 14         44 1
108             }
109             else {
110 0         0 0
111             }
112 78 50 50     81 })) && (((do {
      66        
      33        
      33        
      66        
      33        
      33        
      66        
      33        
      66        
113 14         14 ((my $body) = (${$MATCH->{'exp'}})->{'end_block'});
  14         27  
114 14         17 ((my $otherwise) = (${$MATCH->{'exp2'}})->{'exp'});
  14         26  
115 14 50       30 if (!((defined($body)))) {
116 0         0 die(('Missing code block in ' . chr(39) . 'if' . chr(39)))
117             };
118 14 50       40 if (!((defined($otherwise)))) {
119 0         0 die(('Missing code block in ' . chr(39) . 'else' . chr(39)))
120             };
121 14 50       32 if (Main::isa($otherwise, 'Lit::Hash')) {
122 0         0 ($otherwise = Lit::Block->new(('stmts' => $otherwise->hash1())))
123             };
124 14         42 ($MATCH->{capture} = (If->new(('cond' => (${$MATCH->{'exp'}})->{'exp'}), ('body' => $body), ('otherwise' => $otherwise))))
  14         37  
125             }) || 1)))
126             }) || (do {
127 64         107 (($MATCH)->{to} = $pos1);
128             (((((((do {
129 64         160 ((my $m2) = $grammar->opt_ws($str, $MATCH->to()));
130 64 50       115 if ($m2) {
131 64         140 (($MATCH)->{to} = $m2->to());
132 64         287 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         3 ((my $m2) = $grammar->if($str, $MATCH->to()));
139 1 50       2 if ($m2) {
140 1         2 (($MATCH)->{to} = $m2->to());
141 1         2 ($MATCH->{'if'} = $m2);
142 1         4 1
143             }
144             else {
145 0         0 0
146             }
147 64 50 50     67 })) && (((do {
      66        
      33        
      33        
      66        
      33        
      33        
      33        
148 1         1 ((my $body) = (${$MATCH->{'exp'}})->{'end_block'});
  1         3  
149 1 50       3 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         2  
153 1         2 (my $List_a = bless [], 'ARRAY');
154 1         2 (my $List_v = bless [], 'ARRAY');
155 1         1 push( @{$List_a}, ${$MATCH->{'if'}} );
  1         1  
  1         2  
156 1         3 $List_a
157             }))))))
158             }) || 1))))
159 78 100 66     86 })) || (do {
160 63         105 (($MATCH)->{to} = $pos1);
161 63 50       74 ((((do {
162 63         70 ((my $body) = (${$MATCH->{'exp'}})->{'end_block'});
  63         150  
163 63 50       143 if (!((defined($body)))) {
164 0         0 die(('Missing code block in ' . chr(39) . 'if' . chr(39)))
165             };
166 63         87 ($MATCH->{capture} = (If->new(('cond' => (${$MATCH->{'exp'}})->{'exp'}), ('body' => $body), ('otherwise' => Lit::Block->new(('stmts' => do {
  63         122  
167 63         121 (my $List_a = bless [], 'ARRAY');
168 63         96 (my $List_v = bless [], 'ARRAY');
169 63         187 $List_a
170             }))))))
171             }) || 1)))
172             }))
173             }))
174             })
175             })));
176 1013         1799 $MATCH
177             };
178             sub when {
179 933     933 0 850 my $grammar = $_[0];
180 933         757 my $str = $_[1];
181 933         771 my $pos = $_[2];
182 933         634 (my $MATCH);
183 933         1719 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
184 933         776 (($MATCH)->{bool} = ((do {
185 933         1415 ((my $pos1) = $MATCH->to());
186 933         723 (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     1381 })) && (((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         1466 $MATCH
216             };
217             sub for {
218 933     933 0 825 my $grammar = $_[0];
219 933         709 my $str = $_[1];
220 933         704 my $pos = $_[2];
221 933         634 (my $MATCH);
222 933         1678 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
223 933         856 (($MATCH)->{bool} = ((do {
224 933         1426 ((my $pos1) = $MATCH->to());
225 933         718 (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         6 ((my $m2) = $grammar->ws($str, $MATCH->to()));
228 4 50       5 if ($m2) {
229 4         12 (($MATCH)->{to} = $m2->to());
230 4         12 1
231             }
232             else {
233 0         0 0
234             }
235             })) && (do {
236 4         51 ((my $m2) = $grammar->exp($str, $MATCH->to()));
237 4 50       7 if ($m2) {
238 4         8 (($MATCH)->{to} = $m2->to());
239 4         6 ($MATCH->{'exp'} = $m2);
240 4         9 1
241             }
242             else {
243 0         0 0
244             }
245 933 50 50     1392 })) && (((do {
      66        
      33        
      66        
      33        
      33        
      33        
      33        
246 4         4 ((my $body) = (${$MATCH->{'exp'}})->{'end_block'});
  4         7  
247 4 50       6 if (!((defined($body)))) {
248 0         0 die(('Missing code block in ' . chr(39) . 'when' . chr(39)))
249             };
250 4         4 ($MATCH->{capture} = (For->new(('cond' => (${$MATCH->{'exp'}})->{'exp'}), ('topic' => undef()), ('body' => $body))))
  4         8  
251             }) || 1)))
252             })
253             })));
254 933         1477 $MATCH
255             };
256             sub while {
257 929     929 0 896 my $grammar = $_[0];
258 929         1023 my $str = $_[1];
259 929         701 my $pos = $_[2];
260 929         657 (my $MATCH);
261 929         1734 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
262 929         801 (($MATCH)->{bool} = ((do {
263 929         1418 ((my $pos1) = $MATCH->to());
264 929         726 (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         12 ((my $m2) = $grammar->ws($str, $MATCH->to()));
267 6 50       12 if ($m2) {
268 6         15 (($MATCH)->{to} = $m2->to());
269 6         28 1
270             }
271             else {
272 0         0 0
273             }
274             })) && (do {
275 6         15 ((my $m2) = $grammar->exp($str, $MATCH->to()));
276 6 50       12 if ($m2) {
277 6         28 (($MATCH)->{to} = $m2->to());
278 6         10 ($MATCH->{'exp'} = $m2);
279 6         21 1
280             }
281             else {
282 0         0 0
283             }
284 929 50 50     1425 })) && (((do {
      66        
      33        
      66        
      33        
      33        
      33        
      33        
      33        
      33        
      33        
      33        
285 6         9 ((my $body) = (${$MATCH->{'exp'}})->{'end_block'});
  6         15  
286 6 50       16 if (!((defined($body)))) {
287 0         0 die(('Missing code block in ' . chr(39) . 'while' . chr(39)))
288             };
289 6         10 ($MATCH->{capture} = (While->new(('cond' => (${$MATCH->{'exp'}})->{'exp'}), ('body' => $body))))
  6         11  
290             }) || 1)))
291             })
292             })));
293 929         1470 $MATCH
294             };
295             sub loop {
296 923     923 0 858 my $grammar = $_[0];
297 923         755 my $str = $_[1];
298 923         698 my $pos = $_[2];
299 923         633 (my $MATCH);
300 923         1617 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
301 923         758 (($MATCH)->{bool} = ((do {
302 923         1459 ((my $pos1) = $MATCH->to());
303 923         691 (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     1401 })) && (((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         1410 $MATCH
341             }
342             }
343              
344              
345             }
346              
347             1;