Forth

Forth

Difícil

Instruções

Implemente um avaliador para um subconjunto muito simples de Forth.

Forth é uma linguagem de programação baseada em pilha. Implemente um avaliador bem básico para um pequeno subconjunto de Forth.

Seu avaliador precisa dar suporte às seguintes palavras:

  • +, -, *, / (aritmética de inteiros)
  • DUP, DROP, SWAP, OVER (manipulação de pilha)

Seu avaliador também precisa dar suporte à definição de novas palavras usando a sintaxe habitual: : word-name definition ;.

Para simplificar, o único tipo de dado que você precisa dar suporte é inteiros com sinal de pelo menos 16 bits.

Use as seguintes regras para a sintaxe: um número é uma sequência de um ou mais dígitos (ASCII), e uma palavra é uma sequência de uma ou mais letras, dígitos, símbolos ou sinais de pontuação que não seja um número. (O Forth provavelmente usa regras um pouco diferentes, mas isso é o suficientemente próximo.)

As palavras não diferenciam maiúsculas de minúsculas.

Dicas

Para completar este exercício, você precisa criar o tipo de dados ForthState e implementar as seguintes funções:

  • emptyState retorna um ForthState vazio.
  • evalText avalia um Text de entrada e retorna o novo estado.
  • toList retorna a pilha atual como uma lista, com o elemento no topo da pilha sendo o elemento mais à direita (o último).

Você vai encontrar uma declaração de dados de exemplo e assinaturas de tipo já prontas, mas cabe a você definir as funções e criar um tipo de dados, newtype ou sinônimo de tipo que faça sentido.

Editar via GitHub O link abre em uma nova janela ou aba
Haskell Exercism

Tudo pronto para começar Forth?

Crie sua conta no Exercism para aprender e dominar Haskell com 107 exercícios e mentoria humana de verdade, tudo de graça.