Skip to content

Instantly share code, notes, and snippets.

@raydiak
Created April 10, 2015 16:07
Show Gist options
  • Save raydiak/b6497a9641a6e53ce831 to your computer and use it in GitHub Desktop.
Save raydiak/b6497a9641a6e53ce831 to your computer and use it in GitHub Desktop.
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 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