• O sistema entrará em processo de atualização de funcionalidades às 22:30. Pedimos a todos que salvem seus trabalhos para que não haja transtornos.
    Agradecemos a compreensão, em 15 minutos o sistema estará de volta.

-

DIE0099 - CONSTRUCAO DE COMPILADORES - Turma: 01 (2015.1)

Tópicos Aulas
Introdução, conceitos básicos, um compilador simples e análise léxica (09/03/2015 - 10/04/2015)

Introdução, definição de um compilador, processadores de linguagens, organização de um compilador e definição do projeto final. Análise léxica, introdução, especificação de tokens, reconhecimento de tokens e ferramenta ANTLR

Introdução e Conceitos Básicos (09/03/2015 - 11/03/2015)

Apresentação e discussão do plano de curso; Apresentação, conceitos básicos, fases do processo de compilação e principais ferramentas usadas para construção de compiladores

   Compiladores: introdução, motivação e plano de ensino 
Um Compilador Simples (13/03/2015 - 01/04/2015)

Apresentação de forma resumida de boa parte do assunto que será visto em detalhes no restante do curso; Destaca-se também uma visão geral do processo de compilação, usando como exemplo a tradução de expressões em notação infixa para posfixa.

  gramática exprPosfixa.g4 - parcial 
Exemplo da gramática discutida em sala de aula. Lembrar que o arquivo de entrada (input1.txt )deve ser gerado.
  gramática expoPosfixa.g4 - final 
Exemplo da gramática discutida em sala de aula, com todas as ações implementadas. Cuidado ao baixar o arquivo g4, pois ele possui o mesmo nome da versão parcial.
    
Inicia em 30/03/2015 às 0h 0 e finaliza em 06/04/2015 às 23h 0
Análise Léxica (06/04/2015 - 08/04/2015)

Análise Léxica: tokens e lexemas, expressões regulares, implementação.

    
Inicia em 30/03/2015 às 0h 0 e finaliza em 10/04/2015 às 10h 0
Definição do Trabalho Final (10/04/2015 - 10/04/2015)

Discussão e apresentação do Trabalho Final da disciplina, a saber: um compilador simplificado para uma linguagem like Java.

Compiladores: Análise Sintática (13/04/2015 - 24/04/2015)

Análise Sintática: Gramáticas Livre de Contexto, Parsers Bottom-Up e Top-Down, Algoritmos usados para criação de parsers, Tratamento de erros sintáticos.

Análise Sintática (13/04/2015 - 17/04/2015)

Análise Sintática: Especificação de linguagens através de um Gramática Livre de Contexto (GLC) e da Backus-Naur Form (BNF); Tipos de Parsers para gramáticas: top-down x bottom-up; Discussão sobre os níveis de erros em um compilador e as principais estratégias de recuperação de erros;GLC: ambiguidade, recursão à esquerda, fatoração à esquerda; Analisadores LL, LR, LR Canônicos e SLR.

Análise Sintática: Uso do ANTLR (20/04/2015 - 20/04/2015)

Discussão sobre o uso da ferramenta ANTLR para a geração de analisadores sintáticos.

  Classes do Compilador SimplePortugol 
Segue os arquivos discutidos em sala de aula: gramática ANTLR .g4 e o projeto Netbeans Java
Integração entre Analisadores Léxico e Sintático (22/04/2015 - 24/04/2015)

Discussão sobre o processo de integração entre os analisadores léxico e sintático.

  Gramática SimplePortugol.g4 
Gramática com a declaração de funções e com comandos básicos.
  Gramática SimplePortugol.g4 - parcial 
Versão da gramática com expressões
Tradução Dirigida por Sintaxe (27/04/2015 - 08/05/2015)

Definições dirigidas por sintaxe x Esquemas de tradução; Definições dirigidas por sintaxe: atributos sintetizados x herdados; Grafos de dependência: grafo acíclico dirigido; Árvores sintáticas abstratas (Abstract Syntax Tree - AST); Acompanhamento de Projeto.

    
Inicia em 04/05/2015 às 0h 0 e finaliza em 25/05/2015 às 23h 59
Definição Dirigida por Sintaxe e AST - Definições (27/04/2015 - 29/04/2015)

Definições dirigidas por sintaxe x Esquemas de tradução; Definições dirigidas por sintaxe: atributos sintetizados x herdados; Grafos de dependência: grafo acíclico dirigido; Árvores sintáticas abstratas (Abstract Syntax Tree - AST)

AST - Uso do ANTLR (04/05/2015 - 04/05/2015)

Construção de AST usando a ferramenta ANTLR

Acompanhamento de Projetos (06/05/2015 - 08/05/2015)

Aula em laboratório para discussão e acompanhamento de projetos.

Compiladores: Análise Semântica (11/05/2015 - 15/05/2015)

Fase de análise semântica do processo de compilação; Principais erros semânticos: verificação de tipos.

Análise Semântica (11/05/2015 - 13/05/2015)

Análise semântica: sistemas de tipos; Discussão sobre os principais erros semânticos; Tratamento de erros; Tabela de símbolos.

Análise Semântica: Uso do ANTLR (15/05/2015 - 15/05/2015)

Discussão sobre o processo de análise semântica com o uso da ferramenta ANTLR.

Compiladores: Código Intermediário (18/05/2015 - 22/05/2015)

Vantagens do uso de uma notação intermediária; Representação de Código de Três Endereços; Representação Numérica X Fluxo de Controle.

Código Intermediário (18/05/2015 - 20/05/2015)

Geração de Código Intermediário: Código de Três Endereços; Representação Numérica x Fluxo de Controle

Código intermediário: exercícios (22/05/2015 - 22/05/2015)

Exercícios sobre os tipos de código intermediário usados em implementações de linguagens.

    
Inicia em 14/05/2015 às 0h 0 e finaliza em 25/05/2015 às 23h 59
Ambientes de Execução (25/05/2015 - 29/05/2015)

Discussão sobre ambientes de execução; Rotinas que são agregadas ao código para dar suporte à alocação de memória, chamda de procedimentos, ...; Exercícios

Acompanhamento de Projetos (01/06/2015 - 01/06/2015)

Aula em laboratório para acompanhamento de projetos.

Máquina Virtual Java (03/06/2015 - 08/06/2015)

Java Virtual Machine (JVM); Java Assembler Interface (JASMIN); Exercícios práticos.

Geração de Código (10/06/2015 - 12/06/2015)

Discussão sobre o processo de geração de código para Jasmin; Exercícios práticos.

    
Inicia em 19/06/2015 às 0h 0 e finaliza em 19/06/2015 às 12h 30
Acompanhamento de Projetos (15/06/2015 - 17/06/2015)

Aulas em laboratório para acompanhamento de projetos.

Otimização de Código (19/06/2015 - 26/06/2015)

Discussão sobre as principais técnicas de otimização de código: eliminação de sub-expressões comuns, propagação de cópias, eliminação de código morto, ... Exercícios.

Apresentação do Trabalho Final (29/06/2015 - 06/07/2015)

Apresentação do Trabalho Final: Compilador Simplificado.

Frequências da Turma
# Matrícula MAR ABR MAI JUN JUL Total
09 11 13 16 18 20 23 25 27 30 01 06 08 10 13 15 17 20 22 24 27 29 04 06 08 11 13 15 18 20 22 25 27 29 01 03 05 08 10 12 15 17 19 22 24 26 29 01 03 06 08 10
1 20093**** 2 0 0 0 0 0 0 0 0 2 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 14
2 20114**** 2 0 0 0 1 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 13
3 20108**** 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 10
4 20093**** 0 0 2 0 0 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10
5 20123**** 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2
6 20123**** 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
7 20123**** 2 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8
8 20114**** 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
9 20107**** 2 0 0 2 0 2 0 0 0 2 0 2 0 0 0 0 0 0 2 2 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18
10 20123**** 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11 20115**** 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 6
12 20107**** 0 0 0 2 0 2 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 14
13 20123**** 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2
14 20123**** 2 0 2 2 2 2 0 0 0 0 0 0 0 2 0 0 0 2 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 20
15 20115**** 2 0 2 2 2 2 0 0 0 0 0 2 0 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18
16 20107**** 0 0 0 2 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10
17 20072**** 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 8
Notas da Turma
# Matrícula Unid. 1 Unid. 2 Unid. 3 Unid. 4 Prova Final Resultado Faltas Situação
1 20123**** 9,0 7,5 9,4 9,5 8.9 2 AM
2 20123**** 5,8 4,0 9,4 9,0 7.1 6 AM
3 20107**** 2,5 1,5 6,2 7,5 7.5 6.0 14 EF
4 20123**** 7,7 5,5 9,4 9,0 7.9 2 AM
5 20123**** 8,2 7,0 8,8 9,5 8.4 8 AM
6 20123**** 8,2 6,0 8,5 7,5 7.6 0 AM
7 20093**** 4,5 4,0 8,2 0,0 6.5 5.4 14 RN
8 20072**** 3,3 4,0 8,6 0,0 0.0 2.0 8 RN
9 20093**** 5,0 5,0 8,2 0,0 8.0 6.3 10 EF
10 20114**** 10,0 7,0 9,2 9,5 8.9 6 AM
11 20114**** 7,3 5,0 9,4 9,5 7.8 13 AM
12 20107**** 6,2 4,0 8,8 9,5 7.1 18 AM
13 20115**** 1,3 5,0 6,7 5,5 4.0 4.3 18 RN
14 20123**** 7,2 8,5 8,4 7,5 7.9 20 AM
15 20115**** 5,3 4,5 6,0 7,5 6.5 6.2 6 EF
16 20107**** 2,0 5,0 9,0 0,0 8.5 6.3 10 EF
17 20108**** 7,7 5,0 6,7 9,5 7.2 10 AM

Nenhum item foi encontrado

Plano de Curso

Nesta página é possível visualizar o plano de curso definido pelo docente para esta turma.

Dados da Disciplina
Ementa: Introdução a Tradução de Linguagens de Programação. Fases de um Compilador. Gramáticas e Linguagens. Análise léxica e sintática. Tabelas de símbolos. Esquemas de tradução. Tratamento de erros. Ambientes e tempo de execução. Análise semântica. Representação intermediária. Geração e otimização de código. Projeto de um compilador simplificado.
Objetivos:
Metodologia de Ensino e Avaliação
Metodologia: Aulas expositivas com uso de quadro branco e projeção de slides; Discussão sobre os conceitos e atividades práticas; Aulas em laboratório para acompanhamento da implementação do Trabalho Final.
Procedimentos de Avaliação da Aprendizagem: Serão realizadas 3 (três) avaliações escritas e um trabalho prático: implementação. A nota final será a média aritmética simples entre as quatro notas.
Horário de atendimento: Segunda, Quarta e Sexta das 8:00 às 10:00h
Bibliografia: AHO, A., LAM, M., SETHI, R. & ULLMAN, J., Compiladores: princípios, técnicas e ferramentas. Tradução: Daniel Vieira; Revisão Técnica: Mariza Bigonha - 2ed. São Paulo: Pearson Addison-Wesley, 2008.
Cronograma de Aulas

Início

Fim

Descrição
09/03/2015
11/03/2015
Introdução e Conceitos Básicos
09/03/2015
10/04/2015
Introdução, conceitos básicos, um compilador simples e análise léxica
13/03/2015
01/04/2015
Um Compilador Simples
06/04/2015
08/04/2015
Análise Léxica
10/04/2015
10/04/2015
Definição do Trabalho Final
13/04/2015
17/04/2015
Análise Sintática
13/04/2015
24/04/2015
Compiladores: Análise Sintática
20/04/2015
20/04/2015
Análise Sintática: Uso do ANTLR
22/04/2015
24/04/2015
Integração entre Analisadores Léxico e Sintático
27/04/2015
29/04/2015
Definição Dirigida por Sintaxe e AST - Definições
27/04/2015
08/05/2015
Tradução Dirigida por Sintaxe
04/05/2015
04/05/2015
AST - Uso do ANTLR
06/05/2015
08/05/2015
Acompanhamento de Projetos
11/05/2015
15/05/2015
Compiladores: Análise Semântica
11/05/2015
13/05/2015
Análise Semântica
15/05/2015
15/05/2015
Análise Semântica: Uso do ANTLR
18/05/2015
22/05/2015
Compiladores: Código Intermediário
18/05/2015
20/05/2015
Código Intermediário
22/05/2015
22/05/2015
Código intermediário: exercícios
25/05/2015
29/05/2015
Ambientes de Execução
01/06/2015
01/06/2015
Acompanhamento de Projetos
03/06/2015
08/06/2015
Máquina Virtual Java
10/06/2015
12/06/2015
Geração de Código
15/06/2015
17/06/2015
Acompanhamento de Projetos
19/06/2015
26/06/2015
Otimização de Código
29/06/2015
06/07/2015
Apresentação do Trabalho Final
Avaliações
Data Descrição
24/04/2015 1ª Avaliação
29/05/2015 2ª Avaliação
26/06/2015 3ª Avaliação
06/07/2015 4ª Avaliação
: Referência consta na biblioteca
Referências Básicas
Tipo de material Descrição
Referências Complementares
Tipo de material Descrição
Notícias da Turma
: Visualizar

Título

Data
Último dia para apresentar o Trabalho Final 03/07/2015
Notas da 3a Avaliação publicadas 23/06/2015
Atividades Práticas 20/03/2015
Não haverá aula hoje (11/03) 11/03/2015
Início das aulas 09/03/2015

SIGAA | Superintendência de Tecnologia da Informação - STI/UFPI - (86) 3215-1124 | sigjb05.ufpi.br.instancia1 vSIGAA_3.12.1143 16/10/2024 22:29