Created
April 10, 2015 16:07
-
-
Save raydiak/b6497a9641a6e53ce831 to your computer and use it in GitHub Desktop.
This file contains hidden or 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 hidden or 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