| 1 |
O que é um compilador/interpretador/tradutor |
Cap. 1–2 |
|
| 2 |
Análise léxica I — tokens, expressões regulares |
Cap. 3 |
M1 |
| 3 |
Análise léxica II — autômatos finitos, Flex na prática (lab) |
Cap. 3 |
E1 |
| 4 |
Análise sintática I — gramáticas livres de contexto, ambiguidade |
Cap. 4 |
— |
| 5 |
Análise sintática II — top-down/bottom-up, panorama LL/LR |
Cap. 4–5 |
E2 |
| 6 |
Bison na prática + construção da AST (lab) |
Cap. 5–6 |
M2 — analisador léxico + sintático |
| 7 |
AST — representação, padrão visitor, percursos; revisão |
Cap. 6 |
— |
| 8 |
Semântica I — sistemas de tipos (estático × dinâmico, forte × fraco, nominal × estrutural) |
Cap. 7 (ampliado) |
— |
| 9 |
Semântica II — tabela de símbolos, escopo léxico × dinâmico, checagem estática vs. verificação em tempo de execução |
Cap. 7 (ampliado) |
|
| 10 |
Semântica III — inferência de tipos básica; estudo de caso Python/tipagem gradual |
Complementar |
M3 - verificação de tipos |
| 11 |
Estratégias de execução — interpretação em árvore, ambientes e closures |
Complementar (Crafting Interpreters, Parte II) |
|
| 12 |
Representação de valores em tipagem dinâmica (tagged values/boxing), erros de tipo em tempo de execução |
Complementar |
— |
| 13 |
Geração dinâmica de código — bytecode e máquina virtual de pilha; compilação de AST para bytecode |
Complementar (Crafting Interpreters, Parte III) |
M4 — interpretador/VM funcional |
| 14 |
Panorama de geração de código nativo/JIT e coleta de lixo (conceitual); otimizações leves |
Cap. 9–12 (compactado) |
— |
| 15 |
Apresentações finais e avaliação por pares |
— |
Entrega final |