Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-11 Thread Stanislaw Pusep
Dahora, parabéns :D
BTW, isso me lembrou de um "dialeto" do brainfuck, o trollscript:
https://github.com/caius/trollscript
Isso é um "hello world" em trollscript:
Trooloolooloolooloolooloolooloolollolooloolooloolooloololoolooloolooloolooloolooloololooloololoooloolooloololloololoololooolooloolooloolooloololoolooolooloololooloololloololooloolooloolooloolooloolooloolooloolooloolololooolooloololooollollollollollolllooollollollollollollollollloolololooll
É sério.

ABS()



2012/12/11 Aureliano Guedes 

>  Ola monges,
>
> Estou desenvolvendo um novo brinquedo, como forma de passatempo mesmo, um
> interpretador para BrainFuck.
>
> Futuramente pretendo desenvolver um compilador.
>
> Se alguem se interessar pelo assunto e puder colaborar e/ou ajudar, o que
> deesenvolvi ainda não esta funcional, e estou tendo algumas dificuldades.
>
> http://pastebin.com/aEppcPKt
>
> Para testarem um hello wolrd em BF:
>
>
> ++[>+++>++>+++>+-]>++.>+.+++..+++.>++.<<+++.>.+++.--..>+.>.
>
>
>
> Os comandos de brainfuck : http://pt.wikipedia.org/wiki/Brainfuck#Comandos
>
> Aqui tem um pequeno tutorial tambem: 
> http://wiki.portugal-a-programar.pt/dev_geral:linguagens_esoterica:brainfuck
>
> Aqui tambem:
>
> Basicamente é isso:
>
> http://unauthorizedaccess.files.wordpress.com/2011/02/cmds.jpg?w=610
>
>
>
> ___
> 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

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-11 Thread Aureliano Guedes

ahsuahuhasuahsuah

Da hora mesmo, quando terminar, quem sabe não faço algo do tipo.

From: creakt...@gmail.com
Date: Tue, 11 Dec 2012 21:15:38 -0200
To: rio-pm@pm.org
Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

Dahora, parabéns :DBTW, isso me lembrou de um "dialeto" do brainfuck, o 
trollscript: https://github.com/caius/trollscriptIsso é um "hello world" em 
trollscript:

Trooloolooloolooloolooloolooloolollolooloolooloolooloololoolooloolooloolooloolooloololooloololoooloolooloololloololoololooolooloolooloolooloololoolooolooloololooloololloololooloolooloolooloolooloolooloolooloolooloolololooolooloololooollollollollollolllooollollollollollollollollloolololooll

É sério.
ABS()




2012/12/11 Aureliano Guedes 






Ola monges,

Estou desenvolvendo um novo brinquedo, como forma de passatempo mesmo, um 
interpretador para BrainFuck.

Futuramente pretendo desenvolver um compilador.

Se alguem se interessar pelo assunto e puder colaborar e/ou ajudar, o que 
deesenvolvi ainda não esta funcional, e estou tendo algumas dificuldades.



http://pastebin.com/aEppcPKt

Para testarem um hello wolrd em BF:


++[>+++>++>+++>+<<<<-]>++.>+.+++..+++.>++.<<+++.>.+++.--..>+.>.





Os comandos de brainfuck : http://pt.wikipedia.org/wiki/Brainfuck#Comandos

Aqui tem um pequeno tutorial tambem: 
http://wiki.portugal-a-programar.pt/dev_geral:linguagens_esoterica:brainfuck



Aqui tambem: 

Basicamente é isso:

http://unauthorizedaccess.files.wordpress.com/2011/02/cmds.jpg?w=610



  

___

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

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-11 Thread Renato Santos
não são essas linhas aqui?


   1. $p++ if ($i eq '>');
   2. $p-- if ($i eq '>');


2012/12/11 Aureliano Guedes 

>  ahsuahuhasuahsuah
>
> Da hora mesmo, quando terminar, quem sabe não faço algo do tipo.
>
> --
> From: creakt...@gmail.com
> Date: Tue, 11 Dec 2012 21:15:38 -0200
> To: rio-pm@pm.org
> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>
>
> Dahora, parabéns :D
> BTW, isso me lembrou de um "dialeto" do brainfuck, o trollscript:
> https://github.com/caius/trollscript
> Isso é um "hello world" em trollscript:
>
> Trooloolooloolooloolooloolooloolollolooloolooloolooloololoolooloolooloolooloolooloololooloololoooloolooloololloololoololooolooloolooloolooloololoolooolooloololooloololloololooloolooloolooloolooloolooloolooloolooloolololooolooloololooollollollollollolllooollollollollollollollollloolololooll
> É sério.
>
> ABS()
>
>
>
> 2012/12/11 Aureliano Guedes 
>
>  Ola monges,
>
> Estou desenvolvendo um novo brinquedo, como forma de passatempo mesmo, um
> interpretador para BrainFuck.
>
> Futuramente pretendo desenvolver um compilador.
>
> Se alguem se interessar pelo assunto e puder colaborar e/ou ajudar, o que
> deesenvolvi ainda não esta funcional, e estou tendo algumas dificuldades.
>
> http://pastebin.com/aEppcPKt
>
> Para testarem um hello wolrd em BF:
>
>
> ++[>+++>++>+++>+<<<<-]>++.>+.+++..+++.>++.<<+++.>.+++.--..>+.>.
>
>
>
>
>
> Os comandos de brainfuck : http://pt.wikipedia.org/wiki/Brainfuck#Comandos
>
> Aqui tem um pequeno tutorial tambem: 
> http://wiki.portugal-a-programar.pt/dev_geral:linguagens_esoterica:brainfuck
>
>
>
> Aqui tambem:
>
> Basicamente é isso:
>
> http://unauthorizedaccess.files.wordpress.com/2011/02/cmds.jpg?w=610
>
>
>
>
> ___
> 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
>



-- 
Saravá,
Renato CRON
http://www.renatocron.com/blog/
@renato_cron <http://twitter.com/#!/renato_cron>
___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-11 Thread Aureliano Guedes

Não so isso, deve ter algo mais.

Mesmo trocando $p-- if ($i eq '>'); por  $p-- if ($i eq '<');.

Os caracteres que saem são estranhos, não sai o que eu queria.

From: renato.c...@gmail.com
Date: Tue, 11 Dec 2012 21:36:03 -0200
To: rio-pm@pm.org
Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

não são essas linhas aqui?


$p++ if ($i eq '>');

$p-- if ($i eq '>');


2012/12/11 Aureliano Guedes 






ahsuahuhasuahsuah

Da hora mesmo, quando terminar, quem sabe não faço algo do tipo.

From: creakt...@gmail.com
Date: Tue, 11 Dec 2012 21:15:38 -0200


To: rio-pm@pm.org
Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

Dahora, parabéns :DBTW, isso me lembrou de um "dialeto" do brainfuck, o 
trollscript: https://github.com/caius/trollscript

Isso é um "hello world" em trollscript:

Trooloolooloolooloolooloolooloolollolooloolooloolooloololoolooloolooloolooloolooloololooloololoooloolooloololloololoololooolooloolooloolooloololoolooolooloololooloololloololooloolooloolooloolooloolooloolooloolooloolololooolooloololooollollollollollolllooollollollollollollollollloolololooll



É sério.
ABS()




2012/12/11 Aureliano Guedes 








Ola monges,

Estou desenvolvendo um novo brinquedo, como forma de passatempo mesmo, um 
interpretador para BrainFuck.

Futuramente pretendo desenvolver um compilador.

Se alguem se interessar pelo assunto e puder colaborar e/ou ajudar, o que 
deesenvolvi ainda não esta funcional, e estou tendo algumas dificuldades.





http://pastebin.com/aEppcPKt

Para testarem um hello wolrd em BF:


++[>+++>++>+++>+<<<<-]>++.>+.+++..+++.>++.<<+++.>.+++.--..>+.>.







Os comandos de brainfuck : http://pt.wikipedia.org/wiki/Brainfuck#Comandos

Aqui tem um pequeno tutorial tambem: 
http://wiki.portugal-a-programar.pt/dev_geral:linguagens_esoterica:brainfuck





Aqui tambem: 

Basicamente é isso:

http://unauthorizedaccess.files.wordpress.com/2011/02/cmds.jpg?w=610





  

___

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


-- 
Saravá,

Renato CRONhttp://www.renatocron.com/blog/

@renato_cron



___
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

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-11 Thread Renato Santos
pow,

se ninguem te ajudar até domingo, até domingo eu do uma olhada! haha #
semtempo

2012/12/11 Aureliano Guedes 

>  Não so isso, deve ter algo mais.
>
> Mesmo trocando $p-- if ($i eq '>'); por  $p-- if ($i eq '<');.
>
> Os caracteres que saem são estranhos, não sai o que eu queria.
>
> --
> From: renato.c...@gmail.com
> Date: Tue, 11 Dec 2012 21:36:03 -0200
>
> To: rio-pm@pm.org
> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>
> não são essas linhas aqui?
>
>
>1. $p++ if ($i eq '>');
>2. $p-- if ($i eq '>');
>
>
> 2012/12/11 Aureliano Guedes 
>
>  ahsuahuhasuahsuah
>
> Da hora mesmo, quando terminar, quem sabe não faço algo do tipo.
>
> ------------------
> From: creakt...@gmail.com
> Date: Tue, 11 Dec 2012 21:15:38 -0200
> To: rio-pm@pm.org
> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>
>
> Dahora, parabéns :D
> BTW, isso me lembrou de um "dialeto" do brainfuck, o trollscript:
> https://github.com/caius/trollscript
> Isso é um "hello world" em trollscript:
>
> Trooloolooloolooloolooloolooloolollolooloolooloolooloololoolooloolooloolooloolooloololooloololoooloolooloololloololoololooolooloolooloolooloololoolooolooloololooloololloololooloolooloolooloolooloolooloolooloolooloolololooolooloololooollollollollollolllooollollollollollollollollloolololooll
> É sério.
>
> ABS()
>
>
>
> 2012/12/11 Aureliano Guedes 
>
>  Ola monges,
>
> Estou desenvolvendo um novo brinquedo, como forma de passatempo mesmo, um
> interpretador para BrainFuck.
>
> Futuramente pretendo desenvolver um compilador.
>
> Se alguem se interessar pelo assunto e puder colaborar e/ou ajudar, o que
> deesenvolvi ainda não esta funcional, e estou tendo algumas dificuldades.
>
> http://pastebin.com/aEppcPKt
>
> Para testarem um hello wolrd em BF:
>
>
> ++[>+++>++>+++>+<<<<-]>++.>+.+++..+++.>++.<<+++.>.+++.--..>+.>.
>
>
>
>
>
>
>
> Os comandos de brainfuck : http://pt.wikipedia.org/wiki/Brainfuck#Comandos
>
> Aqui tem um pequeno tutorial tambem: 
> http://wiki.portugal-a-programar.pt/dev_geral:linguagens_esoterica:brainfuck
>
>
>
>
>
> Aqui tambem:
>
> Basicamente é isso:
>
> http://unauthorizedaccess.files.wordpress.com/2011/02/cmds.jpg?w=610
>
>
>
>
>
>
> ___
> 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
>
>
>
>
> --
> Saravá,
> Renato CRON
> http://www.renatocron.com/blog/
> @renato_cron <http://twitter.com/#%21/renato_cron>
>
>
> ___ 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
>



-- 
Saravá,
Renato CRON
http://www.renatocron.com/blog/
@renato_cron <http://twitter.com/#!/renato_cron>
___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-11 Thread Aureliano Guedes

Por isso é passatempo, é pra quem tem tempo. hahaha

Valeu

From: renato.c...@gmail.com
Date: Tue, 11 Dec 2012 21:45:03 -0200
To: rio-pm@pm.org
Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

pow, 
se ninguem te ajudar até domingo, até domingo eu do uma olhada! haha #semtempo



2012/12/11 Aureliano Guedes 






Não so isso, deve ter algo mais.

Mesmo trocando $p-- if ($i eq '>'); por  $p-- if ($i eq '<');.



Os caracteres que saem são estranhos, não sai o que eu queria.

From: renato.c...@gmail.com
Date: Tue, 11 Dec 2012 21:36:03 -0200


To: rio-pm@pm.org
Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

não são essas linhas aqui?




$p++ if ($i eq '>');



$p-- if ($i eq '>');




2012/12/11 Aureliano Guedes 








ahsuahuhasuahsuah

Da hora mesmo, quando terminar, quem sabe não faço algo do tipo.

From: creakt...@gmail.com
Date: Tue, 11 Dec 2012 21:15:38 -0200




To: rio-pm@pm.org
Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

Dahora, parabéns :DBTW, isso me lembrou de um "dialeto" do brainfuck, o 
trollscript: https://github.com/caius/trollscript



Isso é um "hello world" em trollscript:

Trooloolooloolooloolooloolooloolollolooloolooloolooloololoolooloolooloolooloolooloololooloololoooloolooloololloololoololooolooloolooloolooloololoolooolooloololooloololloololooloolooloolooloolooloolooloolooloolooloolololooolooloololooollollollollollolllooollollollollollollollollloolololooll





É sério.
ABS()




2012/12/11 Aureliano Guedes 










Ola monges,

Estou desenvolvendo um novo brinquedo, como forma de passatempo mesmo, um 
interpretador para BrainFuck.

Futuramente pretendo desenvolver um compilador.

Se alguem se interessar pelo assunto e puder colaborar e/ou ajudar, o que 
deesenvolvi ainda não esta funcional, e estou tendo algumas dificuldades.







http://pastebin.com/aEppcPKt

Para testarem um hello wolrd em BF:


++[>+++>++>+++>+<<<<-]>++.>+.+++..+++.>++.<<+++.>.+++.--..>+.>.









Os comandos de brainfuck : http://pt.wikipedia.org/wiki/Brainfuck#Comandos

Aqui tem um pequeno tutorial tambem: 
http://wiki.portugal-a-programar.pt/dev_geral:linguagens_esoterica:brainfuck







Aqui tambem: 

Basicamente é isso:

http://unauthorizedaccess.files.wordpress.com/2011/02/cmds.jpg?w=610







  

___

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


-- 
Saravá,



Renato CRONhttp://www.renatocron.com/blog/



@renato_cron



___
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


-- 
Saravá,

Renato CRONhttp://www.renatocron.com/blog/

@renato_cron



___
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

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-12 Thread Stanislaw Pusep
As variáveis @loop e $s não afetam a lógica do seu programa.
Isso é, a sua implementação das instruções de ciclo condicional, [ e ],
está incompleta.
Outra coisa, ao invés de usar if(){}elsif(){}, procure usar given/when,
nesse caso seria mais apropriado.
Por fim, o I/O do brainfuck é por caractere, então certifique-se de que o
buffering de I/O do Perl esteja desligado e que <> retorne 1 caractere de
cada vez: local ($|, $/) = (1, \1);

ABS()



2012/12/11 Aureliano Guedes 

>  Por isso é passatempo, é pra quem tem tempo. hahaha
>
> Valeu
>
> --
> From: renato.c...@gmail.com
> Date: Tue, 11 Dec 2012 21:45:03 -0200
>
> To: rio-pm@pm.org
> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>
> pow,
>
> se ninguem te ajudar até domingo, até domingo eu do uma olhada! haha #
> semtempo
>
> 2012/12/11 Aureliano Guedes 
>
>  Não so isso, deve ter algo mais.
>
> Mesmo trocando $p-- if ($i eq '>'); por  $p-- if ($i eq '<');.
>
> Os caracteres que saem são estranhos, não sai o que eu queria.
>
> ------
> From: renato.c...@gmail.com
> Date: Tue, 11 Dec 2012 21:36:03 -0200
>
> To: rio-pm@pm.org
> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>
> não são essas linhas aqui?
>
>
>1. $p++ if ($i eq '>');
>2. $p-- if ($i eq '>');
>
>
> 2012/12/11 Aureliano Guedes 
>
>  ahsuahuhasuahsuah
>
> Da hora mesmo, quando terminar, quem sabe não faço algo do tipo.
>
> --
> From: creakt...@gmail.com
> Date: Tue, 11 Dec 2012 21:15:38 -0200
> To: rio-pm@pm.org
> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>
>
> Dahora, parabéns :D
> BTW, isso me lembrou de um "dialeto" do brainfuck, o trollscript:
> https://github.com/caius/trollscript
> Isso é um "hello world" em trollscript:
>
> Trooloolooloolooloolooloolooloolollolooloolooloolooloololoolooloolooloolooloolooloololooloololoooloolooloololloololoololooolooloolooloolooloololoolooolooloololooloololloololooloolooloolooloolooloolooloolooloolooloolololooolooloololooollollollollollolllooollollollollollollollollloolololooll
> É sério.
>
> ABS()
>
>
>
> 2012/12/11 Aureliano Guedes 
>
>  Ola monges,
>
> Estou desenvolvendo um novo brinquedo, como forma de passatempo mesmo, um
> interpretador para BrainFuck.
>
> Futuramente pretendo desenvolver um compilador.
>
> Se alguem se interessar pelo assunto e puder colaborar e/ou ajudar, o que
> deesenvolvi ainda não esta funcional, e estou tendo algumas dificuldades.
>
> http://pastebin.com/aEppcPKt
>
> Para testarem um hello wolrd em BF:
>
>
> ++[>+++>++>+++>+<<<<-]>++.>+.+++..+++.>++.<<+++.>.+++.--..>+.>.
>
>
>
>
>
>
>
>
>
> Os comandos de brainfuck : http://pt.wikipedia.org/wiki/Brainfuck#Comandos
>
> Aqui tem um pequeno tutorial tambem: 
> http://wiki.portugal-a-programar.pt/dev_geral:linguagens_esoterica:brainfuck
>
>
>
>
>
>
>
> Aqui tambem:
>
> Basicamente é isso:
>
> http://unauthorizedaccess.files.wordpress.com/2011/02/cmds.jpg?w=610
>
>
>
>
>
>
>
>
> ___
> 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
>
>
>
>
> --
> Saravá,
> Renato CRON
> http://www.renatocron.com/blog/
> @renato_cron <http://twitter.com/#%21/renato_cron>
>
>
> ___ 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
>
>
>
>
> --
> Saravá,
> Renato CRON
> http://www.renatocron.com/blog/
> @renato_cron <http://twitter.com/#%21/renato_cron>
>
>
> ___ 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

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-12 Thread Aureliano Guedes

Ainda não tinha me aventurado nas novidades do Perl 5.16.

o when eu entendi, mas o given não, alguem poderia me explicar o uso do given??

O break ja funciona no 5.16?? se sim, como???

From: creakt...@gmail.com
Date: Wed, 12 Dec 2012 14:06:14 -0200
To: rio-pm@pm.org
Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

As variáveis @loop e $s não afetam a lógica do seu programa.Isso é, a sua 
implementação das instruções de ciclo condicional, [ e ], está incompleta.Outra 
coisa, ao invés de usar if(){}elsif(){}, procure usar given/when, nesse caso 
seria mais apropriado.

Por fim, o I/O do brainfuck é por caractere, então certifique-se de que o 
buffering de I/O do Perl esteja desligado e que <> retorne 1 caractere de cada 
vez: local ($|, $/) = (1, \1);


ABS()




2012/12/11 Aureliano Guedes 






Por isso é passatempo, é pra quem tem tempo. hahaha

Valeu

From: renato.c...@gmail.com
Date: Tue, 11 Dec 2012 21:45:03 -0200


To: rio-pm@pm.org
Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

pow, 
se ninguem te ajudar até domingo, até domingo eu do uma olhada! haha #semtempo





2012/12/11 Aureliano Guedes 








Não so isso, deve ter algo mais.

Mesmo trocando $p-- if ($i eq '>'); por  $p-- if ($i eq '<');.





Os caracteres que saem são estranhos, não sai o que eu queria.

From: renato.c...@gmail.com
Date: Tue, 11 Dec 2012 21:36:03 -0200




To: rio-pm@pm.org
Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

não são essas linhas aqui?






$p++ if ($i eq '>');





$p-- if ($i eq '>');






2012/12/11 Aureliano Guedes 










ahsuahuhasuahsuah

Da hora mesmo, quando terminar, quem sabe não faço algo do tipo.

From: creakt...@gmail.com
Date: Tue, 11 Dec 2012 21:15:38 -0200






To: rio-pm@pm.org
Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

Dahora, parabéns :DBTW, isso me lembrou de um "dialeto" do brainfuck, o 
trollscript: https://github.com/caius/trollscript





Isso é um "hello world" em trollscript:

Trooloolooloolooloolooloolooloolollolooloolooloolooloololoolooloolooloolooloolooloololooloololoooloolooloololloololoololooolooloolooloolooloololoolooolooloololooloololloololooloolooloolooloolooloolooloolooloolooloolololooolooloololooollollollollollolllooollollollollollollollollloolololooll







É sério.
ABS()




2012/12/11 Aureliano Guedes 












Ola monges,

Estou desenvolvendo um novo brinquedo, como forma de passatempo mesmo, um 
interpretador para BrainFuck.

Futuramente pretendo desenvolver um compilador.

Se alguem se interessar pelo assunto e puder colaborar e/ou ajudar, o que 
deesenvolvi ainda não esta funcional, e estou tendo algumas dificuldades.









http://pastebin.com/aEppcPKt

Para testarem um hello wolrd em BF:


++[>+++>++>+++>+<<<<-]>++.>+.+++..+++.>++.<<+++.>.+++.--..>+.>.











Os comandos de brainfuck : http://pt.wikipedia.org/wiki/Brainfuck#Comandos

Aqui tem um pequeno tutorial tambem: 
http://wiki.portugal-a-programar.pt/dev_geral:linguagens_esoterica:brainfuck









Aqui tambem: 

Basicamente é isso:

http://unauthorizedaccess.files.wordpress.com/2011/02/cmds.jpg?w=610









  

___

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


-- 
Saravá,





Renato CRONhttp://www.renatocron.com/blog/





@renato_cron



___
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


-- 
Saravá,



Renato CRONhttp://www.renatocron.com/blog/



@renato_cron



___
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

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-12 Thread breno
2012/12/12 Aureliano Guedes :
> Ainda não tinha me aventurado nas novidades do Perl 5.16.
>
> o when eu entendi, mas o given não, alguem poderia me explicar o uso do
> given??
>
> O break ja funciona no 5.16?? se sim, como???
>

given/when existe no Perl desde a versão 5.10, com direito a default,
continue e break =)

Pra saber como, dá uma olhada aqui ó:

http://perldoc.perl.org/perlsyn.html#Switch-Statements

tem tudo explicadinho, inclusive o fato de que given() é experimental
- a forma recomendada de definir o tópico é com for().

Boa diversão!

[]s

-b
___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm


Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-13 Thread Andre Carneiro
Meio estranho você não entender when e entender given, mas vamos lá!
Normalmente eu mandaria um RTFM, mas já estou velho e manso ultimamente...

given é equivalente a 'switch'

when é equivalente a 'case'

Então, se você estiver usando Perl 5.10 ainda,


use feature qw/switch say/; #Isso sim, é escroto pra caramba! Se a função
chama-se 'given', pra que mudar o nome para switch???
use strict;
use warnings;
#Ou dane-se tudo isso e faça 'use common::sense';


my $var = 'Carneirao';

given($var){
   when( 'Carneirao'){
   say "Opa, sou eu!";
   }
   when(/Sbrebows/){
  say 'WTF???';
   }
   default {
  say "Nao sei o que quer dizer...";
   }
}

#Antigamente fazíamos assim:

use Switch;


switch($var){
 case 'Carneirao' { say "Opa, sou eu!";}
 case /Sbrebows/ {say "WTF";}
 else { say "Nao sei o que quer dizer";}
}


#Mas, do Perl 5.10 em diante, o módulo Switch está com status
 'deprecated', então use a primeira opção!




Agora sim! Para mais informações RTFM my friend!!!


http://perldoc.perl.org/Switch.html

http://perldoc.perl.org/perlsyn.html#Switch-Statements


:-)
Cheers!




2012/12/13 breno 

> 2012/12/12 Aureliano Guedes :
> > Ainda não tinha me aventurado nas novidades do Perl 5.16.
> >
> > o when eu entendi, mas o given não, alguem poderia me explicar o uso do
> > given??
> >
> > O break ja funciona no 5.16?? se sim, como???
> >
>
> given/when existe no Perl desde a versão 5.10, com direito a default,
> continue e break =)
>
> Pra saber como, dá uma olhada aqui ó:
>
> http://perldoc.perl.org/perlsyn.html#Switch-Statements
>
> tem tudo explicadinho, inclusive o fato de que given() é experimental
> - a forma recomendada de definir o tópico é com for().
>
> Boa diversão!
>
> []s
>
> -b
> ___
> Rio-pm mailing list
> Rio-pm@pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
André Garcia Carneiro
Software Engineer
(11)982907780
___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-13 Thread Nicole Scherer
Caros,

se entendi bem, o given e o when, assim como o case, são mais das formas 
alternativas ("há muitas maneiras de se fazer a mesma coisa em Perl") de se 
fazer "if-elsif-else" com linguagem mais coloquial. Certo?


Seria o mesmo que:


my $var = 'Carneirao';
if ($var eq 'Carneirao'){say "Opa, sou eu!";}elsif ($var =~ /Sbrebows/){ say 
'WTF???';}
else {say "Nao sei o que quer dizer...";}


Com a vantagem de economizar o  ($var eq/=~ ...).

Correto?
Ou estou perdendo alguma coisa muito especial, que não percebi ainda?


[]'s
Nicole





 De: Andre Carneiro 
Para: Perl Mongers Rio de Janeiro  
Enviadas: Quinta-feira, 13 de Dezembro de 2012 9:36
Assunto: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
 

Meio estranho você não entender when e entender given, mas vamos lá! 
Normalmente eu mandaria um RTFM, mas já estou velho e manso ultimamente...


given é equivalente a 'switch'

when é equivalente a 'case'

Então, se você estiver usando Perl 5.10 ainda,


use feature qw/switch say/; #Isso sim, é escroto pra caramba! Se a função 
chama-se 'given', pra que mudar o nome para switch??? 
use strict;
use warnings;
#Ou dane-se tudo isso e faça 'use common::sense';


my $var = 'Carneirao';

given($var){
   when( 'Carneirao'){
       say "Opa, sou eu!";
   }
   when(/Sbrebows/){
      say 'WTF???';
   }
   default {
      say "Nao sei o que quer dizer...";
   }
}

#Antigamente fazíamos assim:

use Switch;


switch($var){
     case 'Carneirao' { say "Opa, sou eu!";}
     case /Sbrebows/ {say "WTF";}
     else { say "Nao sei o que quer dizer";}
}


#Mas, do Perl 5.10 em diante, o módulo Switch está com status  'deprecated', 
então use a primeira opção!





Agora sim! Para mais informações RTFM my friend!!!


http://perldoc.perl.org/Switch.html

http://perldoc.perl.org/perlsyn.html#Switch-Statements


:-)
Cheers!





2012/12/13 breno 

2012/12/12 Aureliano Guedes :
>
>> Ainda não tinha me aventurado nas novidades do Perl 5.16.
>>
>> o when eu entendi, mas o given não, alguem poderia me explicar o uso do
>> given??
>>
>> O break ja funciona no 5.16?? se sim, como???
>>
>
>given/when existe no Perl desde a versão 5.10, com direito a default,
>continue e break =)
>
>Pra saber como, dá uma olhada aqui ó:
>
>http://perldoc.perl.org/perlsyn.html#Switch-Statements
>
>tem tudo explicadinho, inclusive o fato de que given() é experimental
>- a forma recomendada de definir o tópico é com for().
>
>Boa diversão!
>
>[]s
>
>-b
>
>___
>Rio-pm mailing list
>Rio-pm@pm.org
>http://mail.pm.org/mailman/listinfo/rio-pm
>


-- 
André Garcia Carneiro
Software Engineer
(11)982907780

___
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

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-13 Thread Tiago Peczenyj
Nicole

o when usa smart matching ~~

E a vantagem é um codigo enxuto.

Por exemplo, isto

if($type ~~ /^[FUP]$/) { code }
elsif($type ~~ "S")  {  code }
elsif($type ~~ "B") {  code }
else  {  code }

vira isto
given ($type){
when(/^[FUP]$/) { code }
when("S")  {  code }
when("B") {  code }
default  {  code }
}

a vantagem é que a variavel $type foi usada apenas uma vez. eu não tenho
muito espaço para repeti-la

por outro lado isto não é um switch/case como em C que vc precisa adicionar
um break senão ele cai em todas as condições abaixo - e isso tem algumas
utilidades bizarras.

2012/12/13 Nicole Scherer 

> Caros,
>
> se entendi bem, o given e o when, assim como o case, são mais das formas
> alternativas ("há muitas maneiras de se fazer a mesma coisa em Perl") de se
> fazer "if-elsif-else" com linguagem mais coloquial. Certo?
>
> Seria o mesmo que:
>
> my $var = 'Carneirao';
> if ($var eq 'Carneirao'){say "Opa, sou eu!";}
> elsif ($var =~ /Sbrebows/){ say 'WTF???';}
> else {say "Nao sei o que quer dizer...";}
>
> Com a vantagem de economizar o ($var eq/=~ ...).
> Correto?
> Ou estou perdendo alguma coisa muito especial, que não percebi ainda?
>
>
> []'s
> Nicole
>
>
>   ----------
> *De:* Andre Carneiro 
> *Para:* Perl Mongers Rio de Janeiro 
> *Enviadas:* Quinta-feira, 13 de Dezembro de 2012 9:36
> *Assunto:* Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>
> Meio estranho você não entender when e entender given, mas vamos lá!
> Normalmente eu mandaria um RTFM, mas já estou velho e manso ultimamente...
>
> given é equivalente a 'switch'
>
> when é equivalente a 'case'
>
> Então, se você estiver usando Perl 5.10 ainda,
>
> 
> use feature qw/switch say/; #Isso sim, é escroto pra caramba! Se a função
> chama-se 'given', pra que mudar o nome para switch???
> use strict;
> use warnings;
> #Ou dane-se tudo isso e faça 'use common::sense';
>
>
> my $var = 'Carneirao';
>
> given($var){
>when( 'Carneirao'){
>say "Opa, sou eu!";
>}
>when(/Sbrebows/){
>   say 'WTF???';
>}
>default {
>   say "Nao sei o que quer dizer...";
>}
> }
>
> #Antigamente fazíamos assim:
>
> use Switch;
>
>
> switch($var){
>  case 'Carneirao' { say "Opa, sou eu!";}
>  case /Sbrebows/ {say "WTF";}
>  else { say "Nao sei o que quer dizer";}
> }
>
>
> #Mas, do Perl 5.10 em diante, o módulo Switch está com status
>  'deprecated', então use a primeira opção!
>
> 
>
>
> Agora sim! Para mais informações RTFM my friend!!!
>
>
> http://perldoc.perl.org/Switch.html
>
> http://perldoc.perl.org/perlsyn.html#Switch-Statements
>
>
> :-)
> Cheers!
>
>
>
>
> 2012/12/13 breno 
>
> 2012/12/12 Aureliano Guedes :
> > Ainda não tinha me aventurado nas novidades do Perl 5.16.
> >
> > o when eu entendi, mas o given não, alguem poderia me explicar o uso do
> > given??
> >
> > O break ja funciona no 5.16?? se sim, como???
> >
>
> given/when existe no Perl desde a versão 5.10, com direito a default,
> continue e break =)
>
> Pra saber como, dá uma olhada aqui ó:
>
> http://perldoc.perl.org/perlsyn.html#Switch-Statements
>
> tem tudo explicadinho, inclusive o fato de que given() é experimental
> - a forma recomendada de definir o tópico é com for().
>
> Boa diversão!
>
> []s
>
> -b
> ___
> Rio-pm mailing list
> Rio-pm@pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
>
>
>
> --
> André Garcia Carneiro
> Software Engineer
> (11)982907780
>
> ___
> 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://pacman.blog.br
___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-13 Thread Nilson Santos Figueiredo Jr.
2012/12/13 Tiago Peczenyj :
> por outro lado isto não é um switch/case como em C que vc precisa adicionar
> um break senão ele cai em todas as condições abaixo - e isso tem algumas
> utilidades bizarras.

Você pode dar "continue" dentro de um "when", aí ele vai fall through
para o próximo when.
Perl só fez algo inteligente: na maior parte dos casos, normalmente,
você *não* quer fall through - mas quando precisa, é só dar continue.

-Nilson
___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm


Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-13 Thread Ole Peter Smith
>
>
> Você pode dar "continue" dentro de um "when", aí ele vai fall through
> para o próximo when.
> Perl só fez algo inteligente: na maior parte dos casos, normalmente,
> você *não* quer fall through - mas quando precisa, é só dar continue.
>

Por isso Perl e a linguagem livre, nao 'deve' fazer, mas se sabe o que esta
fazendo you're free to do so...

0le

>
> -Nilson
> ___
> Rio-pm mailing list
> Rio-pm@pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
/
 ( O O )
=oOO==(_)==OOo=
Every day and every hour, I'm Learning more
  The more I Learn, the less I Know about before
 The Less I know, the more I want to Look around
 Diggin' deeper into Higher Ground...  UB40
   .oooO Oooo.
==( )=( )=
 \  ( )  /
  \_)   (_/
===
Ole Peter Smith, IME, UFG
http://olepeter.mat.ufg.br
 -
ole at mat.ufg.br
===
   Life sure is a Mystery to be Lived
  Not a Problem to be Solved
===
___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-13 Thread Stanislaw Pusep
Aureliano, o lexer do brainfuck utilizando given/when ficaria +/- assim:

#!/usr/bin/env perl
use 5.010;
use strict;
use warnings qw(all);

local ($|, $/) = (1, \1);

for my $instr () {
given ($instr) {
when ('>') { ... }
when ('<') { ... }
when ('+') { ... }
when ('-') { ... }
when ('.') { ... }
when (',') { ... }
when ('[') { ... }
when (']') { ... }
default { next }
}
}

__DATA__
+++
>+>>>>
><<<<<<[>[>>>>>>+>
+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++[-
<-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<<
-]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]
>[<<+>>[-]]<<<<<<<]>>>>>[+
+++.[-]]++<[->-<]>
.[-]<<
<<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<<
[-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]

Lição de casa: preencher os espaços dos '...' para que calcule e imprima
"1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89" (pq "Hello World!" é muito fácil,
rsss)

ABS()



2012/12/12 Aureliano Guedes 

>  Ainda não tinha me aventurado nas novidades do Perl 5.16.
>
> o when eu entendi, mas o given não, alguem poderia me explicar o uso do
> given??
>
> O break ja funciona no 5.16?? se sim, como???
>
> --
> From: creakt...@gmail.com
> Date: Wed, 12 Dec 2012 14:06:14 -0200
>
> To: rio-pm@pm.org
> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>
> As variáveis @loop e $s não afetam a lógica do seu programa.
> Isso é, a sua implementação das instruções de ciclo condicional, [ e ],
> está incompleta.
> Outra coisa, ao invés de usar if(){}elsif(){}, procure usar given/when,
> nesse caso seria mais apropriado.
> Por fim, o I/O do brainfuck é por caractere, então certifique-se de que o
> buffering de I/O do Perl esteja desligado e que <> retorne 1 caractere de
> cada vez: local ($|, $/) = (1, \1);
>
>  ABS()
>
>
>
> 2012/12/11 Aureliano Guedes 
>
>  Por isso é passatempo, é pra quem tem tempo. hahaha
>
> Valeu
>
> --
> From: renato.c...@gmail.com
> Date: Tue, 11 Dec 2012 21:45:03 -0200
>
> To: rio-pm@pm.org
> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>
> pow,
>
> se ninguem te ajudar até domingo, até domingo eu do uma olhada! haha #
> semtempo
>
> 2012/12/11 Aureliano Guedes 
>
>  Não so isso, deve ter algo mais.
>
> Mesmo trocando $p-- if ($i eq '>'); por  $p-- if ($i eq '<');.
>
> Os caracteres que saem são estranhos, não sai o que eu queria.
>
> --
> From: renato.c...@gmail.com
> Date: Tue, 11 Dec 2012 21:36:03 -0200
>
> To: rio-pm@pm.org
> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>
> não são essas linhas aqui?
>
>
>1. $p++ if ($i eq '>');
>2. $p-- if ($i eq '>');
>
>
> 2012/12/11 Aureliano Guedes 
>
>  ahsuahuhasuahsuah
>
> Da hora mesmo, quando terminar, quem sabe não faço algo do tipo.
>
> --
> From: creakt...@gmail.com
> Date: Tue, 11 Dec 2012 21:15:38 -0200
> To: rio-pm@pm.org
> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>
>
> Dahora, parabéns :D
> BTW, isso me lembrou de um "dialeto" do brainfuck, o trollscript:
> https://github.com/caius/trollscript
> Isso é um "hello world" em trollscript:
>
> Trooloolooloolooloolooloolooloolollolooloolooloolooloololoolooloolooloolooloolooloololooloololoooloolooloololloololoololooolooloolooloolooloololoolooolooloololooloololloololooloolooloolooloolooloolooloolooloolooloolololooolooloololooollollollollollolllooollollollollollollollollloolololooll
> É sério.
>
> ABS()
>
>
>
> 2012/12/11 Aureliano Guedes 
>
>  Ola monges,
>
> Estou desenvolvendo um novo brinquedo, como forma de passatempo mesmo, um
> interp

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-13 Thread Renato Santos
hmm, esse brainfuck é pra fibbo! (como se tivesse lido o codigo =p)

2012/12/13 Stanislaw Pusep 

> Aureliano, o lexer do brainfuck utilizando given/when ficaria +/- assim:
>
> #!/usr/bin/env perl
> use 5.010;
> use strict;
> use warnings qw(all);
>
> local ($|, $/) = (1, \1);
>
> for my $instr () {
> given ($instr) {
> when ('>') { ... }
> when ('<') { ... }
> when ('+') { ... }
> when ('-') { ... }
> when ('.') { ... }
> when (',') { ... }
> when ('[') { ... }
> when (']') { ... }
> default { next }
> }
> }
>
> __DATA__
> +++
> >+>>>>
> ><<<<<<[>[>>>>>>+>
> +<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++[-
> <-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<<
> -]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]
> >[<<+>>[-]]<<<<<<<]>>>>>[+
> +++.[-]]++<[->-<]>
> .[-]<<
> <<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<<
> [-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]
>
> Lição de casa: preencher os espaços dos '...' para que calcule e imprima
> "1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89" (pq "Hello World!" é muito fácil,
> rsss)
>
> ABS()
>
>
>
> 2012/12/12 Aureliano Guedes 
>
>>  Ainda não tinha me aventurado nas novidades do Perl 5.16.
>>
>> o when eu entendi, mas o given não, alguem poderia me explicar o uso do
>> given??
>>
>> O break ja funciona no 5.16?? se sim, como???
>>
>> --
>> From: creakt...@gmail.com
>> Date: Wed, 12 Dec 2012 14:06:14 -0200
>>
>> To: rio-pm@pm.org
>> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>>
>> As variáveis @loop e $s não afetam a lógica do seu programa.
>> Isso é, a sua implementação das instruções de ciclo condicional, [ e ],
>> está incompleta.
>> Outra coisa, ao invés de usar if(){}elsif(){}, procure usar given/when,
>> nesse caso seria mais apropriado.
>> Por fim, o I/O do brainfuck é por caractere, então certifique-se de que o
>> buffering de I/O do Perl esteja desligado e que <> retorne 1 caractere de
>> cada vez: local ($|, $/) = (1, \1);
>>
>>  ABS()
>>
>>
>>
>> 2012/12/11 Aureliano Guedes 
>>
>>  Por isso é passatempo, é pra quem tem tempo. hahaha
>>
>> Valeu
>>
>> --
>> From: renato.c...@gmail.com
>> Date: Tue, 11 Dec 2012 21:45:03 -0200
>>
>> To: rio-pm@pm.org
>> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>>
>> pow,
>>
>> se ninguem te ajudar até domingo, até domingo eu do uma olhada! haha #
>> semtempo
>>
>> 2012/12/11 Aureliano Guedes 
>>
>>  Não so isso, deve ter algo mais.
>>
>> Mesmo trocando $p-- if ($i eq '>'); por  $p-- if ($i eq '<');.
>>
>> Os caracteres que saem são estranhos, não sai o que eu queria.
>>
>> --
>> From: renato.c...@gmail.com
>> Date: Tue, 11 Dec 2012 21:36:03 -0200
>>
>> To: rio-pm@pm.org
>> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>>
>> não são essas linhas aqui?
>>
>>
>>1. $p++ if ($i eq '>');
>>2. $p-- if ($i eq '>');
>>
>>
>> 2012/12/11 Aureliano Guedes 
>>
>>  ahsuahuhasuahsuah
>>
>> Da hora mesmo, quando terminar, quem sabe não faço algo do tipo.
>>
>> --
>> From: creakt...@gmail.com
>> Date: Tue, 11 Dec 2012 21:15:38 -0200
>> To: rio-pm@pm.org
>> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>>
>>
>> Dahora, parabéns :D
>> BTW, isso me lembrou de um "dialeto" do br

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-13 Thread Tiago Peczenyj
IMHO poderiamos abordar um esquema TDD

Eu criaria algo como

my $ret = Parser::parser($code, $stdin, $stdout);

$ret deveria retornar sucesso em caso do code ser valido

$stdout deveria receber a string "hello world" se o codigo brainfuck para
hello world fosse introduzido

Usar o Test::More nesse caso seria bem interessante. Ainda mais se for
usado o Devel::Cover e analisado se o teste realmente exercitou todo o
codigo do parser.

os testes poderiam ser

ok( Parser::parser("", undef, undef),"um script vazio é um codigo valido");
ok( Parser::parser("comentario", undef, undef),"comentarios são qualquer
caracter fora aqueles 8");

para verificar se o stdin ou stdout foram lidos ou escritos, eu usaria o
Test::MockObject do chromatic. entretanto pode ficar um pouco complicado o
teste, talvez um IO::Handler de teste possa ser mais interessante.


2012/12/13 Stanislaw Pusep 

> Aureliano, o lexer do brainfuck utilizando given/when ficaria +/- assim:
>
> #!/usr/bin/env perl
> use 5.010;
> use strict;
> use warnings qw(all);
>
> local ($|, $/) = (1, \1);
>
> for my $instr () {
> given ($instr) {
> when ('>') { ... }
> when ('<') { ... }
> when ('+') { ... }
> when ('-') { ... }
> when ('.') { ... }
> when (',') { ... }
> when ('[') { ... }
> when (']') { ... }
> default { next }
> }
> }
>
> __DATA__
> +++
> >+>>>>
> ><<<<<<[>[>>>>>>+>
> +<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++[-
> <-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<<
> -]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]
> >[<<+>>[-]]<<<<<<<]>>>>>[+
> +++.[-]]++<[->-<]>
> .[-]<<
> <<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<<
> [-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]
>
> Lição de casa: preencher os espaços dos '...' para que calcule e imprima
> "1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89" (pq "Hello World!" é muito fácil,
> rsss)
>
> ABS()
>
>
>
> 2012/12/12 Aureliano Guedes 
>
>>  Ainda não tinha me aventurado nas novidades do Perl 5.16.
>>
>> o when eu entendi, mas o given não, alguem poderia me explicar o uso do
>> given??
>>
>> O break ja funciona no 5.16?? se sim, como???
>>
>> ------------------
>> From: creakt...@gmail.com
>> Date: Wed, 12 Dec 2012 14:06:14 -0200
>>
>> To: rio-pm@pm.org
>> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>>
>> As variáveis @loop e $s não afetam a lógica do seu programa.
>> Isso é, a sua implementação das instruções de ciclo condicional, [ e ],
>> está incompleta.
>> Outra coisa, ao invés de usar if(){}elsif(){}, procure usar given/when,
>> nesse caso seria mais apropriado.
>> Por fim, o I/O do brainfuck é por caractere, então certifique-se de que o
>> buffering de I/O do Perl esteja desligado e que <> retorne 1 caractere de
>> cada vez: local ($|, $/) = (1, \1);
>>
>>  ABS()
>>
>>
>>
>> 2012/12/11 Aureliano Guedes 
>>
>>  Por isso é passatempo, é pra quem tem tempo. hahaha
>>
>> Valeu
>>
>> --------------
>> From: renato.c...@gmail.com
>> Date: Tue, 11 Dec 2012 21:45:03 -0200
>>
>> To: rio-pm@pm.org
>> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>>
>> pow,
>>
>> se ninguem te ajudar até domingo, até domingo eu do uma olhada! haha #
>> semtempo
>>
>> 2012/12/11 Aureliano Guedes 
>>
>>  Não so isso, deve ter algo mais.
>>
>> Mesmo trocando $p-- if ($i eq '>'); por  $p-- if ($i eq '<');.
>>
>> Os caracteres que saem são estranhos, não sai o que eu queria.
>>
>> --
>> From: renato.c...@gmail.com
>> Date: Tue, 11 Dec 20

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-13 Thread Renato Santos
Procura no perldoc a função alarm

--
Renato Cron

Sent from Samsung Mobile Phone
Em 13/12/2012 20:18, "Aureliano Guedes"  escreveu:

>  Bom, estou em duvidas quanto ao que fazer no loop, como indicar que [
> inicia e ] termina o loop.
>
> ate agora, preencehndo o dever de casa
>
> #!/usr/bin/env perl
> use 5.010;
> use strict;
> use warnings qw(all);
>
> local ($|, $/) = (1, \1);
>
> my $p = 0;
> my $lim = 5000;
> my @a = (1..$lim);
>
> for my $instr () {
> given ($instr) {
> when ('>') {$p++;}
> when ('<') {$p--}
> when ('+') {$a[$p]++;}
> when ('-') {$a[$p]--;}
> when ('.') {print chr $a[$p];}
> when (',') {
> chomp (my $in = <>);
> $a[$p] = ord(substr($in,0,1));}
> when ('[') { ... }
> when (']') { ... }
> default { next }
> }
> }
> __DATA__
> +++
> >+>>>>
> ><<<<<<[>[>>>>>>+>
> +<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++[-
> <-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<<
> -]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]
> >[<<+>>[-]]<<<<<<<]>>>>>[+
> +++.[-]]++<[->-<]>
> .[-]<<
> <<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<<
> [-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]
>
> So mais uma perguntinha boba: Alguem sabe como colocar um limite de tempo
> no STDIN?
>
> Exemplo, eu tenho :
>
> my $input = <>;
> if ($input == undef){
> ...
> }
> else{
> ...
> }
>
> Exemplo, input so tem 10 segundo para receber a entrada ou fica indefinido.
> Vi algo como:
> http://www.perlmonks.org/index.pl?abspart=1;displaytype=displaycode;node_id=282330;part=1
>
> Mas o que digito não aparece no monitor na hora que digito.
>
> --
> From: tiago.pecze...@gmail.com
> Date: Thu, 13 Dec 2012 15:55:28 -0200
> To: rio-pm@pm.org
> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>
> IMHO poderiamos abordar um esquema TDD
>
> Eu criaria algo como
>
> my $ret = Parser::parser($code, $stdin, $stdout);
>
> $ret deveria retornar sucesso em caso do code ser valido
>
> $stdout deveria receber a string "hello world" se o codigo brainfuck para
> hello world fosse introduzido
>
> Usar o Test::More nesse caso seria bem interessante. Ainda mais se for
> usado o Devel::Cover e analisado se o teste realmente exercitou todo o
> codigo do parser.
>
> os testes poderiam ser
>
> ok( Parser::parser("", undef, undef),"um script vazio é um codigo valido");
> ok( Parser::parser("comentario", undef, undef),"comentarios são qualquer
> caracter fora aqueles 8");
>
> para verificar se o stdin ou stdout foram lidos ou escritos, eu usaria o
> Test::MockObject do chromatic. entretanto pode ficar um pouco complicado o
> teste, talvez um IO::Handler de teste possa ser mais interessante.
>
>
> 2012/12/13 Stanislaw Pusep 
>
> Aureliano, o lexer do brainfuck utilizando given/when ficaria +/- assim:
>
> #!/usr/bin/env perl
> use 5.010;
> use strict;
> use warnings qw(all);
>
> local ($|, $/) = (1, \1);
>
> for my $instr () {
> given ($instr) {
> when ('>') { ... }
> when ('<') { ... }
> when ('+') { ... }
> when ('-') { ... }
> when ('.') { ... }
> when (',') { ... }
> when ('[') { ... }
> when (']') { ... }
> default { next }
> }
> }
>
> __DATA__
> +++
> >+>>>>
> ><<<<<<[>[>>>>>>+>
> +<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++[-
> &

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-13 Thread Tiago Peczenyj
olha.. o brainfuck bloqueia enquanto está lendo. pq quer mudar o
funcionamento do mesmo?

uma solução eh non blocking i/o usando IO::Select
Em 13/12/2012 20:18, "Aureliano Guedes"  escreveu:

>  Bom, estou em duvidas quanto ao que fazer no loop, como indicar que [
> inicia e ] termina o loop.
>
> ate agora, preencehndo o dever de casa
>
> #!/usr/bin/env perl
> use 5.010;
> use strict;
> use warnings qw(all);
>
> local ($|, $/) = (1, \1);
>
> my $p = 0;
> my $lim = 5000;
> my @a = (1..$lim);
>
> for my $instr () {
> given ($instr) {
> when ('>') {$p++;}
> when ('<') {$p--}
> when ('+') {$a[$p]++;}
> when ('-') {$a[$p]--;}
> when ('.') {print chr $a[$p];}
> when (',') {
> chomp (my $in = <>);
> $a[$p] = ord(substr($in,0,1));}
> when ('[') { ... }
> when (']') { ... }
> default { next }
> }
> }
> __DATA__
> +++
> >+>>>>
> ><<<<<<[>[>>>>>>+>
> +<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++[-
> <-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<<
> -]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]
> >[<<+>>[-]]<<<<<<<]>>>>>[+
> +++.[-]]++<[->-<]>
> .[-]<<
> <<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<<
> [-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]
>
> So mais uma perguntinha boba: Alguem sabe como colocar um limite de tempo
> no STDIN?
>
> Exemplo, eu tenho :
>
> my $input = <>;
> if ($input == undef){
> ...
> }
> else{
> ...
> }
>
> Exemplo, input so tem 10 segundo para receber a entrada ou fica indefinido.
> Vi algo como:
> http://www.perlmonks.org/index.pl?abspart=1;displaytype=displaycode;node_id=282330;part=1
>
> Mas o que digito não aparece no monitor na hora que digito.
>
> --
> From: tiago.pecze...@gmail.com
> Date: Thu, 13 Dec 2012 15:55:28 -0200
> To: rio-pm@pm.org
> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>
> IMHO poderiamos abordar um esquema TDD
>
> Eu criaria algo como
>
> my $ret = Parser::parser($code, $stdin, $stdout);
>
> $ret deveria retornar sucesso em caso do code ser valido
>
> $stdout deveria receber a string "hello world" se o codigo brainfuck para
> hello world fosse introduzido
>
> Usar o Test::More nesse caso seria bem interessante. Ainda mais se for
> usado o Devel::Cover e analisado se o teste realmente exercitou todo o
> codigo do parser.
>
> os testes poderiam ser
>
> ok( Parser::parser("", undef, undef),"um script vazio é um codigo valido");
> ok( Parser::parser("comentario", undef, undef),"comentarios são qualquer
> caracter fora aqueles 8");
>
> para verificar se o stdin ou stdout foram lidos ou escritos, eu usaria o
> Test::MockObject do chromatic. entretanto pode ficar um pouco complicado o
> teste, talvez um IO::Handler de teste possa ser mais interessante.
>
>
> 2012/12/13 Stanislaw Pusep 
>
> Aureliano, o lexer do brainfuck utilizando given/when ficaria +/- assim:
>
> #!/usr/bin/env perl
> use 5.010;
> use strict;
> use warnings qw(all);
>
> local ($|, $/) = (1, \1);
>
> for my $instr () {
> given ($instr) {
> when ('>') { ... }
> when ('<') { ... }
> when ('+') { ... }
> when ('-') { ... }
> when ('.') { ... }
> when (',') { ... }
> when ('[') { ... }
> when (']') { ... }
> default { next }
> }
> }
>
> __DATA__
> +++
> >+>>>>
> ><<<<<<[>[>>>>>>+>
> +<<<<<<<-]>>>>>>>[<<<<<<<+&

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-13 Thread Tiago Peczenyj
faça os testes para casos como

[[]] [[][]] [[[][]][]]

e depois implemente. vc precisa validar se não está desbalanceado o [ e  ]

btw eu identificaria os pontos p retornar
Em 13/12/2012 20:18, "Aureliano Guedes"  escreveu:

>  Bom, estou em duvidas quanto ao que fazer no loop, como indicar que [
> inicia e ] termina o loop.
>
> ate agora, preencehndo o dever de casa
>
> #!/usr/bin/env perl
> use 5.010;
> use strict;
> use warnings qw(all);
>
> local ($|, $/) = (1, \1);
>
> my $p = 0;
> my $lim = 5000;
> my @a = (1..$lim);
>
> for my $instr () {
> given ($instr) {
> when ('>') {$p++;}
> when ('<') {$p--}
> when ('+') {$a[$p]++;}
> when ('-') {$a[$p]--;}
> when ('.') {print chr $a[$p];}
> when (',') {
> chomp (my $in = <>);
> $a[$p] = ord(substr($in,0,1));}
> when ('[') { ... }
> when (']') { ... }
> default { next }
> }
> }
> __DATA__
> +++
> >+>>>>
> ><<<<<<[>[>>>>>>+>
> +<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++[-
> <-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<<
> -]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]
> >[<<+>>[-]]<<<<<<<]>>>>>[+
> +++.[-]]++<[->-<]>
> .[-]<<
> <<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<<
> [-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]
>
> So mais uma perguntinha boba: Alguem sabe como colocar um limite de tempo
> no STDIN?
>
> Exemplo, eu tenho :
>
> my $input = <>;
> if ($input == undef){
> ...
> }
> else{
> ...
> }
>
> Exemplo, input so tem 10 segundo para receber a entrada ou fica indefinido.
> Vi algo como:
> http://www.perlmonks.org/index.pl?abspart=1;displaytype=displaycode;node_id=282330;part=1
>
> Mas o que digito não aparece no monitor na hora que digito.
>
> --
> From: tiago.pecze...@gmail.com
> Date: Thu, 13 Dec 2012 15:55:28 -0200
> To: rio-pm@pm.org
> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>
> IMHO poderiamos abordar um esquema TDD
>
> Eu criaria algo como
>
> my $ret = Parser::parser($code, $stdin, $stdout);
>
> $ret deveria retornar sucesso em caso do code ser valido
>
> $stdout deveria receber a string "hello world" se o codigo brainfuck para
> hello world fosse introduzido
>
> Usar o Test::More nesse caso seria bem interessante. Ainda mais se for
> usado o Devel::Cover e analisado se o teste realmente exercitou todo o
> codigo do parser.
>
> os testes poderiam ser
>
> ok( Parser::parser("", undef, undef),"um script vazio é um codigo valido");
> ok( Parser::parser("comentario", undef, undef),"comentarios são qualquer
> caracter fora aqueles 8");
>
> para verificar se o stdin ou stdout foram lidos ou escritos, eu usaria o
> Test::MockObject do chromatic. entretanto pode ficar um pouco complicado o
> teste, talvez um IO::Handler de teste possa ser mais interessante.
>
>
> 2012/12/13 Stanislaw Pusep 
>
> Aureliano, o lexer do brainfuck utilizando given/when ficaria +/- assim:
>
> #!/usr/bin/env perl
> use 5.010;
> use strict;
> use warnings qw(all);
>
> local ($|, $/) = (1, \1);
>
> for my $instr () {
> given ($instr) {
> when ('>') { ... }
> when ('<') { ... }
> when ('+') { ... }
> when ('-') { ... }
> when ('.') { ... }
> when (',') { ... }
> when ('[') { ... }
> when (']') { ... }
> default { next }
> }
> }
>
> __DATA__
> +++
> >+>>>>
> ><<<<<<[>[>>>>>>+>
> +<<<<<<<-]>>>>>>&g

Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck

2012-12-13 Thread Tiago Peczenyj
alarm não vai resolver.
Em 13/12/2012 20:23, "Renato Santos"  escreveu:

> Procura no perldoc a função alarm
>
> --
> Renato Cron
>
> Sent from Samsung Mobile Phone
> Em 13/12/2012 20:18, "Aureliano Guedes" 
> escreveu:
>
>>  Bom, estou em duvidas quanto ao que fazer no loop, como indicar que [
>> inicia e ] termina o loop.
>>
>> ate agora, preencehndo o dever de casa
>>
>> #!/usr/bin/env perl
>> use 5.010;
>> use strict;
>> use warnings qw(all);
>>
>> local ($|, $/) = (1, \1);
>>
>> my $p = 0;
>> my $lim = 5000;
>> my @a = (1..$lim);
>>
>> for my $instr () {
>> given ($instr) {
>> when ('>') {$p++;}
>> when ('<') {$p--}
>> when ('+') {$a[$p]++;}
>> when ('-') {$a[$p]--;}
>> when ('.') {print chr $a[$p];}
>> when (',') {
>> chomp (my $in = <>);
>> $a[$p] = ord(substr($in,0,1));}
>> when ('[') { ... }
>> when (']') { ... }
>> default { next }
>> }
>> }
>> __DATA__
>> +++
>> >+>>>>
>> ><<<<<<[>[>>>>>>+>
>> +<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++[-
>> <-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<<
>> -]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]
>> >[<<+>>[-]]<<<<<<<]>>>>>[+
>> +++.[-]]++<[->-<]>
>> ++++++++++++++++++++++++.[-]<<
>> <<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<<
>> [-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]
>>
>> So mais uma perguntinha boba: Alguem sabe como colocar um limite de tempo
>> no STDIN?
>>
>> Exemplo, eu tenho :
>>
>> my $input = <>;
>> if ($input == undef){
>> ...
>> }
>> else{
>> ...
>> }
>>
>> Exemplo, input so tem 10 segundo para receber a entrada ou fica
>> indefinido.
>> Vi algo como:
>> http://www.perlmonks.org/index.pl?abspart=1;displaytype=displaycode;node_id=282330;part=1
>>
>> Mas o que digito não aparece no monitor na hora que digito.
>>
>> --
>> From: tiago.pecze...@gmail.com
>> Date: Thu, 13 Dec 2012 15:55:28 -0200
>> To: rio-pm@pm.org
>> Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
>>
>> IMHO poderiamos abordar um esquema TDD
>>
>> Eu criaria algo como
>>
>> my $ret = Parser::parser($code, $stdin, $stdout);
>>
>> $ret deveria retornar sucesso em caso do code ser valido
>>
>> $stdout deveria receber a string "hello world" se o codigo brainfuck para
>> hello world fosse introduzido
>>
>> Usar o Test::More nesse caso seria bem interessante. Ainda mais se for
>> usado o Devel::Cover e analisado se o teste realmente exercitou todo o
>> codigo do parser.
>>
>> os testes poderiam ser
>>
>> ok( Parser::parser("", undef, undef),"um script vazio é um codigo
>> valido");
>> ok( Parser::parser("comentario", undef, undef),"comentarios são qualquer
>> caracter fora aqueles 8");
>>
>> para verificar se o stdin ou stdout foram lidos ou escritos, eu usaria o
>> Test::MockObject do chromatic. entretanto pode ficar um pouco complicado o
>> teste, talvez um IO::Handler de teste possa ser mais interessante.
>>
>>
>> 2012/12/13 Stanislaw Pusep 
>>
>> Aureliano, o lexer do brainfuck utilizando given/when ficaria +/- assim:
>>
>> #!/usr/bin/env perl
>> use 5.010;
>> use strict;
>> use warnings qw(all);
>>
>> local ($|, $/) = (1, \1);
>>
>> for my $instr () {
>> given ($instr) {
>> when ('>') { ... }
>> when ('<') { ... }
>> when ('+') { ... }
>> when (&#