<div>Aureliano, o lexer do brainfuck utilizando given/when ficaria +/- assim:</div><div><br></div><div>#!/usr/bin/env perl</div><div>use 5.010;</div><div>use strict;</div><div>use warnings qw(all);</div><div><br></div><div>

local ($|, $/) = (1, \1);</div><div><br></div><div>for my $instr (<DATA>) {</div><div>    given ($instr) {</div><div>        when ('>') { ... }</div><div>        when ('<') { ... }</div><div>        when ('+') { ... }</div>

<div>        when ('-') { ... }</div><div>        when ('.') { ... }</div><div>        when (',') { ... }</div><div>        when ('[') { ... }</div><div>        when (']') { ... }</div>

<div>        default { next }</div><div>    }</div><div>}</div><div><br></div><div>__DATA__</div><div>+++++++++++</div><div><div>>+>>>>++++++++++++++++++++++++++++++++++++++++++++</div><div>>++++++++++++++++++++++++++++++++<<<<<<[>[>>>>>>+></div>

<div>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>>>-]<[>++++++++++[-</div><div><-[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]>[<<[>>>+<<<</div>

<div>-]>>[-]]<<]>>>[>>+>+<<<-]>>>[<<<+>>>-]+<[>[-]<[-]]</div><div>>[<<+>>[-]]<<<<<<<]>>>>>[+++++++++++++++++++++++++</div>

<div>+++++++++++++++++++++++.[-]]++++++++++<[->-<]>++++</div><div>++++++++++++++++++++++++++++++++++++++++++++.[-]<<</div><div><<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<<</div>

<div>[-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-]</div></div><div><br></div><div>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)</div>

<div><br>ABS()<br></div><br>
<br><br><div class="gmail_quote">2012/12/12 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div><div dir="ltr">
Ainda não tinha me aventurado nas novidades do Perl 5.16.<br><br>o when eu entendi, mas o given não, alguem poderia me explicar o uso do given??<br><br>O break ja funciona no 5.16?? se sim, como???<br><br><div><div></div>

<hr>From: <a href="mailto:creaktive@gmail.com" target="_blank">creaktive@gmail.com</a><br>Date: Wed, 12 Dec 2012 14:06:14 -0200<div><div class="h5"><br>To: <a href="mailto:rio-pm@pm.org" target="_blank">rio-pm@pm.org</a><br>

Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck<br><br>As variáveis @loop e $s não afetam a lógica do seu programa.<div>Isso é, a sua implementação das instruções de ciclo condicional, [ e ], está incompleta.</div>

<div>Outra coisa, ao invés de usar if(){}elsif(){}, procure usar given/when, nesse caso seria mais apropriado.</div>

<div>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);</div><div><div><br></div>


<div>
ABS()<br></div><br>
<br><br><div>2012/12/11 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span><br><blockquote style="border-left:1px #ccc solid;padding-left:1ex">






<div><div dir="ltr">
Por isso é passatempo, é pra quem tem tempo. hahaha<br><br>Valeu<br><br><div><div></div><hr>From: <a href="mailto:renato.cron@gmail.com" target="_blank">renato.cron@gmail.com</a><br>Date: Tue, 11 Dec 2012 21:45:03 -0200<div>



<div><br>To: <a href="mailto:rio-pm@pm.org" target="_blank">rio-pm@pm.org</a><br>Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck<br><br>pow, <div><br></div><div>se ninguem te ajudar até domingo, até domingo eu do uma olhada! haha #<span style="color:rgb(34,34,34);font-size:18px;font-family:arial,sans-serif">semtemp</span><span style="color:rgb(34,34,34);font-size:18px;font-family:arial,sans-serif">o</span><br>





<br><div>2012/12/11 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span><br><blockquote style="border-left:1px #ccc solid;padding-left:1ex">








<div><div dir="ltr">
Não so isso, deve ter algo mais.<br><br>Mesmo trocando <font style="font-size:8pt" color="#ACACAC" face="Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,monospace,serif" size="1"><span style="font-size:12px;background-color:#f8f8f8"><font color="black"><span style="background-color:white"><font color="blue">$p</font><font color="#339933">--</font> <font color="#B1B100">if</font> <font color="#009900">(</font><font color="blue">$i</font> <font color="#B1B100">eq</font> <font color="red">'>'</font><font color="#009900">)</font><font color="#339933">;</font></span></font></span></font> por  <font style="font-size:8pt" color="#ACACAC" face="Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,monospace,serif" size="1"><span style="font-size:12px;background-color:#f8f8f8"><font color="black"><span style="background-color:white"><font color="blue">$p</font><font color="#339933">--</font> <font color="#B1B100">if</font> <font color="#009900">(</font><font color="blue">$i</font> <font color="#B1B100">eq</font> <font color="red">'<font style="font-size:8pt" size="1"><</font>'</font><font color="#009900">)</font><font color="#339933">;</font></span></font></span></font>.<br>





<br>Os caracteres que saem são estranhos, não sai o que eu queria.<br><br><div><div></div><hr>From: <a href="mailto:renato.cron@gmail.com" target="_blank">renato.cron@gmail.com</a><br>Date: Tue, 11 Dec 2012 21:36:03 -0200<div>





<div><br>To: <a href="mailto:rio-pm@pm.org" target="_blank">rio-pm@pm.org</a><br>Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck<br><br>não são essas linhas aqui?<div><br></div><div><ol style="padding:0px 0px 0px 48px;color:rgb(172,172,172);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace,serif;font-size:12px;line-height:21px;background-color:rgb(248,248,248)">







<li><div style="padding:0px 5px;vertical-align:top;color:rgb(0,0,0);border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);background-color:rgb(255,255,255)"><span style="color:rgb(0,0,255)">        $p</span><span style="color:rgb(51,153,51)">++</span> <span style="color:rgb(177,177,0)">if</span> <span style="color:rgb(0,153,0)">(</span><span style="color:rgb(0,0,255)">$i</span> <span style="color:rgb(177,177,0)">eq</span> <span style="color:rgb(255,0,0)">'>'</span><span style="color:rgb(0,153,0)">)</span><span style="color:rgb(51,153,51)">;</span></div>







</li><li><div style="padding:0px 5px;vertical-align:top;color:rgb(0,0,0);border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);background-color:rgb(255,255,255)">        <span style="color:rgb(0,0,255)">$p</span><span style="color:rgb(51,153,51)">--</span> <span style="color:rgb(177,177,0)">if</span> <span style="color:rgb(0,153,0)">(</span><span style="color:rgb(0,0,255)">$i</span> <span style="color:rgb(177,177,0)">eq</span> <span style="color:rgb(255,0,0)">'>'</span><span style="color:rgb(0,153,0)">)</span><span style="color:rgb(51,153,51)">;</span></div>







</li></ol><br><div>2012/12/11 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span><br><blockquote style="border-left:1px #ccc solid;padding-left:1ex">










<div><div dir="ltr">
ahsuahuhasuahsuah<br><br>Da hora mesmo, quando terminar, quem sabe não faço algo do tipo.<br><br><div><div></div><hr>From: <a href="mailto:creaktive@gmail.com" target="_blank">creaktive@gmail.com</a><br>Date: Tue, 11 Dec 2012 21:15:38 -0200<br>







To: <a href="mailto:rio-pm@pm.org" target="_blank">rio-pm@pm.org</a><br>Subject: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck<div><div><br><br>Dahora, parabéns :D<div>BTW, isso me lembrou de um "dialeto" do brainfuck, o trollscript: <a href="https://github.com/caius/trollscript" target="_blank">https://github.com/caius/trollscript</a></div>







<div>Isso é um "hello world" em trollscript:</div>

<div><span style="line-height:16px;color:rgb(51,51,51);font-size:12px;white-space:pre-wrap;font-family:Consolas,'Liberation Mono',Courier,monospace">Trooloolooloolooloolooloolooloolollooooolooloolooloolooloolooooolooloolooloolooloolooloolooloooooloolooloooooloooloolooloololllllooooloololoooooololooolooloolooloolooloololoolooolooloololooooooloololooooloololooloolooloolooloolooloolooloolooloolooloololooooolooolooloololooollollollollollolllooollollollollollollollollloooooololooooolooll</span></div>









<div>É sério.<font color="#333333" face="Consolas, Liberation Mono, Courier, monospace"><span style="font-size:12px;line-height:16px;white-space:pre-wrap"><br clear="all"></span></font><div><br>ABS()<br></div><br>
<br><br><div>2012/12/11 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span><br><blockquote style="border-left:1px #ccc solid;padding-left:1ex">












<div><div dir="ltr">
Ola monges,<br><br>Estou desenvolvendo um novo brinquedo, como forma de passatempo mesmo, um interpretador para BrainFuck.<br><br>Futuramente pretendo desenvolver um compilador.<br><br>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.<br>









<br><a href="http://pastebin.com/aEppcPKt" target="_blank">http://pastebin.com/aEppcPKt</a><br><br>Para testarem um hello wolrd em BF:<br><br><pre style="min-height:36px"><br>++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.<br>









<br><br><br>Os comandos de brainfuck : <a href="http://pt.wikipedia.org/wiki/Brainfuck#Comandos" target="_blank">http://pt.wikipedia.org/wiki/Brainfuck#Comandos</a><br><br>Aqui tem um pequeno tutorial tambem: <a href="http://wiki.portugal-a-programar.pt/dev_geral:linguagens_esoterica:brainfuck" target="_blank">http://wiki.portugal-a-programar.pt/dev_geral:linguagens_esoterica:brainfuck</a><br>









<br>Aqui tambem: <br><br>Basicamente é isso:<br><br><a href="http://unauthorizedaccess.files.wordpress.com/2011/02/cmds.jpg?w=610" target="_blank">http://unauthorizedaccess.files.wordpress.com/2011/02/cmds.jpg?w=610</a><br>









</pre><br>                                    </div></div>
<br>_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></blockquote></div><br></div>
<br>_______________________________________________
Rio-pm mailing list
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a></div></div></div>                                           </div></div>
<br>_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><span style="color:rgb(51,51,51);font-size:x-small">Saravá,</span></div>







<div><span style="color:rgb(51,51,51);font-size:x-small">Renato CRON</span></div><div><div style="text-align:right"><font color="#333333" size="1"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div>







</div><div style="text-align:right"><font color="#333333" size="1"><a href="http://twitter.com/#%21/renato_cron" target="_blank">@renato_cron</a></font></div><br>
</div>
<br>_______________________________________________
Rio-pm mailing list
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a></div></div></div>                                           </div></div>
<br>_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><span style="color:rgb(51,51,51);font-size:x-small">Saravá,</span></div>





<div><span style="color:rgb(51,51,51);font-size:x-small">Renato CRON</span></div><div><div style="text-align:right"><font color="#333333" size="1"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div>





</div><div style="text-align:right"><font color="#333333" size="1"><a href="http://twitter.com/#%21/renato_cron" target="_blank">@renato_cron</a></font></div><br>
</div>
<br>_______________________________________________
Rio-pm mailing list
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a></div></div></div>                                           </div></div>
<br>_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></blockquote></div><br></div>
<br>_______________________________________________
Rio-pm mailing list
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a></div></div></div>                                           </div></div>
<br>_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></blockquote></div><br>