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

2012-12-13 Por tôpico 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,

code
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!

/code


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 br...@rio.pm.org

 2012/12/12 Aureliano Guedes guedes_1...@hotmail.com:
  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 Por tôpico 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 andregarciacarne...@gmail.com
Para: Perl Mongers Rio de Janeiro rio-pm@pm.org 
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,

code
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!

/code



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 br...@rio.pm.org

2012/12/12 Aureliano Guedes guedes_1...@hotmail.com:

 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 Por tôpico Nilson Santos Figueiredo Jr.
2012/12/13 Tiago Peczenyj tiago.pecze...@gmail.com:
 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 Por tôpico 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.brhttp://www.mat.ufg.br/docentes/olepeter
 -
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 Por tôpico 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 (DATA) {
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 guedes_1...@hotmail.com

  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 guedes_1...@hotmail.com

  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 guedes_1...@hotmail.com

  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 guedes_1...@hotmail.com

  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 guedes_1...@hotmail.com

  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


 

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

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

2012/12/13 Stanislaw Pusep creakt...@gmail.com

 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 (DATA) {
 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 guedes_1...@hotmail.com

  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 guedes_1...@hotmail.com

  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 guedes_1...@hotmail.com

  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 guedes_1...@hotmail.com

  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 guedes_1...@hotmail.com

  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
 

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

2012-12-13 Por tôpico 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 creakt...@gmail.com

 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 (DATA) {
 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 guedes_1...@hotmail.com

  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 guedes_1...@hotmail.com

  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 guedes_1...@hotmail.com

  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 guedes_1...@hotmail.com

  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 guedes_1...@hotmail.com

  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:


 

Re: [Rio-pm] ES 13/dez · Hackathon 15/dez

2012-12-13 Por tôpico Tiago Peczenyj
Putz HD era o que eu mais queria. até pq nunca fui.

mas essa semana ta complicada como todas as outras :(
___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

Re: [Rio-pm] ES 13/dez · Hackathon 15/dez

2012-12-13 Por tôpico Marco A P D'Andrade
Cara...

Se deixar a semana complicada te impedir aparecer... vai fazer como eu, e
esperar por 5 anos uma oportunidade de voltar a aparecer!!!

Decide... e aparece ;)


Sds,
Marco Antonio

Em 13 de dezembro de 2012 17:13, Tiago Peczenyj
tiago.pecze...@gmail.comescreveu:

 Putz HD era o que eu mais queria. até pq nunca fui.

 mas essa semana ta complicada como todas as outras :(

 ___
 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] ES 13/dez · Hackathon 15/dez

2012-12-13 Por tôpico Eduardo Maia
Estou no momento na Rua Mariz e Barros, próximo à Radial, principal ponto
de acesso à Rua Ceará, onde fica o Heavy Duty.

Aqui escureceu bastante, ventou horrores, rolaram altas trovoadas, e
parecia que ia cair o mundo. E caiu, durante uns 5 minutos. Agora cai uma
pequena garoa, o tempo já está abrindo (voltei a ver o Cristo Redentor pela
janela), e já vejo pessoas andando na rua sem guarda chuva. Tudo indica que
foi uma pancada de verão.

Marco, tive a mesma sensação que você, e pensei em escrever ao grupo
sugerindo cancelar o encontro por conta do tempo. Mas a mudança no tempo
mudou minha opinião.

Além disso, as obras na Praça da Bandeira modificaram bastante a região,
que não inunda mais como antes.

Bom, vocês que sabem, preferem cancelar este ES e marcamos um ESX na
próxima semana? Não vejo necessidade, mas também não quero ficar bebendo
sozinho no HD...

Abs


2012/12/13 Marco A P D'Andrade mda...@gmail.com

 Cara...

 Se deixar a semana complicada te impedir aparecer... vai fazer como eu, e
 esperar por 5 anos uma oportunidade de voltar a aparecer!!!

 Decide... e aparece ;)


 Sds,
 Marco Antonio

 Em 13 de dezembro de 2012 17:13, Tiago Peczenyj 
 tiago.pecze...@gmail.comescreveu:

 Putz HD era o que eu mais queria. até pq nunca fui.

 mas essa semana ta complicada como todas as outras :(

 ___
 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] ES 13/dez · Hackathon 15/dez

2012-12-13 Por tôpico Marco A P D'Andrade
Galera!!!

EU VOU !!!


Passou a NUVEM DE CHUVA  :D

Nos vemos lá 


Marco Antonio



Em 13 de dezembro de 2012 17:30, Eduardo Maia m...@eduardomaia.comescreveu:

 Estou no momento na Rua Mariz e Barros, próximo à Radial, principal ponto
 de acesso à Rua Ceará, onde fica o Heavy Duty.

 Aqui escureceu bastante, ventou horrores, rolaram altas trovoadas, e
 parecia que ia cair o mundo. E caiu, durante uns 5 minutos. Agora cai uma
 pequena garoa, o tempo já está abrindo (voltei a ver o Cristo Redentor pela
 janela), e já vejo pessoas andando na rua sem guarda chuva. Tudo indica que
 foi uma pancada de verão.

 Marco, tive a mesma sensação que você, e pensei em escrever ao grupo
 sugerindo cancelar o encontro por conta do tempo. Mas a mudança no tempo
 mudou minha opinião.

 Além disso, as obras na Praça da Bandeira modificaram bastante a região,
 que não inunda mais como antes.

 Bom, vocês que sabem, preferem cancelar este ES e marcamos um ESX na
 próxima semana? Não vejo necessidade, mas também não quero ficar bebendo
 sozinho no HD...

 Abs



 2012/12/13 Marco A P D'Andrade mda...@gmail.com

 Cara...

 Se deixar a semana complicada te impedir aparecer... vai fazer como eu, e
 esperar por 5 anos uma oportunidade de voltar a aparecer!!!

 Decide... e aparece ;)


 Sds,
 Marco Antonio

 Em 13 de dezembro de 2012 17:13, Tiago Peczenyj tiago.pecze...@gmail.com
  escreveu:

 Putz HD era o que eu mais queria. até pq nunca fui.

 mas essa semana ta complicada como todas as outras :(

 ___
 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] ES 13/dez · Hackathon 15/dez

2012-12-13 Por tôpico Eduardo Maia
É, aqui na Pça da Bandeira a chuva parou em 100%, já rola um céu claro e um
Cristo Redentor de fora.

Foi só um Teaser Trailler para o dia 21 ;)

Vejo vocês lá, chego por volta de 19:30hs.

Abs


2012/12/13 Marco A P D'Andrade mda...@gmail.com

 Galera!!!

 EU VOU !!!


 Passou a NUVEM DE CHUVA  :D

 Nos vemos lá 


 Marco Antonio



 Em 13 de dezembro de 2012 17:30, Eduardo Maia m...@eduardomaia.comescreveu:

 Estou no momento na Rua Mariz e Barros, próximo à Radial, principal ponto
 de acesso à Rua Ceará, onde fica o Heavy Duty.

 Aqui escureceu bastante, ventou horrores, rolaram altas trovoadas, e
 parecia que ia cair o mundo. E caiu, durante uns 5 minutos. Agora cai uma
 pequena garoa, o tempo já está abrindo (voltei a ver o Cristo Redentor pela
 janela), e já vejo pessoas andando na rua sem guarda chuva. Tudo indica que
 foi uma pancada de verão.

 Marco, tive a mesma sensação que você, e pensei em escrever ao grupo
 sugerindo cancelar o encontro por conta do tempo. Mas a mudança no tempo
 mudou minha opinião.

 Além disso, as obras na Praça da Bandeira modificaram bastante a região,
 que não inunda mais como antes.

 Bom, vocês que sabem, preferem cancelar este ES e marcamos um ESX na
 próxima semana? Não vejo necessidade, mas também não quero ficar bebendo
 sozinho no HD...

 Abs



 2012/12/13 Marco A P D'Andrade mda...@gmail.com

 Cara...

 Se deixar a semana complicada te impedir aparecer... vai fazer como eu,
 e esperar por 5 anos uma oportunidade de voltar a aparecer!!!

 Decide... e aparece ;)


 Sds,
 Marco Antonio

 Em 13 de dezembro de 2012 17:13, Tiago Peczenyj 
 tiago.pecze...@gmail.com escreveu:

 Putz HD era o que eu mais queria. até pq nunca fui.

 mas essa semana ta complicada como todas as outras :(

 ___
 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

Re: [Rio-pm] ES 13/dez · Hackathon 15/dez

2012-12-13 Por tôpico Nuba Princigalli
Opa! Quanto reply na thread!

Gostei de ver os rollbacks nas desistências! rsrs

Saindo do Botafogo agora! Até daqui a pouco! Fui!



On Thu, Dec 13, 2012, at 06:22 PM, Eduardo Maia wrote:

É, aqui na Pça da Bandeira a chuva parou em 100%, já rola um céu claro
e um Cristo Redentor de fora.



Foi só um Teaser Trailler para o dia 21 ;)



Vejo vocês lá, chego por volta de 19:30hs.



Abs





2012/12/13 Marco A P D'Andrade [1]mda...@gmail.com

Galera!!!



EU VOU !!!





Passou a NUVEM DE CHUVA  :D



Nos vemos lá 





Marco Antonio





Em 13 de dezembro de 2012 17:30, Eduardo Maia [2]m...@eduardomaia.com
escreveu:

Estou no momento na Rua Mariz e Barros, próximo à Radial, principal
ponto de acesso à Rua Ceará, onde fica o Heavy Duty.



Aqui escureceu bastante, ventou horrores, rolaram altas trovoadas, e
parecia que ia cair o mundo. E caiu, durante uns 5 minutos. Agora cai
uma pequena garoa, o tempo já está abrindo (voltei a ver o Cristo
Redentor pela janela), e já vejo pessoas andando na rua sem guarda
chuva. Tudo indica que foi uma pancada de verão.



Marco, tive a mesma sensação que você, e pensei em escrever ao grupo
sugerindo cancelar o encontro por conta do tempo. Mas a mudança no
tempo mudou minha opinião.



Além disso, as obras na Praça da Bandeira modificaram bastante a
região, que não inunda mais como antes.



Bom, vocês que sabem, preferem cancelar este ES e marcamos um ESX na
próxima semana? Não vejo necessidade, mas também não quero ficar
bebendo sozinho no HD...



Abs




2012/12/13 Marco A P D'Andrade [3]mda...@gmail.com

Cara...



Se deixar a semana complicada te impedir aparecer... vai fazer como eu,
e esperar por 5 anos uma oportunidade de voltar a aparecer!!!



Decide... e aparece ;)





Sds,

Marco Antonio

Em 13 de dezembro de 2012 17:13, Tiago Peczenyj
[4]tiago.pecze...@gmail.com escreveu:

Putz HD era o que eu mais queria. até pq nunca fui.

mas essa semana ta complicada como todas as outras :(

___

Rio-pm mailing list

[5]Rio-pm@pm.org

[6]http://mail.pm.org/mailman/listinfo/rio-pm



___

Rio-pm mailing list

[7]Rio-pm@pm.org

[8]http://mail.pm.org/mailman/listinfo/rio-pm



___

Rio-pm mailing list

[9]Rio-pm@pm.org

[10]http://mail.pm.org/mailman/listinfo/rio-pm



___

Rio-pm mailing list

[11]Rio-pm@pm.org

[12]http://mail.pm.org/mailman/listinfo/rio-pm



___

Rio-pm mailing list

[13]Rio-pm@pm.org

[14]http://mail.pm.org/mailman/listinfo/rio-pm



--

Nuba R. Princigalli n...@pauleira.com http://pauleira.com @nprincigalli

Discipline is not an end in itself, just a means to an end. - King
Crimson

References

1. mailto:mda...@gmail.com
2. mailto:m...@eduardomaia.com
3. mailto:mda...@gmail.com
4. mailto:tiago.pecze...@gmail.com
5. mailto:Rio-pm@pm.org
6. http://mail.pm.org/mailman/listinfo/rio-pm
7. mailto:Rio-pm@pm.org
8. http://mail.pm.org/mailman/listinfo/rio-pm
9. mailto:Rio-pm@pm.org
  10. http://mail.pm.org/mailman/listinfo/rio-pm
  11. mailto:Rio-pm@pm.org
  12. http://mail.pm.org/mailman/listinfo/rio-pm
  13. mailto:Rio-pm@pm.org
  14. 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 Por tôpico Renato Santos
Procura no perldoc a função alarm

--
Renato Cron

Sent from Samsung Mobile Phone
Em 13/12/2012 20:18, Aureliano Guedes guedes_1...@hotmail.com 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 (DATA) {
 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 creakt...@gmail.com

 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 (DATA) {
 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 guedes_1...@hotmail.com

  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 guedes_1...@hotmail.com

  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 

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

2012-12-13 Por tôpico 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 guedes_1...@hotmail.com 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 (DATA) {
 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 creakt...@gmail.com

 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 (DATA) {
 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 guedes_1...@hotmail.com

  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 guedes_1...@hotmail.com

  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 

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

2012-12-13 Por tôpico Tiago Peczenyj
alarm não vai resolver.
Em 13/12/2012 20:23, Renato Santos renato.c...@gmail.com escreveu:

 Procura no perldoc a função alarm

 --
 Renato Cron

 Sent from Samsung Mobile Phone
 Em 13/12/2012 20:18, Aureliano Guedes guedes_1...@hotmail.com
 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 (DATA) {
 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 creakt...@gmail.com

 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 (DATA) {
 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 guedes_1...@hotmail.com

  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 guedes_1...@hotmail.com

  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,

Re: [Rio-pm] ES 13/dez · Hackathon 15/dez

2012-12-13 Por tôpico Garu
Galera, esqueci minha mochila na HD... Alguém pegou?

(enviado do celular)

Em 13/12/2012, às 19:06, Nuba Princigalli n...@fastmail.fm escreveu:

 Opa! Quanto reply na thread!
 Gostei de ver os rollbacks nas desistências! rsrs
 Saindo do Botafogo agora! Até daqui a pouco! Fui!
  
 On Thu, Dec 13, 2012, at 06:22 PM, Eduardo Maia wrote:
 É, aqui na Pça da Bandeira a chuva parou em 100%, já rola um céu claro e um 
 Cristo Redentor de fora.
  
 Foi só um Teaser Trailler para o dia 21 ;)
  
 Vejo vocês lá, chego por volta de 19:30hs.
  
 Abs
  
  
 2012/12/13 Marco A P D'Andrade mda...@gmail.com
 Galera!!!
  
 EU VOU !!!
  
  
 Passou a NUVEM DE CHUVA  :D
  
 Nos vemos lá 
  
  
 Marco Antonio
  
  
  
 Em 13 de dezembro de 2012 17:30, Eduardo Maia m...@eduardomaia.com 
 escreveu:
 Estou no momento na Rua Mariz e Barros, próximo à Radial, principal ponto 
 de acesso à Rua Ceará, onde fica o Heavy Duty.
  
 Aqui escureceu bastante, ventou horrores, rolaram altas trovoadas, e 
 parecia que ia cair o mundo. E caiu, durante uns 5 minutos. Agora cai uma 
 pequena garoa, o tempo já está abrindo (voltei a ver o Cristo Redentor 
 pela janela), e já vejo pessoas andando na rua sem guarda chuva. Tudo 
 indica que foi uma pancada de verão.
  
 Marco, tive a mesma sensação que você, e pensei em escrever ao grupo 
 sugerindo cancelar o encontro por conta do tempo. Mas a mudança no tempo 
 mudou minha opinião.
  
 Além disso, as obras na Praça da Bandeira modificaram bastante a região, 
 que não inunda mais como antes.
  
 Bom, vocês que sabem, preferem cancelar este ES e marcamos um ESX na 
 próxima semana? Não vejo necessidade, mas também não quero ficar bebendo 
 sozinho no HD...
  
 Abs
  
  
  
 2012/12/13 Marco A P D'Andrade mda...@gmail.com
 Cara...
  
 Se deixar a semana complicada te impedir aparecer... vai fazer como eu, e 
 esperar por 5 anos uma oportunidade de voltar a aparecer!!!
  
 Decide... e aparece ;)
  
  
 Sds,
 Marco Antonio
  
 Em 13 de dezembro de 2012 17:13, Tiago Peczenyj 
 tiago.pecze...@gmail.com escreveu:
 Putz HD era o que eu mais queria. até pq nunca fui.
  
 mas essa semana ta complicada como todas as outras :(
 ___
 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
  
 -- 
 Nuba R. Princigalli n...@pauleira.com http://pauleira.com @nprincigalli
 Discipline is not an end in itself, just a means to an end. - King Crimson
 ___
 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