Compiladores — do zero ao Hack¶
Bem-vindo(a) à disciplina de Compiladores. Este livro constrói, unidade a unidade, um compilador completo para a linguagem Jack (Nand2Tetris) e a infraestrutura que o sustenta — máquina virtual, montador e a arquitetura Hack — no espírito de Crafting Interpreters: você acompanha o código sendo construído, método a método, capítulo a capítulo.
Como usar este livro¶
- A linguagem de demonstração é Java — todo o código incremental do livro é escrito nela. Você é livre para implementar suas atividades práticas em qualquer linguagem.
- Cada capítulo parte de onde o anterior parou. Recomenda-se seguir a ordem.
- O livro está estruturado em quatro partes lógicas que cobrem o compilador Jack, o tradutor para a Máquina Virtual e o montador Assembly.
- Cada parte do livro conclui etapas completas de tradução que se relacionam diretamente com a pilha de software do Nand2Tetris.
As quatro partes¶
| Parte | Foco | Projetos Relacionados (Nand2Tetris) |
|---|---|---|
| 1 — Front-end (Análise Sintática) | Linguagens, gramáticas, analisador léxico e analisador sintático para a linguagem Jack. | Projeto 10 (Compiler I - Syntax Analysis) |
| 2 — O Compilador (Geração de Código VM) | Tabelas de símbolos, representações intermediárias e geração de código VM para Jack. | Projeto 11 (Compiler II - Code Generation) |
| 3 — O Tradutor VM (Geração de Código Assembly) | Tradução de aritmética, memória, controle de fluxo e funções de código VM para Assembly Hack. | Projetos 7 e 8 (VM Translator) |
| 4 — O Montador (Assembly para Código de Máquina) | Especificação do Assembly Hack e construção do Montador (Assembler) para produzir o binário. | Projeto 6 (Assembler) |
Pré-requisitos¶
- Programação básica (qualquer linguagem imperativa/orientada a objetos).
- Estruturas de dados elementares (pilhas, listas, árvores, tabelas hash).
- Não é necessário conhecimento prévio de Java, arquitetura de computadores ou teoria da computação — o livro constrói o que for preciso ao longo do caminho.
Ambiente e ferramentas¶
Veja o Apêndice D para instalação do software oficial do Nand2Tetris (CPU Emulator, VM Emulator, Assembler) e configuração do ambiente Java.
Referências¶
Veja o Apêndice E para a bibliografia completa.