File Coverage

blib/lib/Perlito6/Expression.pm
Criterion Covered Total %
statement 1268 1647 76.9
branch 300 486 61.7
condition 263 540 48.7
subroutine 30 34 88.2
pod 0 21 0.0
total 1861 2728 68.2


line stmt bran cond sub pod time code
1             # Do not edit this file - Generated by Perlito6 9.0
2 31     31   215 use v5;
  31         68  
3 31     31   114 use utf8;
  31         34  
  31         128  
4 31     31   477 use strict;
  31         36  
  31         485  
5 31     31   94 use warnings;
  31         38  
  31         781  
6 31     31   86 no warnings ('redefine', 'once', 'void', 'uninitialized', 'misc', 'recursion');
  31         26  
  31         834  
7 31     31   93 use Perlito6::Perl5::Runtime;
  31         31  
  31         437  
8 31     31   84 use Perlito6::Perl5::Prelude;
  31         29  
  31         2652  
9             our $MATCH = Perlito6::Match->new();
10             {
11             package GLOBAL;
12             sub new { shift; bless { @_ }, "GLOBAL" }
13             {
14             package Perlito6::Expression;
15 0     0 0 0 sub new { shift; bless { @_ }, "Perlito6::Expression" }
  0         0  
16 31     31   11173 use Perlito6::Precedence;
  31         55  
  31         1023  
17 31     31   169 use Perlito6::Grammar;
  31         32  
  31         566  
18 31     31   97 use Perlito6::Perl5::Emitter;
  31         31  
  31         345330  
19             sub expand_list {
20 545     545 0 602 my $param_list = $_[0];
21 545 100 100     930 if (((Main::isa($param_list, 'Apply')) && ((($param_list->code()) eq 'list:<,>')))) {
22 154         169 ((my $args) = do {
23 154         262 (my $List_a = bless [], 'ARRAY');
24 154         229 (my $List_v = bless [], 'ARRAY');
25 154         255 $List_a
26             });
27 154         169 for my $v ( @{(($param_list->arguments()))} ) {
  154         382  
28 346 50       530 if (defined($v)) {
29 346         264 push( @{$args}, $v )
  346         489  
30             }
31             };
32 154         263 return scalar ($args)
33             }
34             else {
35 391 100       769 if (($param_list eq '*undef*')) {
36 30         32 return scalar (do {
37 30         54 (my $List_a = bless [], 'ARRAY');
38 30         47 (my $List_v = bless [], 'ARRAY');
39 30         63 $List_a
40             })
41             }
42             else {
43 361         340 return scalar (do {
44 361         522 (my $List_a = bless [], 'ARRAY');
45 361         437 (my $List_v = bless [], 'ARRAY');
46 361         320 push( @{$List_a}, $param_list );
  361         469  
47 361         646 $List_a
48             })
49             }
50             }
51             };
52             sub block_or_hash {
53 57     57 0 58 my $o = $_[0];
54 57 50       156 if (defined($o->sig())) {
55 0         0 return scalar ($o)
56             };
57 57         147 ((my $stmts) = $o->stmts());
58 57 100 66     880 if (((!((defined($stmts)))) || (((scalar( @{$stmts} )) == 0)))) {
  57         207  
59 1         2 return scalar (Lit::Hash->new(('hash1' => do {
60 1         2 (my $List_a = bless [], 'ARRAY');
61 1         1 (my $List_v = bless [], 'ARRAY');
62 1         5 $List_a
63             })))
64             };
65 56 100       53 if (((scalar( @{$stmts} )) != 1)) {
  56         131  
66 26         44 return scalar ($o)
67             };
68 30         53 ((my $stmt) = $stmts->[0]);
69 30 100       82 if (!((Main::isa($stmt, 'Apply')))) {
70 8         16 return scalar ($o)
71             };
72 22 50       64 if ((($stmt->code()) eq 'infix:<' . chr(61) . '>>')) {
73 0         0 return scalar (Lit::Hash->new(('hash1' => do {
74 0         0 (my $List_a = bless [], 'ARRAY');
75 0         0 (my $List_v = bless [], 'ARRAY');
76 0         0 push( @{$List_a}, $stmt );
  0         0  
77 0         0 $List_a
78             })))
79             };
80 22 100       57 if ((($stmt->code()) ne 'list:<,>')) {
81 21         36 return scalar ($o)
82             };
83 1         1 for my $item ( @{(($stmt->arguments()))} ) {
  1         3  
84 2 100 66     5 if ((Main::isa($item, 'Apply') && (($item->code()) eq 'infix:<' . chr(61) . '>>'))) {
85 1         3 return scalar (Lit::Hash->new(('hash1' => expand_list($stmt))))
86             }
87             };
88 0         0 return scalar ($o)
89             };
90             sub pop_term {
91 2829     2829 0 2477 my $num_stack = $_[0];
92 2829         1853 ((my $v) = pop( @{$num_stack} ));
  2829         2798  
93 2829 100       5880 if (Main::isa($v, 'Array')) {
94 1975 50       3501 if (($v->[1] eq 'methcall_no_params')) {
95 0         0 ($v = Call->new(('invocant' => undef()), ('method' => $v->[2]), ('hyper' => $v->[3])));
96 0         0 return scalar ($v)
97             };
98 1975 100       2769 if (($v->[1] eq 'funcall_no_params')) {
99 24         98 ($v = Apply->new(('code' => $v->[3]), ('namespace' => $v->[2])));
100 24         102 return scalar ($v)
101             };
102 1951 50       2861 if (($v->[1] eq 'methcall')) {
103 0 0       0 if (($v->[3])->{'end_block'}) {
104 0         0 unshift( @{$num_stack}, ($v->[3])->{'end_block'} )
  0         0  
105             };
106 0         0 ((my $param_list) = expand_list(($v->[3])->{'exp'}));
107 0         0 ($v = Call->new(('invocant' => undef()), ('method' => $v->[2]), ('arguments' => $param_list), ('hyper' => $v->[4])));
108 0         0 return scalar ($v)
109             };
110 1951 100       2819 if (($v->[1] eq 'funcall')) {
111 294 50       646 if (($v->[4])->{'end_block'}) {
112 0         0 unshift( @{$num_stack}, ($v->[4])->{'end_block'} )
  0         0  
113             };
114 294         637 ((my $param_list) = expand_list(($v->[4])->{'exp'}));
115 294         1130 ($v = Apply->new(('code' => $v->[3]), ('arguments' => $param_list), ('namespace' => $v->[2])));
116 294         794 return scalar ($v)
117             };
118 1657 100       2377 if (($v->[1] eq '( )')) {
119 152         254 ((my $param_list) = expand_list($v->[2]));
120 152         439 ($v = Apply->new(('code' => 'circumfix:<( )>'), ('arguments' => $param_list), ('namespace' => '')));
121 152         272 return scalar ($v)
122             };
123 1505 100       2174 if (($v->[1] eq '[ ]')) {
124 12         30 ((my $param_list) = expand_list($v->[2]));
125 12         62 ($v = Lit::Array->new(('array1' => $param_list)));
126 12         29 return scalar ($v)
127             };
128 1493 100       2122 if (($v->[1] eq 'block')) {
129 57         295 ($v = Lit::Block->new(('stmts' => $v->[2]), ('sig' => $v->[3])));
130 57         163 ($v = block_or_hash($v));
131 57         107 return scalar ($v)
132             };
133 1436 50       2129 if (($v->[1] eq '.( )')) {
134 0         0 ($v = Call->new(('invocant' => undef()), ('method' => 'postcircumfix:<( )>'), ('arguments' => $v->[2]), ('hyper' => 0)));
135 0         0 return scalar ($v)
136             };
137 1436 50       2080 if (($v->[1] eq '.[ ]')) {
138 0         0 ($v = Index->new(('obj' => undef()), ('index_exp' => $v->[2])));
139 0         0 return scalar ($v)
140             };
141 1436 50       2076 if (($v->[1] eq '.' . chr(123) . ' ' . chr(125))) {
142 0         0 ($v = Lookup->new(('obj' => undef()), ('index_exp' => $v->[2])));
143 0         0 return scalar ($v)
144             };
145 1436 50 33     2286 if ((Main::isa(($v->[1]), 'Array') && (((scalar( @{($v->[1])} )) == 2)))) {
  0         0  
146 0         0 ($v = Apply->new(('code' => 'pair'), ('arguments' => $v->[1]), ('namespace' => '')));
147 0         0 return scalar ($v)
148             };
149 1436         3294 return scalar ($v->[1])
150             };
151 854         1197 return scalar ($v)
152             };
153             sub reduce_postfix {
154 205     205 0 221 my $op = $_[0];
155 205         196 my $value = $_[1];
156 205         218 ((my $v) = $op);
157 205 100       454 if (($v->[1] eq 'methcall_no_params')) {
158 77         273 ($v = Call->new(('invocant' => $value), ('method' => $v->[2]), ('hyper' => $v->[3])));
159 77         205 return scalar ($v)
160             };
161 128 50       289 if (($v->[1] eq 'funcall_no_params')) {
162 0         0 die(('unexpected function call'));
163 0         0 push( @{$v}, $value );
  0         0  
164 0         0 return scalar ($v)
165             };
166 128 100       299 if (($v->[1] eq 'methcall')) {
167 31         85 ((my $param_list) = expand_list(($v->[3])->{'exp'}));
168 31         187 ($v = Call->new(('invocant' => $value), ('method' => $v->[2]), ('arguments' => $param_list), ('hyper' => $v->[4])));
169 31         88 return scalar ($v)
170             };
171 97 50       238 if (($v->[1] eq 'funcall')) {
172 0         0 die(('unexpected function call'));
173 0         0 push( @{$v}, $value );
  0         0  
174 0         0 return scalar ($v)
175             };
176 97 100       221 if (($v->[1] eq '( )')) {
177 24         58 ((my $param_list) = expand_list($v->[2]));
178 24 50 33     65 if ((Main::isa($value, 'Apply') && !((defined($value->arguments()))))) {
179 24         44 (($value)->{arguments} = $param_list);
180 24         94 return scalar ($value)
181             };
182 0 0 0     0 if ((Main::isa($value, 'Call') && !((defined($value->arguments()))))) {
183 0         0 (($value)->{arguments} = $param_list);
184 0         0 return scalar ($value)
185             };
186 0         0 ($v = Call->new(('invocant' => $value), ('method' => 'postcircumfix:<( )>'), ('arguments' => $param_list), ('hyper' => 0)));
187 0         0 return scalar ($v)
188             };
189 73 100       155 if (($v->[1] eq '[ ]')) {
190 37         181 ($v = Index->new(('obj' => $value), ('index_exp' => $v->[2])));
191 37         107 return scalar ($v)
192             };
193 36 100       78 if (($v->[1] eq 'block')) {
194 29         116 ($v = Lookup->new(('obj' => $value), ('index_exp' => ($v->[2])->[0])));
195 29         78 return scalar ($v)
196             };
197 7 50       24 if (($v->[1] eq '.( )')) {
198 7         16 ((my $param_list) = expand_list($v->[2]));
199 7         43 ($v = Call->new(('invocant' => $value), ('method' => 'postcircumfix:<( )>'), ('arguments' => $param_list), ('hyper' => 0)));
200 7         25 return scalar ($v)
201             };
202 0 0       0 if (($v->[1] eq '.[ ]')) {
203 0         0 ($v = Call->new(('invocant' => $value), ('method' => 'postcircumfix:<[ ]>'), ('arguments' => $v->[2]), ('hyper' => 0)));
204 0         0 return scalar ($v)
205             };
206 0 0       0 if (($v->[1] eq '.' . chr(123) . ' ' . chr(125))) {
207 0         0 ($v = Call->new(('invocant' => $value), ('method' => 'postcircumfix:<' . chr(123) . ' ' . chr(125) . '>'), ('arguments' => $v->[2]), ('hyper' => 0)));
208 0         0 return scalar ($v)
209             };
210 0         0 push( @{$op}, $value );
  0         0  
211 0         0 return scalar ($op)
212             };
213             ((my $reduce_to_ast) = sub {
214             my $op_stack = $_[0];
215             my $num_stack = $_[1];
216             ((my $last_op) = shift( @{$op_stack} ));
217             if (($last_op->[0] eq 'prefix')) {
218             push( @{$num_stack}, Apply->new(('namespace' => ''), ('code' => ('prefix:<' . $last_op->[1] . '>')), ('arguments' => do {
219             (my $List_a = bless [], 'ARRAY');
220             (my $List_v = bless [], 'ARRAY');
221             push( @{$List_a}, pop_term($num_stack) );
222             $List_a
223             })) )
224             }
225             else {
226             if (($last_op->[0] eq 'postfix')) {
227             push( @{$num_stack}, Apply->new(('namespace' => ''), ('code' => ('postfix:<' . $last_op->[1] . '>')), ('arguments' => do {
228             (my $List_a = bless [], 'ARRAY');
229             (my $List_v = bless [], 'ARRAY');
230             push( @{$List_a}, pop_term($num_stack) );
231             $List_a
232             })) )
233             }
234             else {
235             if (($last_op->[0] eq 'postfix_or_term')) {
236             push( @{$num_stack}, reduce_postfix($last_op, pop_term($num_stack)) )
237             }
238             else {
239             if (Perlito6::Precedence::is_assoc_type('list', $last_op->[1])) {
240             (my $arg);
241             if ((scalar( @{$num_stack} ) < 2)) {
242             ((my $v2) = pop_term($num_stack));
243             if (((Main::isa($v2, 'Apply')) && (($v2->code() eq (('list:<' . $last_op->[1] . '>')))))) {
244             push( @{($v2->arguments())}, undef() );
245             push( @{$num_stack}, $v2 )
246             }
247             else {
248             push( @{$num_stack}, Apply->new(('namespace' => ''), ('code' => ('list:<' . $last_op->[1] . '>')), ('arguments' => do {
249             (my $List_a = bless [], 'ARRAY');
250             (my $List_v = bless [], 'ARRAY');
251             push( @{$List_a}, $v2 );
252             push( @{$List_a}, undef() );
253             $List_a
254             })) )
255             };
256             return ()
257             }
258             else {
259             ((my $v2) = pop_term($num_stack));
260             ($arg = do {
261             (my $List_a = bless [], 'ARRAY');
262             (my $List_v = bless [], 'ARRAY');
263             push( @{$List_a}, pop_term($num_stack) );
264             push( @{$List_a}, $v2 );
265             $List_a
266             })
267             };
268             if ((((Main::isa(($arg->[0]), 'Apply')) && (($last_op->[0] eq 'infix'))) && ((($arg->[0])->code() eq (('list:<' . $last_op->[1] . '>')))))) {
269             push( @{$num_stack}, Apply->new(('namespace' => ''), ('code' => ($arg->[0])->code()), ('arguments' => do {
270             (my $List_a = bless [], 'ARRAY');
271             (my $List_v = bless [], 'ARRAY');
272             ($List_v = ((($arg->[0])->arguments())));
273             for my $x ( @{(bless [0 .. ((scalar( @{$List_v} ) - 1))], 'ARRAY')} ) {
274             push( @{$List_a}, $List_v->[$x] )
275             };
276             push( @{$List_a}, $arg->[1] );
277             $List_a
278             })) );
279             return ()
280             };
281             push( @{$num_stack}, Apply->new(('namespace' => ''), ('code' => ('list:<' . $last_op->[1] . '>')), ('arguments' => $arg)) )
282             }
283             else {
284             if (Perlito6::Precedence::is_assoc_type('chain', $last_op->[1])) {
285             if ((scalar( @{$num_stack} ) < 2)) {
286             die(('Missing value after operator ' . $last_op->[1]))
287             };
288             ((my $v2) = pop_term($num_stack));
289             ((my $arg) = do {
290             (my $List_a = bless [], 'ARRAY');
291             (my $List_v = bless [], 'ARRAY');
292             push( @{$List_a}, pop_term($num_stack) );
293             push( @{$List_a}, $v2 );
294             $List_a
295             });
296             push( @{$num_stack}, Apply->new(('namespace' => ''), ('code' => ('infix:<' . $last_op->[1] . '>')), ('arguments' => $arg)) )
297             }
298             else {
299             if (($last_op->[0] eq 'ternary')) {
300             if (((scalar( @{$num_stack} ) < 2))) {
301             die(('Missing value after ternary operator'))
302             };
303             ((my $v2) = pop_term($num_stack));
304             push( @{$num_stack}, Apply->new(('namespace' => ''), ('code' => ('ternary:<' . $last_op->[1] . '>')), ('arguments' => do {
305             (my $List_a = bless [], 'ARRAY');
306             (my $List_v = bless [], 'ARRAY');
307             push( @{$List_a}, pop_term($num_stack) );
308             push( @{$List_a}, $last_op->[2] );
309             push( @{$List_a}, $v2 );
310             $List_a
311             })) )
312             }
313             else {
314             if (((scalar( @{$num_stack} ) < 2))) {
315             die(('missing value after operator ' . chr(39) . $last_op->[1] . (chr(39))))
316             };
317             ((my $v2) = pop_term($num_stack));
318             push( @{$num_stack}, Apply->new(('namespace' => ''), ('code' => ('infix:<' . $last_op->[1] . '>')), ('arguments' => do {
319             (my $List_a = bless [], 'ARRAY');
320             (my $List_v = bless [], 'ARRAY');
321             push( @{$List_a}, pop_term($num_stack) );
322             push( @{$List_a}, $v2 );
323             $List_a
324             })) )
325             }
326             }
327             }
328             }
329             }
330             }
331             });
332             sub capture_name {
333 0     0 0 0 my $grammar = $_[0];
334 0         0 my $str = $_[1];
335 0         0 my $pos = $_[2];
336 0         0 (my $MATCH);
337 0         0 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
338 0         0 (($MATCH)->{bool} = ((do {
339 0         0 ((my $pos1) = $MATCH->to());
340 0         0 (do {
341             ((do {
342 0         0 ((my $m2) = Perlito6::Grammar->full_ident($str, $MATCH->to()));
343 0 0       0 if ($m2) {
344 0         0 (($MATCH)->{to} = $m2->to());
345 0         0 ($MATCH->{'Perlito6::Grammar.full_ident'} = $m2);
346 0         0 1
347             }
348             else {
349 0         0 0
350             }
351 0 0       0 }) && (do {
352 0         0 ((my $last_pos) = $MATCH->to());
353 0 0       0 if (!((do {
354 0         0 ((my $pos1) = $MATCH->to());
355 0         0 (do {
356 0 0 0     0 (((('.' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
357 0         0 ((my $m2) = Perlito6::Grammar->ident($str, $MATCH->to()));
358 0 0       0 if ($m2) {
359 0         0 (($MATCH)->{to} = $m2->to());
360 0 0       0 if (exists($MATCH->{'Perlito6::Grammar.ident'})) {
361 0         0 push( @{($MATCH->{'Perlito6::Grammar.ident'})}, $m2 )
  0         0  
362             }
363             else {
364 0         0 ($MATCH->{'Perlito6::Grammar.ident'} = do {
365 0         0 (my $List_a = bless [], 'ARRAY');
366 0         0 (my $List_v = bless [], 'ARRAY');
367 0         0 push( @{$List_a}, $m2 );
  0         0  
368 0         0 $List_a
369             })
370             };
371 0         0 1
372             }
373             else {
374 0         0 0
375             }
376             }))
377             })
378             }))) {
379 0         0 (($MATCH)->{to} = $last_pos)
380             };
381 0         0 1
382             }))
383             })
384             })));
385 0         0 $MATCH
386             };
387             sub hyper_op {
388 2783     2783 0 2360 my $grammar = $_[0];
389 2783         2033 my $str = $_[1];
390 2783         1936 my $pos = $_[2];
391 2783         1859 (my $MATCH);
392 2783         4557 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
393 2783         2062 (($MATCH)->{bool} = ((do {
394 2783         3769 ((my $pos1) = $MATCH->to());
395 2783         1964 (do {
396 2783         3755 ((my $last_pos) = $MATCH->to());
397 2783 100       1856 if (!((do {
398 2783 100       3881 (('>>' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))
399             }))) {
400 2782         2636 (($MATCH)->{to} = $last_pos)
401             };
402 2783         3217 1
403             })
404             })));
405 2783         3058 $MATCH
406             };
407             sub operator {
408 5966     5966 0 4852 my $grammar = $_[0];
409 5966         4375 my $str = $_[1];
410 5966         3959 my $pos = $_[2];
411 5966         3837 (my $MATCH);
412 5966         11626 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
413 5966         4333 (($MATCH)->{bool} = ((do {
414 5966         8903 ((my $pos1) = $MATCH->to());
415             ((((((((((((((((((((((((((((((do {
416             (((((('.(' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))) && (do {
417 7         12 ((my $m2) = $grammar->paren_parse($str, $MATCH->to()));
418 7 50       15 if ($m2) {
419 7         740 (($MATCH)->{to} = $m2->to());
420 7         13 ($MATCH->{'paren_parse'} = $m2);
421 7         47 1
422             }
423             else {
424 0         0 0
425             }
426 5966 50 50     8297 })) && (((')' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
      66        
      66        
      33        
      33        
427 7         7 ($MATCH->{capture} = (do {
428 7         9 (my $List_a = bless [], 'ARRAY');
429 7         12 (my $List_v = bless [], 'ARRAY');
430 7         15 push( @{$List_a}, 'postfix_or_term' );
  7         14  
431 7         5 push( @{$List_a}, '.( )' );
  7         12  
432 7         7 push( @{$List_a}, ${$MATCH->{'paren_parse'}} );
  7         6  
  7         14  
433 7         17 $List_a
434             }))
435             }) || 1)))
436             }) || (do {
437 5959         5580 (($MATCH)->{to} = $pos1);
438             ((((((('.[' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))) && (do {
439 0         0 ((my $m2) = $grammar->square_parse($str, $MATCH->to()));
440 0 0       0 if ($m2) {
441 0         0 (($MATCH)->{to} = $m2->to());
442 0         0 ($MATCH->{'square_parse'} = $m2);
443 0         0 1
444             }
445             else {
446 0         0 0
447             }
448 5959 0 0     8467 })) && (((']' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
      33        
      33        
      0        
      0        
449 0         0 ($MATCH->{capture} = (do {
450 0         0 (my $List_a = bless [], 'ARRAY');
451 0         0 (my $List_v = bless [], 'ARRAY');
452 0         0 push( @{$List_a}, 'postfix_or_term' );
  0         0  
453 0         0 push( @{$List_a}, '.[ ]' );
  0         0  
454 0         0 push( @{$List_a}, ${$MATCH->{'square_parse'}} );
  0         0  
  0         0  
455 0         0 $List_a
456             }))
457             }) || 1))))
458             })) || (do {
459 5959         5471 (($MATCH)->{to} = $pos1);
460             ((((((('.' . chr(123) eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))) && (do {
461 0         0 ((my $m2) = $grammar->curly_parse($str, $MATCH->to()));
462 0 0       0 if ($m2) {
463 0         0 (($MATCH)->{to} = $m2->to());
464 0         0 ($MATCH->{'curly_parse'} = $m2);
465 0         0 1
466             }
467             else {
468 0         0 0
469             }
470 5959 0 0     8346 })) && (((chr(125) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
      33        
      33        
      0        
      0        
471 0         0 ($MATCH->{capture} = (do {
472 0         0 (my $List_a = bless [], 'ARRAY');
473 0         0 (my $List_v = bless [], 'ARRAY');
474 0         0 push( @{$List_a}, 'postfix_or_term' );
  0         0  
475 0         0 push( @{$List_a}, 'block' );
  0         0  
476 0         0 push( @{$List_a}, ${$MATCH->{'curly_parse'}} );
  0         0  
  0         0  
477 0         0 $List_a
478             }))
479             }) || 1))))
480             })) || (do {
481 5959         5262 (($MATCH)->{to} = $pos1);
482             ((((((('(' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
483 176         368 ((my $m2) = $grammar->paren_parse($str, $MATCH->to()));
484 176 50       418 if ($m2) {
485 176         400 (($MATCH)->{to} = $m2->to());
486 176         245 ($MATCH->{'paren_parse'} = $m2);
487 176         601 1
488             }
489             else {
490 0         0 0
491             }
492 5959 50 50     8397 })) && (((')' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
      66        
      66        
      33        
      33        
493 176         151 ($MATCH->{capture} = (do {
494 176         236 (my $List_a = bless [], 'ARRAY');
495 176         216 (my $List_v = bless [], 'ARRAY');
496 176         160 push( @{$List_a}, 'postfix_or_term' );
  176         245  
497 176         146 push( @{$List_a}, '( )' );
  176         175  
498 176         137 push( @{$List_a}, ${$MATCH->{'paren_parse'}} );
  176         147  
  176         316  
499 176         1282 $List_a
500             }))
501             }) || 1))))
502             })) || (do {
503 5783         4655 (($MATCH)->{to} = $pos1);
504             ((((((('[' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
505 49         117 ((my $m2) = $grammar->square_parse($str, $MATCH->to()));
506 49 50       121 if ($m2) {
507 49         111 (($MATCH)->{to} = $m2->to());
508 49         86 ($MATCH->{'square_parse'} = $m2);
509 49         196 1
510             }
511             else {
512 0         0 0
513             }
514 5783 50 50     8261 })) && (((']' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
      66        
      66        
      33        
      33        
515 49         53 ($MATCH->{capture} = (do {
516 49         83 (my $List_a = bless [], 'ARRAY');
517 49         72 (my $List_v = bless [], 'ARRAY');
518 49         47 push( @{$List_a}, 'postfix_or_term' );
  49         84  
519 49         42 push( @{$List_a}, '[ ]' );
  49         63  
520 49         51 push( @{$List_a}, ${$MATCH->{'square_parse'}} );
  49         67  
  49         93  
521 49         134 $List_a
522             }))
523             }) || 1))))
524             })) || (do {
525 5734         5004 (($MATCH)->{to} = $pos1);
526             (((((do {
527 5734         8085 ((my $pos1) = $MATCH->to());
528             ((do {
529 5734 50       7888 (('.<' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))
530 5734 50       4233 }) || (do {
531 5734         5390 (($MATCH)->{to} = $pos1);
532 5734 100       8504 (((('<' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
533             }))
534             }) && (do {
535 5         16 ((my $m2) = Perlito6::Grammar->ident($str, $MATCH->to()));
536 5 50       11 if ($m2) {
537 0         0 (($MATCH)->{to} = $m2->to());
538 0         0 ($MATCH->{'Perlito6::Grammar.ident'} = $m2);
539 0         0 1
540             }
541             else {
542 5         20 0
543             }
544 5734 0 0     4056 })) && ((('>' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
      66        
      0        
      33        
545 0         0 ($MATCH->{capture} = (do {
546 0         0 (my $List_a = bless [], 'ARRAY');
547 0         0 (my $List_v = bless [], 'ARRAY');
548 0         0 push( @{$List_a}, 'postfix_or_term' );
  0         0  
549 0         0 push( @{$List_a}, 'block' );
  0         0  
550 0         0 push( @{$List_a}, do {
  0         0  
551 0         0 (my $List_a = bless [], 'ARRAY');
552 0         0 (my $List_v = bless [], 'ARRAY');
553 0         0 push( @{$List_a}, Val::Buf->new(('buf' => ${$MATCH->{'Perlito6::Grammar.ident'}})) );
  0         0  
  0         0  
554 0         0 $List_a
555             } );
556 0         0 $List_a
557             }))
558             }) || 1))))
559             })) || (do {
560 5734         4870 (($MATCH)->{to} = $pos1);
561             ((((((('->' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))) && (do {
562 3         7 ((my $last_pos) = $MATCH->to());
563 3 50       3 if (!((do {
564 3         8 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
565 3 50       6 if ($m2) {
566 3         6 (($MATCH)->{to} = $m2->to());
567 3         9 1
568             }
569             else {
570 0         0 0
571             }
572             }))) {
573 0         0 (($MATCH)->{to} = $last_pos)
574             };
575 3         7 1
576             })) && (do {
577 3         8 ((my $m2) = $grammar->list_parse($str, $MATCH->to()));
578 3 50       7 if ($m2) {
579 3         7 (($MATCH)->{to} = $m2->to());
580 3         5 ($MATCH->{'list_parse'} = $m2);
581 3         9 1
582             }
583             else {
584 0         0 0
585             }
586 5734 50 50     8176 })) && (((do {
      66        
      66        
      33        
587 3         3 ((my $block) = (${$MATCH->{'list_parse'}})->{'end_block'});
  3         6  
588 3 50       7 if ($block->sig()) {
589 0         0 die(('Signature error in block'))
590             };
591 3         3 ($MATCH->{capture} = (do {
592 3         6 (my $List_a = bless [], 'ARRAY');
593 3         4 (my $List_v = bless [], 'ARRAY');
594 3         6 push( @{$List_a}, 'postfix_or_term' );
  3         3  
595 3         4 push( @{$List_a}, 'block' );
  3         4  
596 3         1 push( @{$List_a}, $block->stmts() );
  3         8  
597 3         3 push( @{$List_a}, (${$MATCH->{'list_parse'}})->{'exp'} );
  3         2  
  3         6  
598 3         8 $List_a
599             }))
600             }) || 1))))
601             })) || (do {
602 5731         4808 (($MATCH)->{to} = $pos1);
603             (((((((((chr(123) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
604 176         588 ((my $last_pos) = $MATCH->to());
605 176 100       176 if (!((do {
606 176         366 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
607 176 100       300 if ($m2) {
608 146         300 (($MATCH)->{to} = $m2->to());
609 146         384 1
610             }
611             else {
612 30         72 0
613             }
614             }))) {
615 30         43 (($MATCH)->{to} = $last_pos)
616             };
617 176         504 1
618             })) && (do {
619 176         360 ((my $m2) = Perlito6::Grammar->exp_stmts($str, $MATCH->to()));
620 176 50       279 if ($m2) {
621 176         360 (($MATCH)->{to} = $m2->to());
622 176         257 ($MATCH->{'Perlito6::Grammar.exp_stmts'} = $m2);
623 176         471 1
624             }
625             else {
626 0         0 0
627             }
628             })) && (do {
629 176         338 ((my $last_pos) = $MATCH->to());
630 176 50       175 if (!((do {
631 176         318 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
632 176 50       274 if ($m2) {
633 0         0 (($MATCH)->{to} = $m2->to());
634 0         0 1
635             }
636             else {
637 176         441 0
638             }
639             }))) {
640 176         252 (($MATCH)->{to} = $last_pos)
641             };
642 176         669 1
643 5731 50 50     8092 })) && (((chr(125) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
      66        
      66        
      33        
      33        
      33        
      33        
644 176         152 ($MATCH->{capture} = (do {
645 176         304 (my $List_a = bless [], 'ARRAY');
646 176         229 (my $List_v = bless [], 'ARRAY');
647 176         161 push( @{$List_a}, 'postfix_or_term' );
  176         293  
648 176         167 push( @{$List_a}, 'block' );
  176         567  
649 176         169 push( @{$List_a}, ${$MATCH->{'Perlito6::Grammar.exp_stmts'}} );
  176         177  
  176         322  
650 176         528 $List_a
651             }))
652             }) || 1))))
653             })) || (do {
654 5555         4824 (($MATCH)->{to} = $pos1);
655             ((((((('method' eq substr($str, $MATCH->to(), 6)) && ((($MATCH)->{to} = (6 + $MATCH->to()))))) && (do {
656 8         18 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
657 8 50       16 if ($m2) {
658 8         18 (($MATCH)->{to} = $m2->to());
659 8         34 1
660             }
661             else {
662 0         0 0
663             }
664             })) && (do {
665 8         21 ((my $m2) = Perlito6::Grammar->method_def($str, $MATCH->to()));
666 8 50       33 if ($m2) {
667 8         21 (($MATCH)->{to} = $m2->to());
668 8         14 ($MATCH->{'Perlito6::Grammar.method_def'} = $m2);
669 8         19 1
670             }
671             else {
672 0         0 0
673             }
674 5555 50 50     7754 })) && (((do {
      66        
      66        
      33        
675 8         20 ($MATCH->{capture} = (do {
676 8         13 (my $List_a = bless [], 'ARRAY');
677 8         12 (my $List_v = bless [], 'ARRAY');
678 8         10 push( @{$List_a}, 'term' );
  8         10  
679 8         11 push( @{$List_a}, ${$MATCH->{'Perlito6::Grammar.method_def'}} );
  8         8  
  8         17  
680 8         23 $List_a
681             }))
682             }) || 1))))
683             })) || (do {
684 5547         4645 (($MATCH)->{to} = $pos1);
685             ((((((('sub' eq substr($str, $MATCH->to(), 3)) && ((($MATCH)->{to} = (3 + $MATCH->to()))))) && (do {
686 29         76 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
687 29 100       56 if ($m2) {
688 12         29 (($MATCH)->{to} = $m2->to());
689 12         41 1
690             }
691             else {
692 17         82 0
693             }
694             })) && (do {
695 12         32 ((my $m2) = Perlito6::Grammar->sub_def($str, $MATCH->to()));
696 12 50       24 if ($m2) {
697 12         30 (($MATCH)->{to} = $m2->to());
698 12         21 ($MATCH->{'Perlito6::Grammar.sub_def'} = $m2);
699 12         32 1
700             }
701             else {
702 0         0 0
703             }
704 5547 50 50     7729 })) && (((do {
      66        
      66        
      66        
705 12         15 ($MATCH->{capture} = (do {
706 12         26 (my $List_a = bless [], 'ARRAY');
707 12         15 (my $List_v = bless [], 'ARRAY');
708 12         14 push( @{$List_a}, 'term' );
  12         21  
709 12         13 push( @{$List_a}, ${$MATCH->{'Perlito6::Grammar.sub_def'}} );
  12         12  
  12         21  
710 12         33 $List_a
711             }))
712             }) || 1))))
713             })) || (do {
714 5535         4642 (($MATCH)->{to} = $pos1);
715             ((((((('token' eq substr($str, $MATCH->to(), 5)) && ((($MATCH)->{to} = (5 + $MATCH->to()))))) && (do {
716 4         11 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
717 4 50       9 if ($m2) {
718 4         14 (($MATCH)->{to} = $m2->to());
719 4         19 1
720             }
721             else {
722 0         0 0
723             }
724             })) && (do {
725 4         16 ((my $m2) = Perlito6::Grammar->token($str, $MATCH->to()));
726 4 50       10 if ($m2) {
727 4         11 (($MATCH)->{to} = $m2->to());
728 4         9 ($MATCH->{'Perlito6::Grammar.token'} = $m2);
729 4         13 1
730             }
731             else {
732 0         0 0
733             }
734 5535 50 50     7576 })) && (((do {
      66        
      66        
      33        
735 4         3 ($MATCH->{capture} = (do {
736 4         6 (my $List_a = bless [], 'ARRAY');
737 4         8 (my $List_v = bless [], 'ARRAY');
738 4         2 push( @{$List_a}, 'term' );
  4         7  
739 4         4 push( @{$List_a}, ${$MATCH->{'Perlito6::Grammar.token'}} );
  4         5  
  4         9  
740 4         11 $List_a
741             }))
742             }) || 1))))
743             })) || (do {
744 5531         4588 (($MATCH)->{to} = $pos1);
745             ((((((('do' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))) && (do {
746 37         71 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
747 37 50       62 if ($m2) {
748 37         79 (($MATCH)->{to} = $m2->to());
749 37         113 1
750             }
751             else {
752 0         0 0
753             }
754             })) && (do {
755 37         73 ((my $m2) = $grammar->statement_parse($str, $MATCH->to()));
756 37 50       72 if ($m2) {
757 37         74 (($MATCH)->{to} = $m2->to());
758 37         62 ($MATCH->{'statement_parse'} = $m2);
759 37         106 1
760             }
761             else {
762 0         0 0
763             }
764 5531 50 50     7898 })) && (((do {
      66        
      66        
      33        
765 37         30 ($MATCH->{capture} = (do {
766 37         63 (my $List_a = bless [], 'ARRAY');
767 37         44 (my $List_v = bless [], 'ARRAY');
768 37         34 push( @{$List_a}, 'term' );
  37         48  
769 37         33 push( @{$List_a}, Do->new(('block' => ${$MATCH->{'statement_parse'}})) );
  37         57  
  37         79  
770 37         392 $List_a
771             }))
772             }) || 1))))
773             })) || (do {
774 5494         4448 (($MATCH)->{to} = $pos1);
775             (((((((chr(63) . chr(63) eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))) && (do {
776 37         70 ((my $m2) = $grammar->ternary_parse($str, $MATCH->to()));
777 37 50       101 if ($m2) {
778 37         73 (($MATCH)->{to} = $m2->to());
779 37         78 ($MATCH->{'ternary_parse'} = $m2);
780 37         136 1
781             }
782             else {
783 0         0 0
784             }
785 5494 50 50     7571 })) && (((chr(33) . chr(33) eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to())))))) && (((do {
      66        
      66        
      33        
      33        
786 37         32 ($MATCH->{capture} = (do {
787 37         62 (my $List_a = bless [], 'ARRAY');
788 37         52 (my $List_v = bless [], 'ARRAY');
789 37         32 push( @{$List_a}, 'op' );
  37         62  
790 37         27 push( @{$List_a}, chr(63) . chr(63) . ' ' . chr(33) . chr(33) );
  37         49  
791 37         25 push( @{$List_a}, ${$MATCH->{'ternary_parse'}} );
  37         38  
  37         69  
792 37         96 $List_a
793             }))
794             }) || 1))))
795             })) || (do {
796 5457         4509 (($MATCH)->{to} = $pos1);
797             (((do {
798 5457         7895 ((my $m2) = Perlito6::Grammar->var_ident($str, $MATCH->to()));
799 5457 100       7418 if ($m2) {
800 443         840 (($MATCH)->{to} = $m2->to());
801 443         588 ($MATCH->{'Perlito6::Grammar.var_ident'} = $m2);
802 443         939 1
803             }
804             else {
805 5014         13747 0
806             }
807 5457 100 50     3474 }) && (((do {
808 443         359 ($MATCH->{capture} = (do {
809 443         621 (my $List_a = bless [], 'ARRAY');
810 443         999 (my $List_v = bless [], 'ARRAY');
811 443         372 push( @{$List_a}, 'term' );
  443         653  
812 443         358 push( @{$List_a}, ${$MATCH->{'Perlito6::Grammar.var_ident'}} );
  443         400  
  443         789  
813 443         1211 $List_a
814             }))
815             }) || 1))))
816             })) || (do {
817 5014         4648 (($MATCH)->{to} = $pos1);
818             (((((((chr(36) . '<' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))) && (do {
819 0         0 ((my $m2) = $grammar->capture_name($str, $MATCH->to()));
820 0 0       0 if ($m2) {
821 0         0 (($MATCH)->{to} = $m2->to());
822 0         0 ($MATCH->{'capture_name'} = $m2);
823 0         0 1
824             }
825             else {
826 0         0 0
827             }
828 5014 0 0     7921 })) && ((('>' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
      33        
      33        
      0        
      0        
829 0         0 ($MATCH->{capture} = (do {
830 0         0 (my $List_a = bless [], 'ARRAY');
831 0         0 (my $List_v = bless [], 'ARRAY');
832 0         0 push( @{$List_a}, 'term' );
  0         0  
833 0         0 push( @{$List_a}, Lookup->new(('obj' => Var->new(('sigil' => chr(36)), ('twigil' => ''), ('name' => chr(47)))), ('index_exp' => Val::Buf->new(('buf' => "".($MATCH->{'capture_name'}))))) );
  0         0  
834 0         0 $List_a
835             }))
836             }) || 1))))
837             })) || (do {
838 5014         4303 (($MATCH)->{to} = $pos1);
839             (((do {
840 5014         7311 ((my $m2) = Perlito6::Precedence->op_parse($str, $MATCH->to()));
841 5014 100       8474 if ($m2) {
842 2078         3259 (($MATCH)->{to} = $m2->to());
843 2078         2187 ($MATCH->{'Perlito6::Precedence.op_parse'} = $m2);
844 2078         3868 1
845             }
846             else {
847 2936         8220 0
848             }
849 5014 100 50     3275 }) && (((do {
850 2078         1362 ($MATCH->{capture} = (${$MATCH->{'Perlito6::Precedence.op_parse'}}))
  2078         3483  
851             }) || 1))))
852             })) || (do {
853 2936         2721 (($MATCH)->{to} = $pos1);
854             ((((do {
855 2936         4604 ((my $m2) = Perlito6::Grammar->ident($str, $MATCH->to()));
856 2936 100       3916 if ($m2) {
857 491         821 (($MATCH)->{to} = $m2->to());
858 491         677 ($MATCH->{'Perlito6::Grammar.ident'} = $m2);
859 491         1042 1
860             }
861             else {
862 2445         7354 0
863             }
864             }) && (do {
865 491         523 ((my $tmp) = $MATCH);
866 491         872 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
867 491         471 (($MATCH)->{bool} = (do {
868 491         796 ((my $pos1) = $MATCH->to());
869 491         404 (do {
870             ((do {
871 491         774 ((my $last_pos) = $MATCH->to());
872 491 100       405 if (!((do {
873 491         847 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
874 491 100       751 if ($m2) {
875 446         776 (($MATCH)->{to} = $m2->to());
876 446         1043 1
877             }
878             else {
879 45         119 0
880             }
881             }))) {
882 45         70 (($MATCH)->{to} = $last_pos)
883             };
884 491         1587 1
885 491 50 66     368 }) && (((chr(61) . '>' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))))
886             })
887             }));
888 491         819 (($tmp)->{bool} = !!($MATCH));
889 491         526 ($MATCH = $tmp);
890 491         797 !!($MATCH)
891 2936 100 50     1980 })) && (((do {
      66        
892 29         24 ($MATCH->{capture} = (do {
893 29         52 (my $List_a = bless [], 'ARRAY');
894 29         38 (my $List_v = bless [], 'ARRAY');
895 29         27 push( @{$List_a}, 'term' );
  29         45  
896 29         29 push( @{$List_a}, Val::Buf->new(('buf' => "".($MATCH->{'Perlito6::Grammar.ident'}))) );
  29         69  
897 29         102 $List_a
898             }))
899             }) || 1))))
900             })) || (do {
901 2907         2764 (($MATCH)->{to} = $pos1);
902             (((((('True' eq substr($str, $MATCH->to(), 4)) && ((($MATCH)->{to} = (4 + $MATCH->to()))))) && (do {
903 1         1 ((my $tmp) = $MATCH);
904 1         3 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
905 1         2 (($MATCH)->{bool} = (do {
906 1         2 ((my $pos1) = $MATCH->to());
907 1         2 (do {
908 1         2 ((my $pos1) = $MATCH->to());
909             ((do {
910 1         4 ((my $m2) = Perlito6::Grammar->word($str, $MATCH->to()));
911 1 50       2 if ($m2) {
912 0         0 (($MATCH)->{to} = $m2->to());
913 0         0 1
914             }
915             else {
916 1         4 0
917             }
918 1 50       1 }) || (do {
919 1         1 (($MATCH)->{to} = $pos1);
920 1 50       3 (((('(' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
921             }))
922             })
923             }));
924 1         2 (($tmp)->{bool} = !($MATCH));
925 1         3 ($MATCH = $tmp);
926 1         3 !!($MATCH)
927 2907 50 50     4535 })) && (((do {
      66        
      66        
928 1         2 ($MATCH->{capture} = (do {
929 1         1 (my $List_a = bless [], 'ARRAY');
930 1         2 (my $List_v = bless [], 'ARRAY');
931 1         2 push( @{$List_a}, 'term' );
  1         2  
932 1         4 push( @{$List_a}, Val::Bit->new(('bit' => 1)) );
  1         4  
933 1         4 $List_a
934             }))
935             }) || 1))))
936             })) || (do {
937 2906         2538 (($MATCH)->{to} = $pos1);
938             (((((('False' eq substr($str, $MATCH->to(), 5)) && ((($MATCH)->{to} = (5 + $MATCH->to()))))) && (do {
939 3         3 ((my $tmp) = $MATCH);
940 3         10 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
941 3         5 (($MATCH)->{bool} = (do {
942 3         6 ((my $pos1) = $MATCH->to());
943 3         3 (do {
944 3         7 ((my $pos1) = $MATCH->to());
945             ((do {
946 3         6 ((my $m2) = Perlito6::Grammar->word($str, $MATCH->to()));
947 3 50       6 if ($m2) {
948 0         0 (($MATCH)->{to} = $m2->to());
949 0         0 1
950             }
951             else {
952 3         11 0
953             }
954 3 50       3 }) || (do {
955 3         4 (($MATCH)->{to} = $pos1);
956 3 50       7 (((('(' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
957             }))
958             })
959             }));
960 3         5 (($tmp)->{bool} = !($MATCH));
961 3         3 ($MATCH = $tmp);
962 3         5 !!($MATCH)
963 2906 50 50     4170 })) && (((do {
      66        
      66        
964 3         2 ($MATCH->{capture} = (do {
965 3         7 (my $List_a = bless [], 'ARRAY');
966 3         2 (my $List_v = bless [], 'ARRAY');
967 3         5 push( @{$List_a}, 'term' );
  3         11  
968 3         3 push( @{$List_a}, Val::Bit->new(('bit' => 0)) );
  3         22  
969 3         11 $List_a
970             }))
971             }) || 1))))
972             })) || (do {
973 2903         2468 (($MATCH)->{to} = $pos1);
974             (((((('and' eq substr($str, $MATCH->to(), 3)) && ((($MATCH)->{to} = (3 + $MATCH->to()))))) && (do {
975 0         0 ((my $tmp) = $MATCH);
976 0         0 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
977 0         0 (($MATCH)->{bool} = (do {
978 0         0 ((my $pos1) = $MATCH->to());
979 0         0 (do {
980 0         0 ((my $pos1) = $MATCH->to());
981             ((do {
982 0         0 ((my $m2) = Perlito6::Grammar->word($str, $MATCH->to()));
983 0 0       0 if ($m2) {
984 0         0 (($MATCH)->{to} = $m2->to());
985 0         0 1
986             }
987             else {
988 0         0 0
989             }
990 0 0       0 }) || (do {
991 0         0 (($MATCH)->{to} = $pos1);
992 0 0       0 (((('(' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
993             }))
994             })
995             }));
996 0         0 (($tmp)->{bool} = !($MATCH));
997 0         0 ($MATCH = $tmp);
998 0         0 !!($MATCH)
999 2903 0 0     4426 })) && (((do {
      33        
      33        
1000 0         0 ($MATCH->{capture} = (do {
1001 0         0 (my $List_a = bless [], 'ARRAY');
1002 0         0 (my $List_v = bless [], 'ARRAY');
1003 0         0 push( @{$List_a}, 'op' );
  0         0  
1004 0         0 push( @{$List_a}, 'and' );
  0         0  
1005 0         0 $List_a
1006             }))
1007             }) || 1))))
1008             })) || (do {
1009 2903         2422 (($MATCH)->{to} = $pos1);
1010             (((((('not' eq substr($str, $MATCH->to(), 3)) && ((($MATCH)->{to} = (3 + $MATCH->to()))))) && (do {
1011 0         0 ((my $tmp) = $MATCH);
1012 0         0 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
1013 0         0 (($MATCH)->{bool} = (do {
1014 0         0 ((my $pos1) = $MATCH->to());
1015 0         0 (do {
1016 0         0 ((my $pos1) = $MATCH->to());
1017             ((do {
1018 0         0 ((my $m2) = Perlito6::Grammar->word($str, $MATCH->to()));
1019 0 0       0 if ($m2) {
1020 0         0 (($MATCH)->{to} = $m2->to());
1021 0         0 1
1022             }
1023             else {
1024 0         0 0
1025             }
1026 0 0       0 }) || (do {
1027 0         0 (($MATCH)->{to} = $pos1);
1028 0 0       0 (((('(' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
1029             }))
1030             })
1031             }));
1032 0         0 (($tmp)->{bool} = !($MATCH));
1033 0         0 ($MATCH = $tmp);
1034 0         0 !!($MATCH)
1035 2903 0 0     4238 })) && (((do {
      33        
      33        
1036 0         0 ($MATCH->{capture} = (do {
1037 0         0 (my $List_a = bless [], 'ARRAY');
1038 0         0 (my $List_v = bless [], 'ARRAY');
1039 0         0 push( @{$List_a}, 'op' );
  0         0  
1040 0         0 push( @{$List_a}, 'not' );
  0         0  
1041 0         0 $List_a
1042             }))
1043             }) || 1))))
1044             })) || (do {
1045 2903         2449 (($MATCH)->{to} = $pos1);
1046             ((((((((('use' eq substr($str, $MATCH->to(), 3)) && ((($MATCH)->{to} = (3 + $MATCH->to()))))) && (do {
1047 1         4 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
1048 1 50       3 if ($m2) {
1049 1         2 (($MATCH)->{to} = $m2->to());
1050 1         4 1
1051             }
1052             else {
1053 0         0 0
1054             }
1055             })) && (do {
1056 1         3 ((my $m2) = Perlito6::Grammar->full_ident($str, $MATCH->to()));
1057 1 50       2 if ($m2) {
1058 1         7 (($MATCH)->{to} = $m2->to());
1059 1         2 ($MATCH->{'Perlito6::Grammar.full_ident'} = $m2);
1060 1         3 1
1061             }
1062             else {
1063 0         0 0
1064             }
1065             })) && (do {
1066 1         3 ((my $last_pos) = $MATCH->to());
1067 1 50       2 if (!((do {
1068 1         2 ((my $pos1) = $MATCH->to());
1069 1         2 (do {
1070 1 50 33     2 (((('-' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
1071 0         0 ((my $m2) = Perlito6::Grammar->ident($str, $MATCH->to()));
1072 0 0       0 if ($m2) {
1073 0         0 (($MATCH)->{to} = $m2->to());
1074 0 0       0 if (exists($MATCH->{'Perlito6::Grammar.ident'})) {
1075 0         0 push( @{($MATCH->{'Perlito6::Grammar.ident'})}, $m2 )
  0         0  
1076             }
1077             else {
1078 0         0 ($MATCH->{'Perlito6::Grammar.ident'} = do {
1079 0         0 (my $List_a = bless [], 'ARRAY');
1080 0         0 (my $List_v = bless [], 'ARRAY');
1081 0         0 push( @{$List_a}, $m2 );
  0         0  
1082 0         0 $List_a
1083             })
1084             };
1085 0         0 1
1086             }
1087             else {
1088 0         0 0
1089             }
1090             }))
1091             })
1092             }))) {
1093 1         3 (($MATCH)->{to} = $last_pos)
1094             };
1095 1         4 1
1096             })) && (do {
1097 1         3 ((my $m2) = $grammar->list_parse($str, $MATCH->to()));
1098 1 50       3 if ($m2) {
1099 1         2 (($MATCH)->{to} = $m2->to());
1100 1         1 ($MATCH->{'list_parse'} = $m2);
1101 1         4 1
1102             }
1103             else {
1104 0         0 0
1105             }
1106 2903 50 50     4234 })) && (((do {
      66        
      66        
      33        
      33        
      33        
1107 1         1 ($MATCH->{capture} = (do {
1108 1         2 (my $List_a = bless [], 'ARRAY');
1109 1         1 (my $List_v = bless [], 'ARRAY');
1110 1         1 push( @{$List_a}, 'term' );
  1         2  
1111 1         1 push( @{$List_a}, Use->new(('mod' => ${$MATCH->{'Perlito6::Grammar.full_ident'}})) );
  1         2  
  1         3  
1112 1         4 $List_a
1113             }))
1114             }) || 1))))
1115             })) || (do {
1116 2902         2474 (($MATCH)->{to} = $pos1);
1117             (((((do {
1118 2902         4193 ((my $pos1) = $MATCH->to());
1119             ((((do {
1120 2902 50       3913 (('package' eq substr($str, $MATCH->to(), 7)) && ((($MATCH)->{to} = (7 + $MATCH->to()))))
1121             }) || (do {
1122 2902         2657 (($MATCH)->{to} = $pos1);
1123 2902 100       4366 (((('class' eq substr($str, $MATCH->to(), 5)) && ((($MATCH)->{to} = (5 + $MATCH->to()))))))
1124             })) || (do {
1125 2866         2525 (($MATCH)->{to} = $pos1);
1126 2866 50       4020 (((('grammar' eq substr($str, $MATCH->to(), 7)) && ((($MATCH)->{to} = (7 + $MATCH->to()))))))
1127 2902 50 33     2188 })) || (do {
      66        
1128 2866         2419 (($MATCH)->{to} = $pos1);
1129 2866 50       4052 (((('role' eq substr($str, $MATCH->to(), 4)) && ((($MATCH)->{to} = (4 + $MATCH->to()))))))
1130             }))
1131             }) && (do {
1132 36         101 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
1133 36 50       66 if ($m2) {
1134 36         92 (($MATCH)->{to} = $m2->to());
1135 36         146 1
1136             }
1137             else {
1138 0         0 0
1139             }
1140             })) && (do {
1141 36         94 ((my $m2) = Perlito6::Grammar->grammar($str, $MATCH->to()));
1142 36 50       98 if ($m2) {
1143 36         127 (($MATCH)->{to} = $m2->to());
1144 36         70 ($MATCH->{'Perlito6::Grammar.grammar'} = $m2);
1145 36         134 1
1146             }
1147             else {
1148 0         0 0
1149             }
1150 2902 50 50     2095 })) && (((do {
      66        
      33        
1151 36         43 ($MATCH->{capture} = (do {
1152 36         91 (my $List_a = bless [], 'ARRAY');
1153 36         61 (my $List_v = bless [], 'ARRAY');
1154 36         55 push( @{$List_a}, 'term' );
  36         75  
1155 36         50 push( @{$List_a}, ${$MATCH->{'Perlito6::Grammar.grammar'}} );
  36         56  
  36         92  
1156 36         122 $List_a
1157             }))
1158             }) || 1))))
1159             })) || (do {
1160 2866         2473 (($MATCH)->{to} = $pos1);
1161             (((((((do {
1162 2866         4272 ((my $m2) = Perlito6::Grammar->declarator($str, $MATCH->to()));
1163 2866 100       4426 if ($m2) {
1164 83         187 (($MATCH)->{to} = $m2->to());
1165 83         124 ($MATCH->{'Perlito6::Grammar.declarator'} = $m2);
1166 83         232 1
1167             }
1168             else {
1169 2783         8477 0
1170             }
1171             }) && (do {
1172 83         188 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
1173 83 50       144 if ($m2) {
1174 83         190 (($MATCH)->{to} = $m2->to());
1175 83         270 1
1176             }
1177             else {
1178 0         0 0
1179             }
1180             })) && (do {
1181 83         180 ((my $m2) = Perlito6::Grammar->opt_type($str, $MATCH->to()));
1182 83 50       136 if ($m2) {
1183 83         163 (($MATCH)->{to} = $m2->to());
1184 83         147 ($MATCH->{'Perlito6::Grammar.opt_type'} = $m2);
1185 83         274 1
1186             }
1187             else {
1188 0         0 0
1189             }
1190             })) && (do {
1191 83         201 ((my $m2) = Perlito6::Grammar->opt_ws($str, $MATCH->to()));
1192 83 50       135 if ($m2) {
1193 83         177 (($MATCH)->{to} = $m2->to());
1194 83         258 1
1195             }
1196             else {
1197 0         0 0
1198             }
1199             })) && (do {
1200 83         189 ((my $m2) = Perlito6::Grammar->var_ident($str, $MATCH->to()));
1201 83 50       151 if ($m2) {
1202 83         173 (($MATCH)->{to} = $m2->to());
1203 83         168 ($MATCH->{'Perlito6::Grammar.var_ident'} = $m2);
1204 83         230 1
1205             }
1206             else {
1207 0         0 0
1208             }
1209 2866 50 50     1955 })) && (((do {
      66        
      33        
      33        
      33        
1210 83         80 ($MATCH->{capture} = (do {
1211 83         143 (my $List_a = bless [], 'ARRAY');
1212 83         113 (my $List_v = bless [], 'ARRAY');
1213 83         78 push( @{$List_a}, 'term' );
  83         138  
1214 83         70 push( @{$List_a}, Decl->new(('decl' => ${$MATCH->{'Perlito6::Grammar.declarator'}}), ('type' => ${$MATCH->{'Perlito6::Grammar.opt_type'}}), ('var' => ${$MATCH->{'Perlito6::Grammar.var_ident'}})) );
  83         106  
  83         172  
  83         165  
  83         155  
1215 83         298 $List_a
1216             }))
1217             }) || 1))))
1218             })) || (do {
1219 2783         2581 (($MATCH)->{to} = $pos1);
1220             (((((do {
1221 2783         4189 ((my $m2) = $grammar->hyper_op($str, $MATCH->to()));
1222 2783 50       3971 if ($m2) {
1223 2783         4020 (($MATCH)->{to} = $m2->to());
1224 2783         3279 ($MATCH->{'hyper_op'} = $m2);
1225 2783         7496 1
1226             }
1227             else {
1228 0         0 0
1229             }
1230             }) && ((('.' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (do {
1231 108         215 ((my $m2) = Perlito6::Grammar->ident($str, $MATCH->to()));
1232 108 50       168 if ($m2) {
1233 108         203 (($MATCH)->{to} = $m2->to());
1234 108         136 ($MATCH->{'Perlito6::Grammar.ident'} = $m2);
1235 108         247 1
1236             }
1237             else {
1238 0         0 0
1239             }
1240 2783 50 66     1849 })) && (do {
      33        
      66        
1241 108         184 ((my $pos1) = $MATCH->to());
1242             (((do {
1243             ((((((':' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
1244 0         0 ((my $last_pos) = $MATCH->to());
1245 0 0       0 if (!((do {
1246 0         0 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
1247 0 0       0 if ($m2) {
1248 0         0 (($MATCH)->{to} = $m2->to());
1249 0         0 1
1250             }
1251             else {
1252 0         0 0
1253             }
1254             }))) {
1255 0         0 (($MATCH)->{to} = $last_pos)
1256             };
1257 0         0 1
1258             })) && (do {
1259 0         0 ((my $m2) = $grammar->list_parse($str, $MATCH->to()));
1260 0 0       0 if ($m2) {
1261 0         0 (($MATCH)->{to} = $m2->to());
1262 0         0 ($MATCH->{'list_parse'} = $m2);
1263 0         0 1
1264             }
1265             else {
1266 0         0 0
1267             }
1268 108 0 0     171 })) && (((do {
      33        
      33        
      0        
1269 0         0 ($MATCH->{capture} = (do {
1270 0         0 (my $List_a = bless [], 'ARRAY');
1271 0         0 (my $List_v = bless [], 'ARRAY');
1272 0         0 push( @{$List_a}, 'postfix_or_term' );
  0         0  
1273 0         0 push( @{$List_a}, 'methcall' );
  0         0  
1274 0         0 push( @{$List_a}, "".($MATCH->{'Perlito6::Grammar.ident'}) );
  0         0  
1275 0         0 push( @{$List_a}, ${$MATCH->{'list_parse'}} );
  0         0  
  0         0  
1276 0         0 push( @{$List_a}, ${$MATCH->{'hyper_op'}} );
  0         0  
  0         0  
1277 0         0 $List_a
1278             }))
1279             }) || 1)))
1280             }) || (do {
1281 108         117 (($MATCH)->{to} = $pos1);
1282             ((((((('(' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
1283 31         336 ((my $m2) = $grammar->paren_parse($str, $MATCH->to()));
1284 31 50       77 if ($m2) {
1285 31         70 (($MATCH)->{to} = $m2->to());
1286 31         52 ($MATCH->{'paren_parse'} = $m2);
1287 31         133 1
1288             }
1289             else {
1290 0         0 0
1291             }
1292 108 50 50     190 })) && (((')' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to())))))) && (((do {
      66        
      66        
      33        
      33        
1293 31         29 ($MATCH->{capture} = (do {
1294 31         56 (my $List_a = bless [], 'ARRAY');
1295 31         40 (my $List_v = bless [], 'ARRAY');
1296 31         37 push( @{$List_a}, 'postfix_or_term' );
  31         47  
1297 31         36 push( @{$List_a}, 'methcall' );
  31         44  
1298 31         29 push( @{$List_a}, "".($MATCH->{'Perlito6::Grammar.ident'}) );
  31         80  
1299 31         47 push( @{$List_a}, do {
  31         43  
1300 31         57 (my $Hash_a = bless {}, 'HASH');
1301 31         60 ($Hash_a->{'end_block'} = undef());
1302 31         30 ($Hash_a->{'exp'} = ${$MATCH->{'paren_parse'}});
  31         66  
1303 31         45 ($Hash_a->{'terminated'} = 0);
1304 31         45 $Hash_a
1305             } );
1306 31         33 push( @{$List_a}, ${$MATCH->{'hyper_op'}} );
  31         54  
  31         61  
1307 31         109 $List_a
1308             }))
1309             }) || 1))))
1310 108 100 33     99 })) || (do {
1311 77         101 (($MATCH)->{to} = $pos1);
1312 77 50       59 ((((do {
1313 77         60 ($MATCH->{capture} = (do {
1314 77         126 (my $List_a = bless [], 'ARRAY');
1315 77         97 (my $List_v = bless [], 'ARRAY');
1316 77         61 push( @{$List_a}, 'postfix_or_term' );
  77         129  
1317 77         54 push( @{$List_a}, 'methcall_no_params' );
  77         82  
1318 77         69 push( @{$List_a}, "".($MATCH->{'Perlito6::Grammar.ident'}) );
  77         185  
1319 77         85 push( @{$List_a}, ${$MATCH->{'hyper_op'}} );
  77         79  
  77         145  
1320 77         230 $List_a
1321             }))
1322             }) || 1)))
1323             }))
1324             })))
1325             })) || (do {
1326 2675         2399 (($MATCH)->{to} = $pos1);
1327             ((((do {
1328 2675         4182 ((my $m2) = Perlito6::Grammar->optional_namespace_before_ident($str, $MATCH->to()));
1329 2675 50       3670 if ($m2) {
1330 2675         4120 (($MATCH)->{to} = $m2->to());
1331 2675         2910 ($MATCH->{'Perlito6::Grammar.optional_namespace_before_ident'} = $m2);
1332 2675         4858 1
1333             }
1334             else {
1335 0         0 0
1336             }
1337             }) && (do {
1338 2675         4023 ((my $m2) = Perlito6::Grammar->ident($str, $MATCH->to()));
1339 2675 100       3620 if ($m2) {
1340 338         611 (($MATCH)->{to} = $m2->to());
1341 338         392 ($MATCH->{'Perlito6::Grammar.ident'} = $m2);
1342 338         937 1
1343             }
1344             else {
1345 2337         7135 0
1346             }
1347 2675 100 33     1732 })) && (do {
1348 338         594 ((my $pos1) = $MATCH->to());
1349             (((do {
1350             (((do {
1351 338         628 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
1352 338 100       528 if ($m2) {
1353 294         561 (($MATCH)->{to} = $m2->to());
1354 294         814 1
1355             }
1356             else {
1357 44         203 0
1358             }
1359             }) && (do {
1360 294         548 ((my $m2) = $grammar->list_parse($str, $MATCH->to()));
1361 294 50       647 if ($m2) {
1362 294         602 (($MATCH)->{to} = $m2->to());
1363 294         686 ($MATCH->{'list_parse'} = $m2);
1364 294         830 1
1365             }
1366             else {
1367 0         0 0
1368             }
1369 338 50 50     280 })) && (((do {
      66        
1370 294         260 ($MATCH->{capture} = (do {
1371 294         448 (my $List_a = bless [], 'ARRAY');
1372 294         342 (my $List_v = bless [], 'ARRAY');
1373 294         259 push( @{$List_a}, 'postfix_or_term' );
  294         412  
1374 294         234 push( @{$List_a}, 'funcall' );
  294         318  
1375 294         255 push( @{$List_a}, "".($MATCH->{'Perlito6::Grammar.optional_namespace_before_ident'}) );
  294         762  
1376 294         297 push( @{$List_a}, "".($MATCH->{'Perlito6::Grammar.ident'}) );
  294         640  
1377 294         347 push( @{$List_a}, ${$MATCH->{'list_parse'}} );
  294         345  
  294         583  
1378 294         773 $List_a
1379             }))
1380             }) || 1)))
1381             }) || (do {
1382 44         807 (($MATCH)->{to} = $pos1);
1383             (((do {
1384 44         65 ((my $tmp) = $MATCH);
1385 44         1588 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
1386 44         51 (($MATCH)->{bool} = (do {
1387 44         100 ((my $pos1) = $MATCH->to());
1388 44         41 (do {
1389 44 100       795 (('.' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
1390             })
1391             }));
1392 44         974 (($tmp)->{bool} = !!($MATCH));
1393 44         53 ($MATCH = $tmp);
1394 44         81 !!($MATCH)
1395 44 100 50     53 }) && (((do {
1396 20         63 ((my $namespace) = "".($MATCH->{'Perlito6::Grammar.optional_namespace_before_ident'}));
1397 20         44 ((my $name) = "".($MATCH->{'Perlito6::Grammar.ident'}));
1398 20 100       55 if ($namespace) {
1399 8         19 ($name = ($namespace . '::' . $name))
1400             };
1401 20         22 ($MATCH->{capture} = (do {
1402 20         38 (my $List_a = bless [], 'ARRAY');
1403 20         31 (my $List_v = bless [], 'ARRAY');
1404 20         25 push( @{$List_a}, 'term' );
  20         33  
1405 20         24 push( @{$List_a}, Proto->new(('name' => $name)) );
  20         113  
1406 20         84 $List_a
1407             }))
1408             }) || 1))))
1409 338 100 66     326 })) || (do {
1410 24         39 (($MATCH)->{to} = $pos1);
1411 24 50       27 ((((do {
1412 24         20 ($MATCH->{capture} = (do {
1413 24         49 (my $List_a = bless [], 'ARRAY');
1414 24         36 (my $List_v = bless [], 'ARRAY');
1415 24         26 push( @{$List_a}, 'postfix_or_term' );
  24         43  
1416 24         22 push( @{$List_a}, 'funcall_no_params' );
  24         25  
1417 24         22 push( @{$List_a}, "".($MATCH->{'Perlito6::Grammar.optional_namespace_before_ident'}) );
  24         63  
1418 24         30 push( @{$List_a}, "".($MATCH->{'Perlito6::Grammar.ident'}) );
  24         55  
1419 24         99 $List_a
1420             }))
1421             }) || 1)))
1422             }))
1423             })))
1424             })) || (do {
1425 2337         2230 (($MATCH)->{to} = $pos1);
1426             (((do {
1427 2337         3904 ((my $m2) = Perlito6::Grammar->val_num($str, $MATCH->to()));
1428 2337 100       3114 if ($m2) {
1429 9         28 (($MATCH)->{to} = $m2->to());
1430 9         13 ($MATCH->{'Perlito6::Grammar.val_num'} = $m2);
1431 9         18 1
1432             }
1433             else {
1434 2328         6899 0
1435             }
1436 2337 100 50     1585 }) && (((do {
1437 9         6 ($MATCH->{capture} = (do {
1438 9         14 (my $List_a = bless [], 'ARRAY');
1439 9         11 (my $List_v = bless [], 'ARRAY');
1440 9         8 push( @{$List_a}, 'term' );
  9         16  
1441 9         7 push( @{$List_a}, ${$MATCH->{'Perlito6::Grammar.val_num'}} );
  9         10  
  9         17  
1442 9         31 $List_a
1443             }))
1444             }) || 1))))
1445             })) || (do {
1446 2328         2185 (($MATCH)->{to} = $pos1);
1447             (((do {
1448 2328         3719 ((my $m2) = Perlito6::Grammar->val_int($str, $MATCH->to()));
1449 2328 100       3101 if ($m2) {
1450 318         560 (($MATCH)->{to} = $m2->to());
1451 318         407 ($MATCH->{'Perlito6::Grammar.val_int'} = $m2);
1452 318         703 1
1453             }
1454             else {
1455 2010         5772 0
1456             }
1457 2328 100 50     1579 }) && (((do {
1458 318         241 ($MATCH->{capture} = (do {
1459 318         478 (my $List_a = bless [], 'ARRAY');
1460 318         410 (my $List_v = bless [], 'ARRAY');
1461 318         296 push( @{$List_a}, 'term' );
  318         452  
1462 318         285 push( @{$List_a}, ${$MATCH->{'Perlito6::Grammar.val_int'}} );
  318         307  
  318         616  
1463 318         1139 $List_a
1464             }))
1465             }) || 1))))
1466             })) || (do {
1467 2010         1838 (($MATCH)->{to} = $pos1);
1468             (((do {
1469 2010         3237 ((my $m2) = Perlito6::Grammar->val_buf($str, $MATCH->to()));
1470 2010 100       2827 if ($m2) {
1471 434         815 (($MATCH)->{to} = $m2->to());
1472 434         539 ($MATCH->{'Perlito6::Grammar.val_buf'} = $m2);
1473 434         952 1
1474             }
1475             else {
1476 1576         4623 0
1477             }
1478 2010 100 50     1342 }) && (((do {
1479 434         342 ($MATCH->{capture} = (do {
1480 434         612 (my $List_a = bless [], 'ARRAY');
1481 434         490 (my $List_v = bless [], 'ARRAY');
1482 434         375 push( @{$List_a}, 'term' );
  434         617  
1483 434         355 push( @{$List_a}, ${$MATCH->{'Perlito6::Grammar.val_buf'}} );
  434         392  
  434         770  
1484 434         1558 $List_a
1485             }))
1486             }) || 1))))
1487 5966 100 66     4238 })) || (do {
      33        
      33        
      66        
      66        
      33        
      66        
      66        
      66        
      66        
      66        
      66        
      66        
      66        
      33        
      66        
      66        
      66        
      66        
      33        
      33        
      66        
      66        
      66        
      66        
      66        
      66        
      66        
1488 1576         1522 (($MATCH)->{to} = $pos1);
1489             (((do {
1490 1576         2491 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
1491 1576 100       2288 if ($m2) {
1492 1545         2376 (($MATCH)->{to} = $m2->to());
1493 1545         3497 1
1494             }
1495             else {
1496 31         102 0
1497             }
1498 1576 100 50     1096 }) && (((do {
1499 1545         1079 ($MATCH->{capture} = (do {
1500 1545         2033 (my $List_a = bless [], 'ARRAY');
1501 1545         1433 (my $List_v = bless [], 'ARRAY');
1502 1545         1140 push( @{$List_a}, 'space' );
  1545         2102  
1503 1545         1158 push( @{$List_a}, ' ' );
  1545         1358  
1504 1545         3727 $List_a
1505             }))
1506             }) || 1))))
1507             }))
1508             })));
1509 5966         20936 $MATCH
1510             };
1511             sub has_newline_after {
1512 256     256 0 490 my $grammar = $_[0];
1513 256         246 my $str = $_[1];
1514 256         244 my $pos = $_[2];
1515 256         227 (my $MATCH);
1516 256         610 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
1517 256         252 (($MATCH)->{bool} = ((do {
1518 256         465 ((my $pos1) = $MATCH->to());
1519             (((do {
1520 256 50       449 ((chr(35) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
1521             }) || (do {
1522 256         298 (($MATCH)->{to} = $pos1);
1523 256         210 ((do {
1524 256         505 ((my $m2) = Perlito6::Grammar->is_newline($str, $MATCH->to()));
1525 256 100       454 if ($m2) {
1526 115         266 (($MATCH)->{to} = $m2->to());
1527 115         359 1
1528             }
1529             else {
1530 141         408 0
1531             }
1532             }))
1533 256 100 33     238 })) || (do {
1534 141         157 (($MATCH)->{to} = $pos1);
1535             (((do {
1536 141         923 ((my $m2) = Perlito6::Grammar->space($str, $MATCH->to()));
1537 141 100       229 if ($m2) {
1538 22         46 (($MATCH)->{to} = $m2->to());
1539 22         76 1
1540             }
1541             else {
1542 119         348 0
1543             }
1544 141 100       127 }) && (do {
1545 22         50 ((my $m2) = $grammar->has_newline_after($str, $MATCH->to()));
1546 22 50       42 if ($m2) {
1547 0         0 (($MATCH)->{to} = $m2->to());
1548 0         0 1
1549             }
1550             else {
1551 22         36 0
1552             }
1553             })))
1554             }))
1555             })));
1556 256         530 $MATCH
1557             };
1558             sub has_no_comma_or_colon_after {
1559 0     0 0 0 my $grammar = $_[0];
1560 0         0 my $str = $_[1];
1561 0         0 my $pos = $_[2];
1562 0         0 (my $MATCH);
1563 0         0 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
1564 0         0 (($MATCH)->{bool} = ((do {
1565 0         0 ((my $pos1) = $MATCH->to());
1566 0         0 (do {
1567             (((do {
1568 0         0 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
1569 0 0       0 if ($m2) {
1570 0         0 (($MATCH)->{to} = $m2->to());
1571 0         0 1
1572             }
1573             else {
1574 0         0 0
1575             }
1576             }) && (do {
1577 0         0 ((my $tmp) = $MATCH);
1578 0         0 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $tmp->to()), ('to' => $tmp->to()), ('bool' => 1)));
1579 0         0 (($MATCH)->{bool} = (do {
1580 0         0 ((my $pos1) = $MATCH->to());
1581 0         0 (do {
1582 0         0 ((my $pos1) = $MATCH->to());
1583             ((do {
1584 0 0       0 ((',' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
1585 0 0       0 }) || (do {
1586 0         0 (($MATCH)->{to} = $pos1);
1587 0 0       0 ((((':' eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
1588             }))
1589             })
1590             }));
1591 0         0 (($tmp)->{bool} = !($MATCH));
1592 0         0 ($MATCH = $tmp);
1593 0         0 !!($MATCH)
1594 0 0 0     0 })) && ((('' ne substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))))
      0        
1595             })
1596             })));
1597 0         0 $MATCH
1598             };
1599             sub list_parse {
1600 322     322 0 363 my $self = $_[0];
1601 322         289 my $str = $_[1];
1602 322         299 my $pos = $_[2];
1603 322         268 (my $expr);
1604 322         320 ((my $last_pos) = $pos);
1605 322         269 ((my $is_first_token) = 1);
1606 322         283 ((my $lexer_stack) = do {
1607 322         470 (my $List_a = bless [], 'ARRAY');
1608 322         442 (my $List_v = bless [], 'ARRAY');
1609 322         464 $List_a
1610             });
1611 322         449 ((my $terminated) = 0);
1612 322         284 ((my $last_token_was_space) = 1);
1613             ((my $get_token) = sub {
1614 1125     1125   846 (my $v);
1615 1125 50       811 if (scalar( @{$lexer_stack} )) {
  1125         1596  
1616 0         0 ($v = pop( @{$lexer_stack} ));
  0         0  
1617 0 0 0     0 if ((($is_first_token && (($v->[0] eq 'op'))) && !((Perlito6::Precedence::is_fixity_type('prefix', $v->[1]))))) {
      0        
1618 0         0 ($v->[0] = 'end')
1619             }
1620             }
1621             else {
1622 1125         4221 ((my $m) = $self->operator($str, $last_pos));
1623 1125 50       1573 if (!($m)) {
1624 0         0 return scalar (do {
1625 0         0 (my $List_a = bless [], 'ARRAY');
1626 0         0 (my $List_v = bless [], 'ARRAY');
1627 0         0 push( @{$List_a}, 'end' );
  0         0  
1628 0         0 push( @{$List_a}, '*end*' );
  0         0  
1629 0         0 $List_a
1630             })
1631             };
1632 1125         1004 ($v = ${$m});
  1125         1486  
1633 1125 100 100     2940 if ((($is_first_token && (($v->[0] eq 'op'))) && !((Perlito6::Precedence::is_fixity_type('prefix', $v->[1]))))) {
      66        
1634 1         1 ($v->[0] = 'end')
1635             };
1636 1125 100       2274 if (($v->[0] ne 'end')) {
1637 806         1280 ($last_pos = $m->to())
1638             }
1639             };
1640 1125 100 100     2528 if (((((($v->[0]) eq 'postfix_or_term')) && ((($v->[1]) eq 'block'))) && $last_token_was_space)) {
      100        
1641 3 50       8 if ($self->has_newline_after($str, $last_pos)) {
1642 3         4 ($terminated = 1);
1643 3         3 push( @{$lexer_stack}, do {
  3         3  
1644 3         4 (my $List_a = bless [], 'ARRAY');
1645 3         3 (my $List_v = bless [], 'ARRAY');
1646 3         1 push( @{$List_a}, 'end' );
  3         4  
1647 3         2 push( @{$List_a}, '*end*' );
  3         3  
1648 3         5 $List_a
1649             } )
1650             }
1651             else {
1652 0 0       0 if ($self->has_no_comma_or_colon_after($str, $last_pos)) {
1653 0         0 ($terminated = 1);
1654 0         0 push( @{$lexer_stack}, do {
  0         0  
1655 0         0 (my $List_a = bless [], 'ARRAY');
1656 0         0 (my $List_v = bless [], 'ARRAY');
1657 0         0 push( @{$List_a}, 'end' );
  0         0  
1658 0         0 push( @{$List_a}, '*end*' );
  0         0  
1659 0         0 $List_a
1660             } )
1661             }
1662             }
1663             };
1664 1125         1154 ($last_token_was_space = (($v->[0] eq 'space')));
1665 1125         939 ($is_first_token = 0);
1666 1125         1765 return scalar ($v)
1667 322         1880 });
1668 322         480 ((my $prec) = Perlito6::Precedence->new(('get_token' => $get_token), ('reduce' => $reduce_to_ast), ('end_token' => do {
1669 322         487 (my $List_a = bless [], 'ARRAY');
1670 322         395 (my $List_v = bless [], 'ARRAY');
1671 322         302 push( @{$List_a}, 'and' );
  322         483  
1672 322         257 push( @{$List_a}, 'or' );
  322         357  
1673 322         257 push( @{$List_a}, chr(33) . chr(33) );
  322         404  
1674 322         286 push( @{$List_a}, ']' );
  322         340  
1675 322         263 push( @{$List_a}, ')' );
  322         394  
1676 322         256 push( @{$List_a}, chr(125) );
  322         431  
1677 322         268 push( @{$List_a}, chr(59) );
  322         398  
1678 322         259 push( @{$List_a}, 'if' );
  322         342  
1679 322         241 push( @{$List_a}, 'else' );
  322         403  
1680 322         240 push( @{$List_a}, 'elsif' );
  322         335  
1681 322         275 push( @{$List_a}, 'unless' );
  322         416  
1682 322         282 push( @{$List_a}, 'when' );
  322         401  
1683 322         262 push( @{$List_a}, 'for' );
  322         391  
1684 322         264 push( @{$List_a}, 'while' );
  322         343  
1685 322         250 push( @{$List_a}, 'loop' );
  322         310  
1686 322         854 $List_a
1687             })));
1688 322         1158 ((my $res) = $prec->precedence_parse());
1689 322 100       284 if ((scalar( @{$res} ) == 0)) {
  322         620  
1690 11         22 return scalar (Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $last_pos), ('bool' => 1), ('capture' => do {
1691 11         21 (my $Hash_a = bless {}, 'HASH');
1692 11         23 ($Hash_a->{'exp'} = '*undef*');
1693 11         16 ($Hash_a->{'end_block'} = undef());
1694 11         18 ($Hash_a->{'terminated'} = undef());
1695 11         29 $Hash_a
1696             })))
1697             };
1698 311         282 (my $block);
1699 311 100       247 if ((scalar( @{$res} ) > 1)) {
  311         559  
1700 3         2 ($block = pop( @{$res} ));
  3         7  
1701 3         17 ($block = Lit::Block->new(('stmts' => $block->[2]), ('sig' => $block->[3])))
1702             };
1703 311         556 ((my $result) = pop_term($res));
1704 311 50       302 if ((scalar( @{$res} ) > 0)) {
  311         630  
1705 0         0 ($block = pop( @{$res} ));
  0         0  
1706 0         0 ($block = Lit::Block->new(('stmts' => $block->[2]), ('sig' => $block->[3])))
1707             };
1708 311         508 return scalar (Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $last_pos), ('bool' => 1), ('capture' => do {
1709 311         514 (my $Hash_a = bless {}, 'HASH');
1710 311         573 ($Hash_a->{'exp'} = $result);
1711 311         394 ($Hash_a->{'end_block'} = $block);
1712 311         399 ($Hash_a->{'terminated'} = $terminated);
1713 311         765 $Hash_a
1714             })))
1715             };
1716             sub circumfix_parse {
1717 300     300 0 287 my $self = $_[0];
1718 300         261 my $str = $_[1];
1719 300         250 my $pos = $_[2];
1720 300         234 my $delimiter = $_[3];
1721 300         237 (my $expr);
1722 300         263 ((my $last_pos) = $pos);
1723             ((my $get_token) = sub {
1724 1673     1081   3719 ((my $m) = $self->operator($str, $last_pos));
1725 1673 50       2345 if (!($m)) {
1726 0         0 die(('Expected closing delimiter: '), (($delimiter)), ' near ', $last_pos)
1727             };
1728 1673         1435 ((my $v) = ${$m});
  1673         2211  
1729 1673 100       2953 if (($v->[0] ne 'end')) {
1730 1373         2078 ($last_pos = $m->to())
1731             };
1732 1673         4845 return scalar ($v)
1733 300         1105 });
1734 300         781 ((my $prec) = Perlito6::Precedence->new(('get_token' => $get_token), ('reduce' => $reduce_to_ast), ('end_token' => $delimiter)));
1735 300         834 ((my $res) = $prec->precedence_parse());
1736 300         498 ($res = pop_term($res));
1737 300 100       650 if (!((defined($res)))) {
1738 20         28 ($res = '*undef*')
1739             };
1740 300         839 return scalar (Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $last_pos), ('bool' => 1), ('capture' => $res)))
1741             };
1742             sub ternary_parse {
1743 37     37 0 45 my $self = $_[0];
1744 37         33 my $str = $_[1];
1745 37         49 my $pos = $_[2];
1746 37         38 return scalar ($self->circumfix_parse($str, $pos, do {
1747 37         60 (my $List_a = bless [], 'ARRAY');
1748 37         48 (my $List_v = bless [], 'ARRAY');
1749 37         32 push( @{$List_a}, chr(33) . chr(33) );
  37         62  
1750 37         72 $List_a
1751             }))
1752             };
1753             sub curly_parse {
1754 0     0 0 0 my $self = $_[0];
1755 0         0 my $str = $_[1];
1756 0         0 my $pos = $_[2];
1757 0         0 return scalar ($self->circumfix_parse($str, $pos, do {
1758 0         0 (my $List_a = bless [], 'ARRAY');
1759 0         0 (my $List_v = bless [], 'ARRAY');
1760 0         0 push( @{$List_a}, chr(125) );
  0         0  
1761 0         0 $List_a
1762             }))
1763             };
1764             sub square_parse {
1765 49     49 0 71 my $self = $_[0];
1766 49         56 my $str = $_[1];
1767 49         52 my $pos = $_[2];
1768 49         53 return scalar ($self->circumfix_parse($str, $pos, do {
1769 49         92 (my $List_a = bless [], 'ARRAY');
1770 49         66 (my $List_v = bless [], 'ARRAY');
1771 49         59 push( @{$List_a}, ']' );
  49         78  
1772 49         155 $List_a
1773             }))
1774             };
1775             sub paren_parse {
1776 214     214 0 228 my $self = $_[0];
1777 214         193 my $str = $_[1];
1778 214         192 my $pos = $_[2];
1779 214         184 return scalar ($self->circumfix_parse($str, $pos, do {
1780 214         437 (my $List_a = bless [], 'ARRAY');
1781 214         258 (my $List_v = bless [], 'ARRAY');
1782 214         180 push( @{$List_a}, ')' );
  214         292  
1783 214         536 $List_a
1784             }))
1785             };
1786             sub exp_parse {
1787 1045     1045 0 986 my $self = $_[0];
1788 1045         842 my $str = $_[1];
1789 1045         785 my $pos = $_[2];
1790 1045         724 (my $expr);
1791 1045         936 ((my $last_pos) = $pos);
1792 1045         758 ((my $lexer_stack) = do {
1793 1045         1302 (my $List_a = bless [], 'ARRAY');
1794 1045         1153 (my $List_v = bless [], 'ARRAY');
1795 1045         4301 $List_a
1796             });
1797 1045         964 ((my $terminated) = 0);
1798             ((my $get_token) = sub {
1799 3223     2256   2199 (my $v);
1800 3223 100       2116 if (scalar( @{$lexer_stack} )) {
  3223         4365  
1801 57         55 ($v = pop( @{$lexer_stack} ))
  57         70  
1802             }
1803             else {
1804 3166         8058 ((my $m) = $self->operator($str, $last_pos));
1805 3166 100       4453 if (!($m)) {
1806 31         40 return scalar (do {
1807 31         903 (my $List_a = bless [], 'ARRAY');
1808 31         42 (my $List_v = bless [], 'ARRAY');
1809 31         36 push( @{$List_a}, 'end' );
  31         55  
1810 31         35 push( @{$List_a}, '*end*' );
  31         41  
1811 31         123 $List_a
1812             })
1813             };
1814 3135         2740 ($v = ${$m});
  3135         4071  
1815 3135 100       6462 if (($v->[0] ne 'end')) {
1816 2268         3404 ($last_pos = $m->to())
1817             }
1818             };
1819 3192 100 100     23497 if (((((((((($v->[0]) eq 'postfix_or_term')) && ((($v->[1]) eq 'block')))) || ((((($v->[0]) eq 'term')) && (Main::isa(($v->[1]), 'Sub'))))) || ((((($v->[0]) eq 'term')) && (Main::isa(($v->[1]), 'Method'))))) || ((((($v->[0]) eq 'term')) && (Main::isa(($v->[1]), 'Do'))))) || ((((($v->[0]) eq 'term')) && (Main::isa(($v->[1]), 'CompUnit')))))) {
      100        
      66        
      100        
      66        
      100        
      66        
      100        
      66        
1820 231 100       590 if ($self->has_newline_after($str, $last_pos)) {
1821 112         121 ($terminated = 1);
1822 112         92 push( @{$lexer_stack}, do {
  112         125  
1823 112         160 (my $List_a = bless [], 'ARRAY');
1824 112         125 (my $List_v = bless [], 'ARRAY');
1825 112         105 push( @{$List_a}, 'end' );
  112         151  
1826 112         98 push( @{$List_a}, '*end*' );
  112         117  
1827 112         148 $List_a
1828             } )
1829             }
1830             };
1831 3192         5494 return scalar ($v)
1832 1045         4708 });
1833 1045         1232 ((my $prec) = Perlito6::Precedence->new(('get_token' => $get_token), ('reduce' => $reduce_to_ast), ('end_token' => do {
1834 1045         1106 (my $List_a = bless [], 'ARRAY');
1835 1045         1322 (my $List_v = bless [], 'ARRAY');
1836 1045         782 push( @{$List_a}, ']' );
  1045         1461  
1837 1045         753 push( @{$List_a}, ')' );
  1045         987  
1838 1045         781 push( @{$List_a}, chr(125) );
  1045         1055  
1839 1045         818 push( @{$List_a}, chr(59) );
  1045         1058  
1840 1045         729 push( @{$List_a}, 'if' );
  1045         1067  
1841 1045         675 push( @{$List_a}, 'else' );
  1045         1068  
1842 1045         736 push( @{$List_a}, 'elsif' );
  1045         1014  
1843 1045         730 push( @{$List_a}, 'unless' );
  1045         956  
1844 1045         781 push( @{$List_a}, 'when' );
  1045         1072  
1845 1045         749 push( @{$List_a}, 'for' );
  1045         941  
1846 1045         712 push( @{$List_a}, 'while' );
  1045         1040  
1847 1045         697 push( @{$List_a}, 'loop' );
  1045         919  
1848 1045         2700 $List_a
1849             })));
1850 1045         2702 ((my $res) = $prec->precedence_parse());
1851 1045 100       861 if ((scalar( @{$res} ) == 0)) {
  1045         1928  
1852 270         609 return scalar (Perlito6::Match->new(('bool' => 0)))
1853             };
1854 775         644 (my $block);
1855 775 100       580 if ((scalar( @{$res} ) > 1)) {
  775         1267  
1856 90         90 ($block = pop( @{$res} ));
  90         111  
1857 90         542 ($block = Lit::Block->new(('stmts' => $block->[2]), ('sig' => $block->[3])))
1858             };
1859 775         1199 ((my $result) = pop_term($res));
1860 775 50       703 if ((scalar( @{$res} ) > 0)) {
  775         1416  
1861 0         0 ($block = pop( @{$res} ));
  0         0  
1862 0 0       0 if (!((Main::isa($block, 'Lit::Block')))) {
1863 0         0 ($block = Lit::Block->new(('stmts' => $block->[2]), ('sig' => $block->[3])))
1864             }
1865             };
1866 775         961 return scalar (Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $last_pos), ('bool' => 1), ('capture' => do {
1867 775         1013 (my $Hash_a = bless {}, 'HASH');
1868 775         1159 ($Hash_a->{'exp'} = $result);
1869 775         850 ($Hash_a->{'end_block'} = $block);
1870 775         836 ($Hash_a->{'terminated'} = $terminated);
1871 775         1789 $Hash_a
1872             })))
1873             };
1874             sub exp_stmt {
1875 1012     1012 0 861 my $grammar = $_[0];
1876 1012         785 my $str = $_[1];
1877 1012         739 my $pos = $_[2];
1878 1012         691 (my $MATCH);
1879 1012         2006 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
1880 1012         828 (($MATCH)->{bool} = ((do {
1881 1012         1553 ((my $pos1) = $MATCH->to());
1882             ((((((do {
1883             ((do {
1884 1012         1556 ((my $m2) = Perlito6::Grammar->if($str, $MATCH->to()));
1885 1012 100       1534 if ($m2) {
1886 77         177 (($MATCH)->{to} = $m2->to());
1887 77         124 ($MATCH->{'Perlito6::Grammar.if'} = $m2);
1888 77         192 1
1889             }
1890             else {
1891 935         3196 0
1892             }
1893 1012 100 50     703 }) && (((do {
1894 77         66 ($MATCH->{capture} = (${$MATCH->{'Perlito6::Grammar.if'}}))
  77         143  
1895             }) || 1)))
1896             }) || (do {
1897 935         928 (($MATCH)->{to} = $pos1);
1898             (((do {
1899 935         1563 ((my $m2) = Perlito6::Grammar->unless($str, $MATCH->to()));
1900 935 100       1337 if ($m2) {
1901 2         5 (($MATCH)->{to} = $m2->to());
1902 2         3 ($MATCH->{'Perlito6::Grammar.unless'} = $m2);
1903 2         4 1
1904             }
1905             else {
1906 933         3091 0
1907             }
1908 935 100 50     690 }) && (((do {
1909 2         2 ($MATCH->{capture} = (${$MATCH->{'Perlito6::Grammar.unless'}}))
  2         3  
1910             }) || 1))))
1911             })) || (do {
1912 933         964 (($MATCH)->{to} = $pos1);
1913             (((do {
1914 933         1603 ((my $m2) = Perlito6::Grammar->when($str, $MATCH->to()));
1915 933 50       1344 if ($m2) {
1916 0         0 (($MATCH)->{to} = $m2->to());
1917 0         0 ($MATCH->{'Perlito6::Grammar.when'} = $m2);
1918 0         0 1
1919             }
1920             else {
1921 933         3020 0
1922             }
1923 933 50 0     668 }) && (((do {
1924 0         0 ($MATCH->{capture} = (${$MATCH->{'Perlito6::Grammar.when'}}))
  0         0  
1925             }) || 1))))
1926             })) || (do {
1927 933         985 (($MATCH)->{to} = $pos1);
1928             (((do {
1929 933         1526 ((my $m2) = Perlito6::Grammar->for($str, $MATCH->to()));
1930 933 100       1329 if ($m2) {
1931 4         9 (($MATCH)->{to} = $m2->to());
1932 4         7 ($MATCH->{'Perlito6::Grammar.for'} = $m2);
1933 4         8 1
1934             }
1935             else {
1936 929         2850 0
1937             }
1938 933 100 50     707 }) && (((do {
1939 4         4 ($MATCH->{capture} = (${$MATCH->{'Perlito6::Grammar.for'}}))
  4         8  
1940             }) || 1))))
1941             })) || (do {
1942 929         1162 (($MATCH)->{to} = $pos1);
1943             (((do {
1944 929         1579 ((my $m2) = Perlito6::Grammar->while($str, $MATCH->to()));
1945 929 100       1342 if ($m2) {
1946 6         17 (($MATCH)->{to} = $m2->to());
1947 6         10 ($MATCH->{'Perlito6::Grammar.while'} = $m2);
1948 6         18 1
1949             }
1950             else {
1951 923         2931 0
1952             }
1953 929 100 50     701 }) && (((do {
1954 6         8 ($MATCH->{capture} = (${$MATCH->{'Perlito6::Grammar.while'}}))
  6         12  
1955             }) || 1))))
1956 1012 100 66     803 })) || (do {
      66        
      33        
      66        
1957 923         902 (($MATCH)->{to} = $pos1);
1958             (((do {
1959 923         1514 ((my $m2) = Perlito6::Grammar->loop($str, $MATCH->to()));
1960 923 50       1318 if ($m2) {
1961 0         0 (($MATCH)->{to} = $m2->to());
1962 0         0 ($MATCH->{'Perlito6::Grammar.loop'} = $m2);
1963 0         0 1
1964             }
1965             else {
1966 923         2257 0
1967             }
1968 923 50 0     681 }) && (((do {
1969 0         0 ($MATCH->{capture} = (${$MATCH->{'Perlito6::Grammar.loop'}}))
  0         0  
1970             }) || 1))))
1971             }))
1972             })));
1973 1012         1915 $MATCH
1974             };
1975             sub statement_modifier {
1976 604     604 0 602 my $grammar = $_[0];
1977 604         531 my $str = $_[1];
1978 604         517 my $pos = $_[2];
1979 604         441 (my $MATCH);
1980 604         1216 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
1981 604         553 (($MATCH)->{bool} = ((do {
1982 604         1017 ((my $pos1) = $MATCH->to());
1983             ((((((do {
1984 604 100       964 (('if' eq substr($str, $MATCH->to(), 2)) && ((($MATCH)->{to} = (2 + $MATCH->to()))))
1985             }) || (do {
1986 590         660 (($MATCH)->{to} = $pos1);
1987 590 100       972 (((('unless' eq substr($str, $MATCH->to(), 6)) && ((($MATCH)->{to} = (6 + $MATCH->to()))))))
1988             })) || (do {
1989 588         617 (($MATCH)->{to} = $pos1);
1990 588 50       992 (((('when' eq substr($str, $MATCH->to(), 4)) && ((($MATCH)->{to} = (4 + $MATCH->to()))))))
1991             })) || (do {
1992 588         590 (($MATCH)->{to} = $pos1);
1993 588 100       947 (((('for' eq substr($str, $MATCH->to(), 3)) && ((($MATCH)->{to} = (3 + $MATCH->to()))))))
1994             })) || (do {
1995 587         576 (($MATCH)->{to} = $pos1);
1996 587 100       970 (((('while' eq substr($str, $MATCH->to(), 5)) && ((($MATCH)->{to} = (5 + $MATCH->to()))))))
1997 604 100 66     488 })) || (do {
      66        
      33        
      66        
1998 586         554 (($MATCH)->{to} = $pos1);
1999 586 50       971 (((('loop' eq substr($str, $MATCH->to(), 4)) && ((($MATCH)->{to} = (4 + $MATCH->to()))))))
2000             }))
2001             })));
2002 604         1052 $MATCH
2003             };
2004             sub delimited_statement {
2005 975     975 0 910 my $grammar = $_[0];
2006 975         824 my $str = $_[1];
2007 975         795 my $pos = $_[2];
2008 975         713 (my $MATCH);
2009 975         1914 ($MATCH = Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $pos), ('bool' => 1)));
2010 975         836 (($MATCH)->{bool} = ((do {
2011 975         1541 ((my $pos1) = $MATCH->to());
2012 975         772 (do {
2013             ((do {
2014 975         1509 ((my $last_pos) = $MATCH->to());
2015 975 100       766 if (!((do {
2016 975         1544 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
2017 975 100       1338 if ($m2) {
2018 31         100 (($MATCH)->{to} = $m2->to());
2019 31         158 1
2020             }
2021             else {
2022 944         2030 0
2023             }
2024             }))) {
2025 944         1030 (($MATCH)->{to} = $last_pos)
2026             };
2027 975         2053 1
2028 975 50       713 }) && (do {
2029 975         1643 ((my $pos1) = $MATCH->to());
2030             ((do {
2031 975 50 33     1467 ((((chr(59) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))) && (do {
2032 0         0 ((my $last_pos) = $MATCH->to());
2033 0 0       0 if (!((do {
2034 0         0 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
2035 0 0       0 if ($m2) {
2036 0         0 (($MATCH)->{to} = $m2->to());
2037 0         0 1
2038             }
2039             else {
2040 0         0 0
2041             }
2042             }))) {
2043 0         0 (($MATCH)->{to} = $last_pos)
2044             };
2045 0         0 1
2046             }))
2047 975 50       736 }) || (do {
2048 975         940 (($MATCH)->{to} = $pos1);
2049             (((((do {
2050 975         1545 ((my $m2) = $grammar->statement_parse($str, $MATCH->to()));
2051 975 100       1635 if ($m2) {
2052 705         1217 (($MATCH)->{to} = $m2->to());
2053 705         946 ($MATCH->{'statement_parse'} = $m2);
2054 705         1565 1
2055             }
2056             else {
2057 270         702 0
2058             }
2059             }) && (do {
2060 705         1140 ((my $last_pos) = $MATCH->to());
2061 705 100       587 if (!((do {
2062 705 100       1104 ((chr(59) eq substr($str, $MATCH->to(), 1)) && ((($MATCH)->{to} = (1 + $MATCH->to()))))
2063             }))) {
2064 254         323 (($MATCH)->{to} = $last_pos)
2065             };
2066 705         1567 1
2067             })) && (do {
2068 705         1121 ((my $last_pos) = $MATCH->to());
2069 705 100       567 if (!((do {
2070 705         1717 ((my $m2) = Perlito6::Grammar->ws($str, $MATCH->to()));
2071 705 100       1032 if ($m2) {
2072 552         995 (($MATCH)->{to} = $m2->to());
2073 552         1234 1
2074             }
2075             else {
2076 153         381 0
2077             }
2078             }))) {
2079 153         210 (($MATCH)->{to} = $last_pos)
2080             };
2081 705         1510 1
2082 975 50 50     678 })) && (((do {
      66        
      33        
2083 705         497 ($MATCH->{capture} = (${$MATCH->{'statement_parse'}}))
  705         1280  
2084             }) || 1))))
2085             }))
2086             }))
2087             })
2088             })));
2089 975         2212 $MATCH
2090             };
2091             sub statement_parse {
2092 1012     1012 0 956 my $self = $_[0];
2093 1012         812 my $str = $_[1];
2094 1012         778 my $pos = $_[2];
2095 1012         730 (my $expr);
2096 1012         864 ((my $last_pos) = $pos);
2097 1012         769 ((my $lexer_stack) = do {
2098 1012         1268 (my $List_a = bless [], 'ARRAY');
2099 1012         992 (my $List_v = bless [], 'ARRAY');
2100 1012         1238 $List_a
2101             });
2102 1012         729 (my $res);
2103 1012         1935 ($res = $self->exp_stmt($str, $pos));
2104 1012 100       1433 if ($res) {
2105 89         183 return scalar ($res)
2106             };
2107 923         2059 ($res = $self->exp_parse($str, $pos));
2108 923 100       2255 if (!(($res))) {
2109 270         455 return scalar ($res)
2110             };
2111 653 100       616 if (Main::isa((${$res})->{'exp'}, 'Lit::Block')) {
  653         1026  
2112 41         49 ((${$res})->{'exp'} = Do->new(('block' => (${$res})->{'exp'})))
  41         66  
  41         73  
2113             };
2114 653 50       759 if ((${$res})->{'end_block'}) {
  653         1013  
2115 0         0 die(('Unexpected block after expression near '), $pos)
2116             };
2117 653 100       599 if ((${$res})->{'terminated'}) {
  653         904  
2118 49         58 (($res)->{capture} = (${$res})->{'exp'});
  49         86  
2119 49         113 return scalar ($res)
2120             };
2121 604         1264 ((my $modifier) = $self->statement_modifier($str, $res->to()));
2122 604 100       984 if (!(($modifier))) {
2123 586         473 (($res)->{capture} = (${$res})->{'exp'});
  586         820  
2124 586         1642 return scalar ($res)
2125             };
2126 18         45 ((my $modifier_exp) = $self->exp_parse($str, $modifier->to()));
2127 18 50       44 if (!(($modifier_exp))) {
2128 0         0 die(('Expected expression after ' . chr(39)), $modifier, (chr(39)))
2129             };
2130 18 50       23 if ((${$modifier_exp})->{'end_block'}) {
  18         28  
2131 0         0 die(('Unexpected block after expression near '), $modifier->to())
2132             };
2133 18         38 ($modifier = "".($modifier));
2134 18 100       55 if (($modifier eq 'if')) {
2135 14         23 return scalar (Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $modifier_exp->to()), ('bool' => 1), ('capture' => If->new(('cond' => (${$modifier_exp})->{'exp'}), ('body' => Lit::Block->new(('stmts' => do {
2136 14         22 (my $List_a = bless [], 'ARRAY');
2137 14         18 (my $List_v = bless [], 'ARRAY');
2138 14         17 push( @{$List_a}, (${$res})->{'exp'} );
  14         15  
  14         23  
2139 14         61 $List_a
2140 14         39 }))), ('otherwise' => Lit::Block->new(('stmts' => do {
2141 14         20 (my $List_a = bless [], 'ARRAY');
2142 14         21 (my $List_v = bless [], 'ARRAY');
2143 14         31 $List_a
2144             })))))))
2145             };
2146 4 100       12 if (($modifier eq 'unless')) {
2147 2         3 return scalar (Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $modifier_exp->to()), ('bool' => 1), ('capture' => If->new(('cond' => (${$modifier_exp})->{'exp'}), ('body' => Lit::Block->new(('stmts' => do {
2148 2         4 (my $List_a = bless [], 'ARRAY');
2149 2         3 (my $List_v = bless [], 'ARRAY');
2150 2         5 $List_a
2151 2         5 }))), ('otherwise' => Lit::Block->new(('stmts' => do {
2152 2         3 (my $List_a = bless [], 'ARRAY');
2153 2         3 (my $List_v = bless [], 'ARRAY');
2154 2         2 push( @{$List_a}, (${$res})->{'exp'} );
  2         1  
  2         4  
2155 2         4 $List_a
2156             })))))))
2157             };
2158 2 100       6 if (($modifier eq 'while')) {
2159 1         3 return scalar (Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $modifier_exp->to()), ('bool' => 1), ('capture' => While->new(('cond' => (${$modifier_exp})->{'exp'}), ('body' => Lit::Block->new(('stmts' => do {
  1         1  
2160 1         2 (my $List_a = bless [], 'ARRAY');
2161 1         2 (my $List_v = bless [], 'ARRAY');
2162 1         2 push( @{$List_a}, (${$res})->{'exp'} );
  1         2  
  1         2  
2163 1         6 $List_a
2164             })))))))
2165             };
2166 1 50       3 if (($modifier eq 'for')) {
2167 1         3 return scalar (Perlito6::Match->new(('str' => $str), ('from' => $pos), ('to' => $modifier_exp->to()), ('bool' => 1), ('capture' => For->new(('cond' => (${$modifier_exp})->{'exp'}), ('body' => Lit::Block->new(('stmts' => do {
  1         2  
2168 1         2 (my $List_a = bless [], 'ARRAY');
2169 1         2 (my $List_v = bless [], 'ARRAY');
2170 1         1 push( @{$List_a}, (${$res})->{'exp'} );
  1         2  
  1         2  
2171 1         6 $List_a
2172             })))))))
2173             };
2174 0           die(('Unexpected statement modifier ' . chr(39) . $modifier . chr(39)))
2175             }
2176             }
2177              
2178              
2179             }
2180              
2181             1;