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 CompUnit;
18        sub new { shift; bless { @_ }, "CompUnit" }
19        sub attributes { $_[0]->{attributes} };
20        sub methods { $_[0]->{methods} };
21        sub emit {
22            my $self = $_[0];
23            (chr(35) . ' class ' . $self->{name} . (chr(59) . ' ') . (chr(10)) . Main::join(([ map { $_->emit() } @{( (defined $self->{body} ? $self->{body} : ($self->{body} ||= bless([], 'ARRAY'))) )} ]), (chr(59) . ' ')) . (chr(10)))
24        }
25    }
26
27;
28    {
29    package Val::Int;
30        sub new { shift; bless { @_ }, "Val::Int" }
31        sub emit {
32            my $self = $_[0];
33            $self->{int}
34        }
35    }
36
37;
38    {
39    package Val::Bit;
40        sub new { shift; bless { @_ }, "Val::Bit" }
41        sub emit {
42            my $self = $_[0];
43            $self->{bit}
44        }
45    }
46
47;
48    {
49    package Val::Num;
50        sub new { shift; bless { @_ }, "Val::Num" }
51        sub emit {
52            my $self = $_[0];
53            $self->{num}
54        }
55    }
56
57;
58    {
59    package Val::Buf;
60        sub new { shift; bless { @_ }, "Val::Buf" }
61        sub emit {
62            my $self = $_[0];
63            (chr(39) . $self->{buf} . chr(39))
64        }
65    }
66
67;
68    {
69    package Lit::Array;
70        sub new { shift; bless { @_ }, "Lit::Array" }
71        sub emit {
72            my $self = $_[0];
73            ('[' . Main::join(([ map { $_->emit() } @{( (defined $self->{array1} ? $self->{array1} : ($self->{array1} ||= bless([], 'ARRAY'))) )} ]), ', ') . ']')
74        }
75    }
76
77;
78    {
79    package Lit::Hash;
80        sub new { shift; bless { @_ }, "Lit::Hash" }
81        sub emit {
82            my $self = $_[0];
83            ((my  $fields) = (defined $self->{hash1} ? $self->{hash1} : ($self->{hash1} ||= bless([], 'ARRAY'))));
84            ((my  $str) = '');
85            for my $field ( @{($fields)} ) {
86                ($str = ($str . ($field->[0])->emit() . ' ' . chr(61) . '> ' . ($field->[1])->emit() . ','))
87            };
88            (chr(123) . ' ' . $str . ' ' . chr(125))
89        }
90    }
91
92;
93    {
94    package Index;
95        sub new { shift; bless { @_ }, "Index" }
96        sub emit {
97            my $self = $_[0];
98            ($self->{obj}->emit() . '.[' . $self->{index_exp}->emit() . ']')
99        }
100    }
101
102;
103    {
104    package Lookup;
105        sub new { shift; bless { @_ }, "Lookup" }
106        sub emit {
107            my $self = $_[0];
108            ($self->{obj}->emit() . '.' . chr(123) . $self->{index_exp}->emit() . chr(125))
109        }
110    }
111
112;
113    {
114    package Var;
115        sub new { shift; bless { @_ }, "Var" }
116        sub emit {
117            my $self = $_[0];
118            ((my  $table) = do {
119    (my  $Hash_a = bless {}, 'HASH');
120    ($Hash_a->{chr(36)} = chr(36));
121    ($Hash_a->{chr(64)} = chr(36) . 'List_');
122    ($Hash_a->{chr(37)} = chr(36) . 'Hash_');
123    ($Hash_a->{chr(38)} = chr(36) . 'Code_');
124    $Hash_a
125});
126            ((($self->{twigil} eq '.')) ? ((chr(36) . 'self.' . chr(123) . $self->{name} . chr(125))) : (((($self->{name} eq chr(47))) ? (($table->{$self->{sigil}} . 'MATCH')) : (($table->{$self->{sigil}} . $self->{name})))))
127        }
128    }
129
130;
131    {
132    package Bind;
133        sub new { shift; bless { @_ }, "Bind" }
134        sub parameters { $_[0]->{parameters} };
135        sub arguments { $_[0]->{arguments} };
136        sub emit {
137            my $self = $_[0];
138            ($self->{parameters}->emit() . ' ' . chr(61) . ' ' . $self->{arguments}->emit())
139        }
140    }
141
142;
143    {
144    package Proto;
145        sub new { shift; bless { @_ }, "Proto" }
146        sub emit {
147            my $self = $_[0];
148            "".($self->{name})
149        }
150    }
151
152;
153    {
154    package Call;
155        sub new { shift; bless { @_ }, "Call" }
156        sub emit {
157            my $self = $_[0];
158            ((my  $invocant) = $self->{invocant}->emit());
159            if (($invocant eq 'self')) {
160                ($invocant = chr(36) . 'self')
161            };
162            if (((((((($self->{method} eq 'perl')) || (($self->{method} eq 'yaml'))) || (($self->{method} eq 'say'))) || (($self->{method} eq 'join'))) || (($self->{method} eq 'chars'))) || (($self->{method} eq 'isa')))) {
163                if (($self->{hyper})) {
164                    return scalar (('[ map ' . chr(123) . ' ' . chr(38) . 'Main::' . $self->{method} . '( ' . chr(36) . '_, ' . ', ' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ', ') . ')' . ' ' . chr(125) . ' ' . chr(64) . '( ' . $invocant . ' ) ]'))
165                }
166                else {
167                    return scalar ((chr(38) . 'Main::' . $self->{method} . '(' . $invocant . ', ' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ', ') . ')'))
168                }
169            };
170            ((my  $meth) = $self->{method});
171            if (($meth eq 'postcircumfix:<( )>')) {
172                ($meth = '')
173            };
174            ((my  $call) = ('.' . $meth . '(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ', ') . ')'));
175            if (($self->{hyper})) {
176                ('[ map ' . chr(123) . ' ' . chr(36) . '_' . $call . ' ' . chr(125) . ' ' . chr(64) . '( ' . $invocant . ' ) ]')
177            }
178            else {
179                ($invocant . $call)
180            }
181        }
182    }
183
184;
185    {
186    package Apply;
187        sub new { shift; bless { @_ }, "Apply" }
188        sub emit {
189            my $self = $_[0];
190            ((my  $code) = $self->{code});
191            if (Main::isa($code, 'Str')) {
192
193            }
194            else {
195                return scalar (('(' . $self->{code}->emit() . ').(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ', ') . ')'))
196            };
197            if (($code eq 'self')) {
198                return scalar (chr(36) . 'self')
199            };
200            if (($code eq 'say')) {
201                return scalar (('say(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ', ') . ')'))
202            };
203            if (($code eq 'print')) {
204                return scalar (('print(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ', ') . ')'))
205            };
206            if (($code eq 'array')) {
207                return scalar ((chr(64) . '(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' ') . ')'))
208            };
209            if (($code eq 'prefix:<' . chr(126) . '>')) {
210                return scalar (('(' . chr(34) . chr(34) . ' . ' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' ') . ')'))
211            };
212            if (($code eq 'prefix:<' . chr(33) . '>')) {
213                return scalar (('(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' ') . ' ' . chr(63) . chr(63) . ' 0 ' . chr(33) . chr(33) . ' 1)'))
214            };
215            if (($code eq 'prefix:<' . chr(63) . '>')) {
216                return scalar (('(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' ') . ' ' . chr(63) . chr(63) . ' 1 ' . chr(33) . chr(33) . ' 0)'))
217            };
218            if (($code eq 'prefix:<' . chr(36) . '>')) {
219                return scalar ((chr(36) . '(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' ') . ')'))
220            };
221            if (($code eq 'prefix:<' . chr(64) . '>')) {
222                return scalar ((chr(64) . '(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' ') . ')'))
223            };
224            if (($code eq 'prefix:<' . chr(37) . '>')) {
225                return scalar ((chr(37) . '(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' ') . ')'))
226            };
227            if (($code eq 'infix:<' . chr(126) . '>')) {
228                return scalar (('(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' ' . chr(126) . ' ') . ')'))
229            };
230            if (($code eq 'infix:<+>')) {
231                return scalar (('(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' + ') . ')'))
232            };
233            if (($code eq 'infix:<->')) {
234                return scalar (('(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' - ') . ')'))
235            };
236            if (($code eq 'infix:<' . chr(38) . chr(38) . '>')) {
237                return scalar (('(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' ' . chr(38) . chr(38) . ' ') . ')'))
238            };
239            if (($code eq 'infix:<' . chr(124) . chr(124) . '>')) {
240                return scalar (('(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' ' . chr(124) . chr(124) . ' ') . ')'))
241            };
242            if (($code eq 'infix:<eq>')) {
243                return scalar (('(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' eq ') . ')'))
244            };
245            if (($code eq 'infix:<ne>')) {
246                return scalar (('(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' ne ') . ')'))
247            };
248            if (($code eq 'infix:<' . chr(61) . chr(61) . '>')) {
249                return scalar (('(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' ' . chr(61) . chr(61) . ' ') . ')'))
250            };
251            if (($code eq 'infix:<' . chr(33) . chr(61) . '>')) {
252                return scalar (('(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ' ' . chr(33) . chr(61) . ' ') . ')'))
253            };
254            if (($code eq 'ternary:<' . chr(63) . chr(63) . ' ' . chr(33) . chr(33) . '>')) {
255                return scalar (('(' . ((defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY')))->[0])->emit() . ' ' . chr(63) . chr(63) . ' ' . ((defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY')))->[1])->emit() . ' ' . chr(33) . chr(33) . ' ' . ((defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY')))->[2])->emit() . ')'))
256            };
257            ('' . $self->{code} . '(' . Main::join(([ map { $_->emit() } @{( (defined $self->{arguments} ? $self->{arguments} : ($self->{arguments} ||= bless([], 'ARRAY'))) )} ]), ', ') . ')')
258        }
259    }
260
261;
262    {
263    package Return;
264        sub new { shift; bless { @_ }, "Return" }
265        sub emit {
266            my $self = $_[0];
267            return scalar (('return(' . $self->{result}->emit() . ')'))
268        }
269    }
270
271;
272    {
273    package If;
274        sub new { shift; bless { @_ }, "If" }
275        sub emit {
276            my $self = $_[0];
277            ('do ' . chr(123) . ' if (' . $self->{cond}->emit() . ') ' . chr(123) . ' ' . Main::join(([ map { $_->emit() } @{( (defined $self->{body} ? $self->{body} : ($self->{body} ||= bless([], 'ARRAY'))) )} ]), chr(59)) . ' ' . chr(125) . ' else ' . chr(123) . ' ' . Main::join(([ map { $_->emit() } @{( (defined $self->{otherwise} ? $self->{otherwise} : ($self->{otherwise} ||= bless([], 'ARRAY'))) )} ]), chr(59)) . ' ' . chr(125) . ' ' . chr(125))
278        }
279    }
280
281;
282    {
283    package For;
284        sub new { shift; bless { @_ }, "For" }
285        sub emit {
286            my $self = $_[0];
287            ((my  $cond) = $self->{cond});
288            if ((Main::isa($cond, 'Var') && ($cond->sigil() eq chr(64)))) {
289                ($cond = Apply->new(('code' => 'prefix:<' . chr(64) . '>'), ('arguments' => do {
290    (my  $List_a = bless [], 'ARRAY');
291    (my  $List_v = bless [], 'ARRAY');
292    push( @{$List_a}, $cond );
293    $List_a
294})))
295            };
296            ('do ' . chr(123) . ' for my ' . $self->{topic}->emit() . ' ( ' . $cond->emit() . ' ) ' . chr(123) . ' ' . Main::join(([ map { $_->emit() } @{( (defined $self->{body} ? $self->{body} : ($self->{body} ||= bless([], 'ARRAY'))) )} ]), chr(59)) . ' ' . chr(125) . ' ' . chr(125))
297        }
298    }
299
300;
301    {
302    package Decl;
303        sub new { shift; bless { @_ }, "Decl" }
304        sub emit {
305            my $self = $_[0];
306            return scalar (($self->{decl} . ' ' . $self->{type} . ' ' . $self->{var}->emit()))
307        }
308    }
309
310;
311    {
312    package Method;
313        sub new { shift; bless { @_ }, "Method" }
314        sub emit {
315            my $self = $_[0];
316            ((my  $sig) = $self->{sig});
317            ((my  $invocant) = $sig->invocant());
318            ((my  $pos) = $sig->positional());
319            ((my  $str) = '');
320            ((my  $pos) = $sig->positional());
321            for my $field ( @{($pos)} ) {
322                ($str = ($str . '' . $field->emit() . chr(63) . ', '))
323            };
324            ('method ' . $self->{name} . '(' . $invocant->emit() . ': ' . $str . ') ' . chr(123) . ' ' . Main::join(([ map { $_->emit() } @{( (defined $self->{block} ? $self->{block} : ($self->{block} ||= bless([], 'ARRAY'))) )} ]), chr(59) . ' ') . ' ' . chr(125))
325        }
326    }
327
328;
329    {
330    package Sub;
331        sub new { shift; bless { @_ }, "Sub" }
332        sub emit {
333            my $self = $_[0];
334            ((my  $sig) = $self->{sig});
335            ((my  $pos) = $sig->positional());
336            (my  $str);
337            ((my  $pos) = $sig->positional());
338            for my $field ( @{($pos)} ) {
339                ($str = ($str . '' . $field->emit() . chr(63) . ', '))
340            };
341            if (($self->{name} eq '')) {
342                return scalar (('(sub (' . $str . ') ' . ' ' . chr(123) . ' ' . Main::join(([ map { $_->emit() } @{( (defined $self->{block} ? $self->{block} : ($self->{block} ||= bless([], 'ARRAY'))) )} ]), chr(59) . ' ') . ' ' . chr(125) . ')'))
343            };
344            ('sub ' . $self->{name} . '(' . $str . ') ' . ' ' . chr(123) . ' ' . Main::join(([ map { $_->emit() } @{( (defined $self->{block} ? $self->{block} : ($self->{block} ||= bless([], 'ARRAY'))) )} ]), chr(59) . ' ') . ' ' . chr(125))
345        }
346    }
347
348;
349    {
350    package Do;
351        sub new { shift; bless { @_ }, "Do" }
352        sub emit {
353            my $self = $_[0];
354            ('do ' . chr(123) . ' ' . Main::join(([ map { $_->emit() } @{( (defined $self->{block} ? $self->{block} : ($self->{block} ||= bless([], 'ARRAY'))) )} ]), chr(59) . ' ') . ' ' . chr(125))
355        }
356    }
357
358;
359    {
360    package Use;
361        sub new { shift; bless { @_ }, "Use" }
362        sub emit {
363            my $self = $_[0];
364            ('use ' . $self->{mod})
365        }
366    }
367
368
369}
370
3711;
372