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