| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/08/2011 23:45:57
|
adolfo_eloy
JavaChild
![[Avatar]](/images/avatar/cd48d72165d061eea4c7b63d8da8a64b.png)
Membro desde: 26/02/2007 11:01:04
Mensagens: 110
Localização: São Paulo
Offline
|
Olá pessoal.
Estou estudando ruby a pouco tempo e no momento estou lendo o livro "O Programador Pragmático".
Neste livro encontrei um exercício onde pede-se para construir um interpretador de comandos bem simples onde o importante é que seja fácil adicionar novos comandos nesta "minilinguagem".
Criei o programa abaixo mas acho que ele pode ser escrito de forma bem melhor usando recursos mais elaborados que o ruby oferece.
Gostaria de ver outras idéias de programadores ruby com mais experiência e também de receber críticas sobre este código.
Caso este tópico for noob demais, peço desculpas galera.
Valeu.
|
Adolfo Eloy
"Stay hungry, Stay foolish" |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2011 06:38:12
|
gomesrod
GUJ Ranger
![[Avatar]](/images/avatar/5de6755473dc988fe6c7db81f26a53ac.jpg)
Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline
|
Interessante...
Acho que o programa poderia dar suporte a leitura dos comandos a partir de um arquivo, que seria o uso mais comum para uma minilinguagem.
Tentei jogar pela entrada padrão através de um pipe, até que funcionou mas no fim deu erro porque ele não sabia tratar o fim de arquivo.
Também seria um ótimo desafio tentar suportar comandos complexos (armazenamento de estado entre comandos, dependência entre eles, execução de blocos condicionais, etc). Talvez aí já entre um pouco de teoria de compiladores.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2011 09:50:42
|
adolfo_eloy
JavaChild
![[Avatar]](/images/avatar/cd48d72165d061eea4c7b63d8da8a64b.png)
Membro desde: 26/02/2007 11:01:04
Mensagens: 110
Localização: São Paulo
Offline
|
gomesrod wrote:Interessante...
Acho que o programa poderia dar suporte a leitura dos comandos a partir de um arquivo, que seria o uso mais comum para uma minilinguagem.
Tentei jogar pela entrada padrão através de um pipe, até que funcionou mas no fim deu erro porque ele não sabia tratar o fim de arquivo.
Também seria um ótimo desafio tentar suportar comandos complexos (armazenamento de estado entre comandos, dependência entre eles, execução de blocos condicionais, etc). Talvez aí já entre um pouco de teoria de compiladores.
Legal Gomesrod!
Poderia compartilhar seu código?
No exercício do livro a idéia era que fosse algo bem simples mesmo.
Uma coisa que fiz também foi escrever o código em java e em C para comparar as diferentes maneiras de resolver o problema.
Apesar de eu trabalhar atualmente com java, realmente em ruby o código ficou bem mais simples.
Valeu
|
Adolfo Eloy
"Stay hungry, Stay foolish" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/08/2011 11:38:59
|
gomesrod
GUJ Ranger
![[Avatar]](/images/avatar/5de6755473dc988fe6c7db81f26a53ac.jpg)
Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline
|
adolfo_eloy wrote:Poderia compartilhar seu código?
Eu não fiz nada não, só dou pitaco no dos outros mesmo! rsrsrs
O que fiz ali foi gravar o seu programa no arquivo interpreter.rb , os comandos no interpreter.dat, e executar.
|
|
|
 |
|
|