This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| declare_array line | |
| for_input_lines | |
| trim _ | |
| split _ line ' ' | |
| if line[0] 'declare_array' | |
| print 'my $' | |
| print_var line[1] | |
| say ' = [];' | |
| elsif line[0] 'for_input_lines' | |
| say 'for $*IN.lines -> $_ is copy {' | |
| elsif line[0] 'trim' | |
| print '$' | |
| print_var line[1] | |
| say ' .= trim;' | |
| elsif line[0] 'split' | |
| print '$' | |
| print_var line[2] | |
| print ' = $' | |
| print_var line[1] | |
| print '.split: ' | |
| shift line | |
| shift line | |
| shift line | |
| join line _ ' ' | |
| print_var _ | |
| say ';' | |
| elsif line[0] 'join' | |
| print '$' | |
| print_var line[2] | |
| print ' = $' | |
| print_var line[1] | |
| print '.join: ' | |
| shift line | |
| shift line | |
| shift line | |
| join line _ ' ' | |
| print_var _ | |
| say ';' | |
| elsif line[0] 'if' | |
| print 'if $' | |
| print_var line[1] | |
| print ' eq ' | |
| shift line | |
| shift line | |
| join line _ ' ' | |
| print_var _ | |
| say ' {' | |
| elsif line[0] 'elsif' | |
| print '} elsif $' | |
| print_var line[1] | |
| print ' eq ' | |
| shift line | |
| shift line | |
| join line _ ' ' | |
| print_var _ | |
| say ' {' | |
| elsif line[0] 'end' | |
| say '}' | |
| elsif line[0] 'shift' | |
| print '$' | |
| print_var line[1] | |
| say '.shift;' | |
| elsif line[0] 'print' | |
| print 'print ' | |
| shift line | |
| join line _ ' ' | |
| print_var _ | |
| say ';' | |
| elsif line[0] 'say' | |
| print 'say ' | |
| shift line | |
| join line _ ' ' | |
| print_var _ | |
| say ';' | |
| elsif line[0] 'print_var' | |
| print 'print $' | |
| print_var line[1] | |
| say ';' | |
| end | |
| end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #`[[[ | |
| this is the perl 6 output, for bootstrapping | |
| use it like this: cat code.code | perl6 code.pl > code2.pl | |
| ]]] | |
| my $line = []; | |
| for $*IN.lines -> $_ is copy { | |
| $_ .= trim; | |
| $line = $_.split: ' '; | |
| if $line[0] eq 'declare_array' { | |
| print 'my $'; | |
| print $line[1]; | |
| say ' = [];'; | |
| } elsif $line[0] eq 'for_input_lines' { | |
| say 'for $*IN.lines -> $_ is copy {'; | |
| } elsif $line[0] eq 'trim' { | |
| print '$'; | |
| print $line[1]; | |
| say ' .= trim;'; | |
| } elsif $line[0] eq 'split' { | |
| print '$'; | |
| print $line[2]; | |
| print ' = $'; | |
| print $line[1]; | |
| print '.split: '; | |
| $line.shift; | |
| $line.shift; | |
| $line.shift; | |
| $_ = $line.join: ' '; | |
| print $_; | |
| say ';'; | |
| } elsif $line[0] eq 'join' { | |
| print '$'; | |
| print $line[2]; | |
| print ' = $'; | |
| print $line[1]; | |
| print '.join: '; | |
| $line.shift; | |
| $line.shift; | |
| $line.shift; | |
| $_ = $line.join: ' '; | |
| print $_; | |
| say ';'; | |
| } elsif $line[0] eq 'if' { | |
| print 'if $'; | |
| print $line[1]; | |
| print ' eq '; | |
| $line.shift; | |
| $line.shift; | |
| $_ = $line.join: ' '; | |
| print $_; | |
| say ' {'; | |
| } elsif $line[0] eq 'elsif' { | |
| print '} elsif $'; | |
| print $line[1]; | |
| print ' eq '; | |
| $line.shift; | |
| $line.shift; | |
| $_ = $line.join: ' '; | |
| print $_; | |
| say ' {'; | |
| } elsif $line[0] eq 'end' { | |
| say '}'; | |
| } elsif $line[0] eq 'shift' { | |
| print '$'; | |
| print $line[1]; | |
| say '.shift;'; | |
| } elsif $line[0] eq 'print' { | |
| print 'print '; | |
| $line.shift; | |
| $_ = $line.join: ' '; | |
| print $_; | |
| say ';'; | |
| } elsif $line[0] eq 'say' { | |
| print 'say '; | |
| $line.shift; | |
| $_ = $line.join: ' '; | |
| print $_; | |
| say ';'; | |
| } elsif $line[0] eq 'print_var' { | |
| print 'print $'; | |
| print $line[1]; | |
| say ';'; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment