2025/2

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

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


Ferramentas

Analisador léxico: Flex

Analisador sintático: Bison


Avaliação

Nota = Prova 1 * 30% + Prova 2 * 30% + Trabalho * 40%

Datas importantes

  • Prova 1: 09/09
  • Prova 2: 30/10
  • Trabalho: 17/11 até 23h59min

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 (até "contrução de tabelas sintáticas LR canônicas", LALR não será cobrado na prova)

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, github (mesma máquina, porém salvos no github).


Trabalho

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

Ao aceitar um trabalho, você deve primeiro escolher teu nome na lista de alunos e fazer o link com o teu usuário do GitHub. Uma espécie de pré trabalho foi criado para que você se familiarize com a plataforma. Para aceitar esse pré trabalho, entre neste link:https://classroom.github.com/a/7V3RulxC. Esse pré trabalho não vale qualquer nota, e já pode ser feito em grupos de dois alunos.

Cada trabalho aceito gera um repositório privado onde o grupo tem acesso para fazer push. Quando o prazo encerra, os alunos perdem a permissão para fazer push, e o último commit será avaliado.

O link para aceitar o trabalho final é o seguinte: https://classroom.github.com/a/WFWPC1wi.

É possível ver a especificação do trabalho, sem ainda aceitá-lo no GitHub Classroom, pelo link: https://github.com/UFPR-Daniel-Oliveira/ci1211-compiladores-2025-2-trabalho-subset-pascal-CI1211-trabalho-subset-Pascal.


Cronograma

Data Aula Descrição Links ou referência (livro dragão)
05/08 Aula 1 Introdução Breve história e fases de um compilador
07/08 Aula 2 Analisador léxico (Flex) código de exemplo
12/08 Aula 3 Análise sintática - Ambiguidade, recursão e fatoração cap. 4.2 e 4.3
14/08 Aula 4 Análise sintática Top-down (LL) - Implementação manual cap. 2.4, 2.5 e 4.4
19/08 Aula 5 Análise sintática Top-down (LL) - Implementação manual (Lab) exercício
21/08 Aula 6 Análise sintática Top-down (LL) - Implementação via pilha cap 4.4
26/08 Aula 7 Análise sintática Top-down (LL) - Implementação via pilha cap 4.4
28/08 Aula 8 Análise sintática Bottom-up - SLR
02/09 Aula 9 Análise sintática Bottom-up - SLR
04/09 Aula 10 Exercícios
09/09 Aula 11 Prova 1
11/09 Aula 12 Analisador sintático (Bison)
16/09 Aula 13 LLVM-IR
18/09 Aula 14 LLVM-IR
23/09 SACI
25/09 SACI
30/09 Aula 15 Análise sintática Bottom-up - LR canônico
02/10 Aula 16 Análise sintática Bottom-up - LR canônico
07/10 Aula 17 Exercícios
09/10 Aula 18 Análise sintática Bottom-up - LALR
14/10 Aula 19 Análise sintática Bottom-up - LALR
16/10 Aula 20 Exercícios
21/10 SIEPE
23/10 SIEPE
28/10 Aula 21 Exercícios
30/10 Aula 22 Prova 2
04/11 Aula 23 Tira-dúvidas Trabalho
06/11 Aula 24 Tira-dúvidas Trabalho
11/11 Aula 25 Tira-dúvidas Trabalho
13/11 Aula 26 Tira-dúvidas Trabalho
18/11 Aula 27 Apresentação Trabalho
20/11 Feriado: Dia Nacional de Zumbi e da Consciência Negra
25/11 Aula 28 Apresentação Trabalho
27/11 Aula 29 Apresentação Trabalho
02/12 Aula 30 Apresentação Trabalho
04/12
09/12
11/12 Reservado para Segunda Chamada
16/12 Exame Final