Saltar para:
Logótipo
Você está em: Início > CC3001
Mapa das Instalações
FC6 - Departamento de Ciência de Computadores FC5 - Edifício Central FC4 - Departamento de Biologia FC3 - Departamento de Física e Astronomia e Departamento GAOT FC2 - Departamento de Química e Bioquímica FC1 - Departamento de Matemática

Compiladores

Código: CC3001     Sigla: CC3001     Nível: 300

Áreas Científicas
Classificação Área Científica
OFICIAL Ciência de Computadores

Ocorrência: 2015/2016 - 1S

Ativa? Sim
Unidade Responsável: Departamento de Ciência de Computadores
Curso/CE Responsável: Licenciatura em Ciência de Computadores

Ciclos de Estudo/Cursos

Sigla Nº de Estudantes Plano de Estudos Anos Curriculares Créditos UCN Créditos ECTS Horas de Contacto Horas Totais
L:CC 32 Plano de estudos a partir de 2014 3 - 6 56 162
MI:ERS 47 Plano Oficial desde ano letivo 2014 3 - 6 56 162

Língua de trabalho

Português

Objetivos

Compreensão e implementação de um compilador e interpretador de uma linguagem de programação.

Resultados de aprendizagem e competências

Ser capaz de implementar um compilador para uma linguagem de programação simples.

Modo de trabalho

Presencial

Programa

Introdução ao processamento de linguagens de programaçao. Compiladores versus Interpretadores. Análise Léxica. Geradores automáticos de analisadores léxicos. Análise sintáctica (parsers LL, LR e LALR). Geradores de parsers. Sintaxe abstracta. Análise semântica: tabelas de símbolos, verificação de tipos. Registos de activação. Tradução para código intermédio. Geração de código: grafos de fluxo de dados, alocação de registos. 

Bibliografia Obrigatória

Appel Andrew W. 1960-; Modern compiler implementation in ML. ISBN: 978-0-521-60764-3 pbk
Louden Kenneth C.; Compiler construction. ISBN: 978-0-534-93972-4 hbk

Bibliografia Complementar

Aho Alfred V. 070; Principles of compiler design. ISBN: 0-201-00022-9 1 345$20

Métodos de ensino e atividades de aprendizagem

Aulas teóricas expositivas dos problemas e respectivas técnicas para os resolver. Construção de um compilador de uma linguagem imperativa para uma máquina virtual simples.

Tipo de avaliação

Avaliação distribuída com exame final

Componentes de Avaliação

Designação Peso (%)
Exame 70,00
Trabalho laboratorial 30,00
Total: 100,00

Componentes de Ocupação

Designação Tempo (Horas)
Elaboração de projeto 2,00
Estudo autónomo 2,00
Frequência das aulas 4,00
Total: 8,00

Fórmula de cálculo da classificação final

0.15*nota do trabalho1 + 0.15*nota do trabalho2 + 0.7*nota do exame

Observações

1) Primeiro Trabalho Prático de Compiladores

O primeiro trabalho pode ser em grupo de 2 ou individual e tem que ser enviado por email para amf@dcc.fc.up.pt com o Subject: TRABALHO COMPILADORES 1, até dia 3 de Novembro. A avaliação pressupõe uma apresentação do trabalho que será feita nas aula práticas de 4 e 5 de Novembro.

Implemente um anlisador sintáctico de um subconjunto da linguagem de programação C0 (http://c0.typesafety.net/tutorial/). O subconjunto da linguagem deverá incluir:

 - Inteiros

- Booleanos

- Expressões aritméticas

- Expressões booleanas

- Atribuições

- If then else

- Ciclos While

O parser deverá fazer análise sintáctica do programa em Julia construindo uma representação da árvore abstracta (data do Haskell / struct em C / class Java).



2) Segundo trabalho prático de Compiladores

O segundo trabalho pode ser em grupo de 2 ou individual e tem que ser enviado por email para amf@dcc.fc.up.pt com o Subject: TRABALHO COMPILADORES 2, até dia 15 de Dezembro. A avaliação pressupõe uma apresentação do trabalho que será feita nas aula práticas de 16 e 17 de Dezembro.

2.a) Traduzir a estrutura construída no primeiro trabalho para outra (data do Haskell, struct do C ou class do C++) que represente o programa em código intermédio de 3 endereços (http://en.wikipedia.org/wiki/Three_address_code). 

 2.b) A partir da estrutura que representa o código intermédio imprimir num ficheiro o código MIPS correspondente.

Recomendar Página Voltar ao Topo
Copyright 1996-2025 © Faculdade de Ciências da Universidade do Porto  I Termos e Condições  I Acessibilidade  I Índice A-Z  I Livro de Visitas
Página gerada em: 2025-06-16 às 04:36:12 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias