2026/1

Informações gerais da disciplina, bem como links para materiais e etc., estão na página do GitHub.

Sala de aula: PC-07; ensalamento; Terças e quintas às 15:30


Ferramentas

Analisador léxico: Flex

Analisador sintático: Bison


Avaliação

Nota = Prova * 40% + Trabalho * 60%

Datas importantes

  • Prova: 02/04, simulado
  • Trabalho: 08/06 até 12h

Conteúdo Teórico (Analisador sintático - parser)

Os capítulos de interesse do livro do dragão (primeira edição) são os seguintes:

  • Cap 4.1 - O papel do analisador sintático (pode ignorar tratamento de erros)
  • Cap 4.2 - Gramáticas Livre de contexto
  • Cap 4.3 - Escrevendo uma gramática (especialmente: eliminar ambiguidade, eliminar recursão a esquerda e fatoração a esquerda
  • Cap 4.4 - Análise sintática top-down (pode ignorar a recuperação de erros); Considere também o Cap 2.4 e 2.5 para consrtruir um programa manualmente.
  • Cap 4.5 - Análise sintática bottom-up (serve mais para ajudar no entendimento geral)
  • Cap 4.7 - Analisadores sintáticos LR

Caso esteja com a segunda edição do livro, aparentemente a única mudança é que o Cap 4.7 foi dividido em dois capítulos: 4.6 e 4.7. No caso, seria o capítulo sobre parsers LR. O que precisa ser estudado é o SLR e LR canônico ( ou LR(1) ), e analisadores de precedência podem ser ignorados.

As principais fórmulas/procedimentos/operações/algoritmos estão disponíveis nesta cheat sheet.

Uma lista de exercícios pode ser encontrada aqui.

Geradores LL(1), SLR e LR(1) podem ser encontrados aqui: JSMachines salvos no github.


Trabalho

O trabalho será gerenciado pelo GitHub Classroom. Portanto, todos devem ter conta no GitHub.

Mais informações em breve.


Cronograma

Data Aula Descrição Links ou referência (Livro do Dragão)
24/02 Aula 1 Introdução Breve história e fases de um compilador
26/02 Aula 2 Análise sintática - Intro, ambiguidade, recursão, fatoração a esquerda cap. 4.2 e 4.3
03/03 Aula 3 Análise sintática Top-down (LL) - Implementação manual cap. 2.4, 2.5 e 4.4
05/03 Aula 4 Análise sintática Top-down (LL) - Implementação manual (Lab) exercício
10/03 Aula 5 Análise sintática Top-down (LL) - Implementação via pilha cap 4.4
12/03 Aula 6 Análise sintática Bottom-up - SLR cap 4.5, 4.7
17/03 Aula 7 Análise sintática Bottom-up - LR canônico cap 4.7
19/03 Aula 8 Análise sintática Bottom-up - LR canônico cap 4.7
24/03 Aula 9 Análise sintática Bottom-up - LALR cap 4.7
26/03 Aula 10 Análise sintática Bottom-up - LALR cap 4.7
31/03 Aula 11 Exercícios
02/04 Aula 12 Prova 1
07/04 Aula 13 Analisador léxico (Flex) código de exemplo
09/04 Aula 14 Analisador sintático (Bison) código de exemplo
14/04 Aula 15 LLVM-IR conteúdo no github
16/04 Aula 16 LLVM-IR conteúdo no github
21/04 Feriado
23/04 Aula 17 Projeto NanoC - Implementação de uma tabela de símbolos (Lab)
28/04 Aula 18 Projeto NanoC - Expressões simples (Lab)
30/04 Aula 19 Projeto NanoC - Expressões simples (Lab)
05/05 Aula 20 Projeto NanoC - Float e cast implícito (Lab)
07/05 Aula 21 Projeto NanoC - Chamada de funções (Lab)
12/05 Aula 22 Projeto NanoC - Repetição (Lab)
14/05 Aula 23 Tira-dúvidas Trabalho
19/05 Aula 24 Tira-dúvidas Trabalho
21/05 Aula 25 Tira-dúvidas Trabalho
26/05 Sem aula
28/05 Sem aula
02/06 Sem aula
04/06 Feriado
09/06 Aula 26 Apresentação Trabalho
11/06 Aula 27 Apresentação Trabalho
16/06 Aula 28 Apresentação Trabalho
18/06 Aula 29 Apresentação Trabalho
23/06 Aula 30 Apresentação Trabalho
25/06 Reservado para Segunda Chamada
30/06 Exame Final