SmallForth: an implementation over Pharo Smalltalk – Part 3

Voltar ao índice.

Continuação do segundo post. 

As palavras Forth neste post podem ser vistas em 1. Fundamental Forth e 2. How to Get Results.

Transformando .” (dotQuote) em primitiva

Vamos mudar a forma de uso da stream de words. No momento estamos usando um stream local criada em eval:. Vamos desvincular a criação da stream de eval: para podermos transformar o método showString: associado a .” (dotQuote) em uma primitiva.

eval: agora invoca eval. Mas antes cria a stream.

Agora podemos executar dotQuote (.”) em forthPerform:.

Repetimos o testDotQuote abaixo por conveniência.

Mostramos de novo showString: por conveniência.

Abaixo mostramos a versão SmallForth do Hello World.

Nota: Aqui vemos a utilidade de quebrar o código em pequenos métodos. Uma é revelar a intenção através do nome do método. Outra é facilitar e/ou criar oportunidade de reutilização.

Transformando : (colon) em primitiva

Vamos fazer o mesmo com : (colon). Ainda não vamos considerar compile: uma primitiva mas há indicações de que o processo de compilação pode ser modificado no Forth através de uma primitiva (Veremos quando avançarmos na leitura do Starting Forth ou em outros livros sobre o Forth).

Modificamos eval: e evalWord: para também definir o stack a ser usado. eval: cria um novo stack enquanto que evalWord: continua usando o mesmo stack na nova instância do interpreter.

eval: use a new stack
evalWord: use the same stack but a new interpreter
eval do not have colon anymore
Lembramos que o link para o file out atualizado até a parte 7 se encontra no primeiro post. A partir da parte 8 você pode encontrar SmallForth no GitHub em https://github.com/chicoary/small-forth.

Voltar ao índice.

Ver o post seguinte.

2 comentários

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s