ho scritto un programma che trasforma un sorgente in brainfuck in uno script perl.
non ho (ancora) scritto nessuna ottimizzazione, semplicemente ad ogni carattere del brainfuck sostituisco una relativa istruzione in perl.
utilizzo: ci sono due modi di dare al programma il sorgente bf.
1)
2)
e poi di seguito scrivere il sorgente direttamente nel programma. quando finito premere INVIO,CTRL+D
ecco il source:
non ho (ancora) scritto nessuna ottimizzazione, semplicemente ad ogni carattere del brainfuck sostituisco una relativa istruzione in perl.
utilizzo: ci sono due modi di dare al programma il sorgente bf.
1)
Codice:
perl bf2pl.pl ./sorgente_brainfuck.bf
2)
Codice:
perl bf2pl.pl
ecco il source:
Codice:
print "\n\n========== Brainfuck to Perl converter ===========\n";
print "------------------- by Oromis92 ------------------\n\n";
while (<>) {
$out .= $_;
}
open(OUT,">brainf.pl");
print OUT "\$j=0;\n";
for ($i=0;$i<length($out);$i++) {
$code = substr($out,$i,1);
if ($code eq ".") {print OUT 'print chr($arr[$j]);'; print OUT "\n";}
elsif ($code eq ",") {print OUT "\n\$arr[\$j] = <>;\n"; print OUT "chomp \$arr[\$j];\n"; print OUT "chop \$arr[\$j] while length(\$arr[\$j] > 1);\n"; print OUT "\$arr[\$j] = ord(\$arr[\$j]);\n" }
elsif ($code eq "+") {print OUT "\$arr[\$j]++;\n"}
elsif ($code eq "-") {print OUT "\$arr[\$j]--;\n"}
elsif ($code eq "[") {print OUT "while (\$arr[\$j] != 0) {\n" }
elsif ($code eq "]") {print OUT "};\n"}
elsif ($code eq ">") {print OUT "\$j++;\n"}
elsif ($code eq "<") {print OUT "\$j--;\n"}
}
print "\n\n>> file saved in ./brainf.pl\n\n";