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