LRM Prof. Mantovani ← Plano de ensino

Material das aulas

Da teoria das linguagens à construção de um compilador: percorremos as fases de análise (léxica, sintática, semântica) e de síntese (representação intermediária e geração de código), sempre com simulações e laboratório.

📘 14 aulas🧪 Simuladores interativos👥 Atividades em grupo🎯 Simulado ENADE
Trilha de 14 semanas

Aulas

Cada aula traz teoria didática, simulações, atividade em grupo e um mini-quiz. Siga na ordem ou vá direto ao tema.

1 Introdução à compilaçãoO que é um compilador, em que ele difere de um interpretador e o panorama completo das fases que transformam o código-fonte em um programa executável, com a tabela de símbolos e o tratamento de erros como apoios transversais. 👥 grupo Sem. 1 2 Linguagens, gramáticas e estrutura do compiladorOs níveis de abstração entre o problema humano e o hardware, a organização do compilador em front-end e back-end ligados por uma representação intermediária, e a hierarquia de Chomsky que classifica as linguagens formais e justifica os reconhecedores de cada fase. 👥 grupo Sem. 2 3 Análise léxica I — tokens e expressões regularesA primeira fase do compilador: agrupar a torrente de caracteres do código-fonte em unidades com significado, os tokens. Estudamos a tríade lexema, token e padrão, a especificação de padrões por expressões regulares e o funcionamento de um analisador léxico real. 🧪 Análise léxica👥 grupo Sem. 3 4 Análise léxica II — autômatos finitosComo a especificação por expressão regular vira código executável: autômatos finitos determinísticos (AFD) e não determinísticos (AFN), o pipeline ER→AFN→AFD→código e o funcionamento interno de um scanner como uma máquina de estados. 🧪 Análise léxica👥 grupo Sem. 4 5 Gramáticas livres de contextoA linguagem da sintaxe: gramáticas livres de contexto (GLC), derivações, árvores sintáticas, o problema da ambiguidade e sua solução via precedência e associatividade, e as notações BNF e EBNF que descrevem a estrutura das linguagens de programação. 👥 grupo Sem. 5 6 Análise sintática descendenteParsing recursivo-descendente: como percorrer a gramática, da raiz às folhas, para reconstruir a árvore sintática a partir dos tokens. Estudamos por que a recursão à esquerda quebra o método, como eliminá-la, e como a fatoração à esquerda prepara a gramática. 👥 grupo Sem. 6 7 LL(1), FIRST/FOLLOW · Revisão + Prova 1Os conjuntos FIRST e FOLLOW, que guiam o parser preditivo; a construção e o uso da tabela LL(1); e a revisão geral das semanas 1 a 6. Esta é a semana da Avaliação 1. 🧪 FIRST / FOLLOW👥 grupo Sem. 7 8 Análise semântica I — gramáticas de atributosDepois da estrutura, o significado: atributos sintetizados e herdados, gramáticas de atributos e a tradução dirigida pela sintaxe (SDT) que executa ações ao longo da árvore. 👥 grupo Sem. 8 9 Tabela de símbolos e verificação de tiposA memória do compilador: a tabela de símbolos com escopos aninhados e o sistema de tipos que detecta incompatibilidades antes da execução. 🧪 Análise léxica👥 grupo Sem. 9 10 Representação intermediáriaA ponte entre front-end e back-end: por que uma RI existe, o código de três endereços e a tradução dirigida pela sintaxe que o gera a partir da árvore. 🧪 Mini-compilador👥 grupo Sem. 10 11 Ambiente de execuçãoComo o programa traduzido se organiza na memória em tempo de execução: registros de ativação, a pilha de chamadas (e a recursão) e a distinção entre pilha e heap. 👥 grupo Sem. 11 12 Geração de código e organização do computadorA fase final: traduzir a RI para a máquina-alvo, com seleção de instruções, alocação de registradores e a influência da organização do computador. 🧪 Mini-compilador👥 grupo Sem. 12 13 Projeto integrador — mini-compiladorJuntando as fases: do código-fonte aos tokens, à árvore e ao código de três endereços, em um projeto único que exercita o front-end ponta a ponta. 🧪 Análise léxica🧪 Mini-compilador👥 grupo Sem. 13 14 Apresentações · Revisão geral · Prova 2Fechamento da disciplina: apresentação dos projetos, revisão conectada de todas as fases do compilador e preparação para a Avaliação 2 (e exame). 👥 grupo Sem. 14