Sobre o serviço
TraduzidoPrecisa de um interpretador funcional para a linguagem de programação Monkey — a linguagem educacional do livro "Escrevendo um Interpretador em Go" e sua sequência "Escrevendo um Compilador em Go"? Eu monto todo o pipeline do zero e estendo a implementação de referência com as capacidades que os autores deixaram como exercícios.
O que você receberá:
— Um lexer escrito à mão que transforma código-fonte em tokens, com rastreamento de posição para mensagens de erro legíveis.
— Um parser Pratt (análise de cima para baixo por precedência de operadores) que constrói uma AST tipada limpa.
— Um avaliador que percorre a árvore com inteiros, booleanos, strings, arrays, hashes, funções de primeira classe e closures.
— Um compilador para bytecode e uma máquina virtual baseada em pilha para velocidade real: tabela de símbolos, pool de constantes, manipulação de frames.
— Funções embutidas, `let`/`if`/`return`, funções de ordem superior e um REPL conveniente.
Extensões sob demanda: números de ponto flutuante, loops `while`/`for`, operadores pós-fixados e compostos, macros com quote/unquote, importações de módulos, experimentos de coleta de lixo, valores de erro e funções da biblioteca padrão embutidas mais ricas.
Cada build vem com um conjunto completo de testes baseados em tabela, um histórico de commits limpo e um README que o guia por cada etapa para que você continue aprendendo diretamente do código. Eu posso fazer isso em Go ou portar o design para outra linguagem host. Uma ótima opção para estudantes, professores e qualquer pessoa que precise de uma linguagem pequena, mas completa, para experimentos.
O que você receberá:
— Um lexer escrito à mão que transforma código-fonte em tokens, com rastreamento de posição para mensagens de erro legíveis.
— Um parser Pratt (análise de cima para baixo por precedência de operadores) que constrói uma AST tipada limpa.
— Um avaliador que percorre a árvore com inteiros, booleanos, strings, arrays, hashes, funções de primeira classe e closures.
— Um compilador para bytecode e uma máquina virtual baseada em pilha para velocidade real: tabela de símbolos, pool de constantes, manipulação de frames.
— Funções embutidas, `let`/`if`/`return`, funções de ordem superior e um REPL conveniente.
Extensões sob demanda: números de ponto flutuante, loops `while`/`for`, operadores pós-fixados e compostos, macros com quote/unquote, importações de módulos, experimentos de coleta de lixo, valores de erro e funções da biblioteca padrão embutidas mais ricas.
Cada build vem com um conjunto completo de testes baseados em tabela, um histórico de commits limpo e um README que o guia por cada etapa para que você continue aprendendo diretamente do código. Eu posso fazer isso em Go ou portar o design para outra linguagem host. Uma ótima opção para estudantes, professores e qualquer pessoa que precise de uma linguagem pequena, mas completa, para experimentos.