brainfuck2perl

Stato
Discussione chiusa ad ulteriori risposte.

Oromis92

Utente Silver
22 Dicembre 2007
102
12
2
84
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)
Codice:
perl bf2pl.pl ./sorgente_brainfuck.bf

2)
Codice:
perl bf2pl.pl
e poi di seguito scrivere il sorgente direttamente nel programma. quando finito premere INVIO,CTRL+D

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";
 
Stato
Discussione chiusa ad ulteriori risposte.