o que seria $s que vc usa em [ e ] ? eu vou dizer como implementei: eu tenho uma variavel chamada $pc (program counter) e eu faço um loop enquanto $pc é menor que o fim. O fim é o tamanho do array de instruções.
$pc começa em 0 e vai incrementando valor a cada passada, entretanto [ e ] alteram este valor pois se a stack for 1 vc deve fazer um push no array que "lembra" onde está o respectivo [ na hora de voltar e, se a stack for 0, vc deve avançar até o proximo ] exemplo [+]+ outras + coisas + vc não pode ficar preso nesse loop logo no começo. o lance é que vc incrementa pc em 1 em quase todos os passos, porem quando chega no ] vc precisa voltar. vc esta simplesmente iterando sobre o codigo sem ter como voltar. 2013/1/11 Aureliano Guedes <guedes_1...@hotmail.com>: > Ok, agora um mudei outras coisas tambem, a principio tah td ok. > http://pastebin.com/w78GfPEv > > Agora testei com um Hello World : > > ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>. > > Mas ficou meio locão. > > > ________________________________ > Date: Fri, 11 Jan 2013 11:47:26 -0200 > > From: viniciusmias...@gmail.com > To: rio-pm@pm.org > Subject: Re: [Rio-pm] BrainFuck Interprer > > Aureliano, > > seu código está bem confuso mesmo. > > você está realizando o foreach > > foreach my $i (split (//, $data)) > > e logo após o inicio do foreach você faz > > $i = substr($data,$s,2); > > você sabe explicar pq ? > > Outra dica: declare sua "sub getchar" no final do arquivo para deixar o > código mais legível. > > Dica adiantada: > > antes de você trocar a sub e falar que o script parou de funcionar, na linha > em que você realiza a chamada da sub getchar, coloque os () na função. > ex.: getchar(); > > talvez isso ajude você a consertar o script, > > abs. > > Em 11 de janeiro de 2013 11:33, Vinícius Miasato <viniciusmias...@gmail.com> > escreveu: >> >> bom, ... com o given o seu script executa, mas não termina. >> >> sem o given ele não executa ... >> >> escolha a melhor opção e continua desenvolvendo =) >> >> abs. >> >> Em 11 de janeiro de 2013 11:27, Aureliano Guedes <guedes_1...@hotmail.com> >> escreveu: >> >>> Mudanças feitas. >>> >>> Mas vejam. Eu tinha tirado o given, mas coloquei de volta. >>> >>> O problema é, com o given, o STDIN não termina, eu digito alguma coisa e >>> aperto enter naturalmente algo deveria acontecer, mas a unica coisa que >>> acontece é uma quebra de linha. >>> >>> ________________________________ >>> Date: Fri, 11 Jan 2013 11:16:26 -0200 >>> From: viniciusmias...@gmail.com >>> To: rio-pm@pm.org >>> Subject: Re: [Rio-pm] BrainFuck Interprer >>> >>> >>> não deveria ter um "given" em algum lugar do código para você utilizar o >>> "when" ? >>> >>> abs. >>> >>> Em 11 de janeiro de 2013 10:43, Aureliano Guedes >>> <guedes_1...@hotmail.com> escreveu: >>> >>> Ola mongens, >>> >>> Como alguns sabem eu estava tentando fazer um interpretador para >>> brainfuck em Perl. >>> >>> Portanto segue o que consegui ate agora: http://pastebin.com/gJKizdYS >>> >>> Um "script brainfuck" para testarem, ele converte letras munusculas para >>> maiusculas: http://pastebin.com/kzMMpUsA >>> >>> Deve ser executado assim: perl mybf.pl bf.b >>> >>> Mas estou com problemas. Toda vez que executo me retorna : Can't use >>> when() outside a topicalizer at mybf.pl line 36, <> line 1. >>> >>> Alguem sabe o que esta acontecendo, e pode me ajudar. >>> >>> Desde já, grato. >>> >>> Att >>> >>> _______________________________________________ >>> Rio-pm mailing list >>> Rio-pm@pm.org >>> http://mail.pm.org/mailman/listinfo/rio-pm >>> >>> >>> >>> _______________________________________________ Rio-pm mailing list >>> Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm >>> >>> _______________________________________________ >>> Rio-pm mailing list >>> Rio-pm@pm.org >>> http://mail.pm.org/mailman/listinfo/rio-pm >> >> > > > _______________________________________________ Rio-pm mailing list > Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm > > _______________________________________________ > Rio-pm mailing list > Rio-pm@pm.org > http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://about.me/peczenyj _______________________________________________ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm