[Rio-pm] BrainFuck Interprer

Tiago Peczenyj tiago.peczenyj em gmail.com
Sexta Janeiro 11 06:06:02 PST 2013


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_1000 em 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: viniciusmiasato em gmail.com
> To: rio-pm em 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 <viniciusmiasato em 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_1000 em 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: viniciusmiasato em gmail.com
>>> To: rio-pm em 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_1000 em 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 em pm.org
>>> http://mail.pm.org/mailman/listinfo/rio-pm
>>>
>>>
>>>
>>> _______________________________________________ Rio-pm mailing list
>>> Rio-pm em pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>>>
>>> _______________________________________________
>>> Rio-pm mailing list
>>> Rio-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>>
>
>
> _______________________________________________ Rio-pm mailing list
> Rio-pm em pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm



-- 
Tiago B. Peczenyj
Linux User #405772

http://about.me/peczenyj


Mais detalhes sobre a lista de discussão Rio-pm