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: 2014/2015 - 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 28 Plano de estudos a partir de 2014 3 - 6 56 162
MI:ERS 43 Plano Oficial desde ano letivo 2014 3 - 6 56 162
Mais informaçõesA ficha foi alterada no dia 2014-11-10.

Campos alterados: Componentes de Avaliação e Ocupação

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. Optimização de ciclos.

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 protótipo para uma máquina virtual simples.

Tipo de avaliação

Avaliação distribuída sem exame final

Componentes de Avaliação

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

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

0.3*nota do trabalho + 0.7*nota do exame

Observações

Trabalho Práctico de Compiladores

 

 

O 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, até dia 16 de Dezembro. A avaliação pressupõe uma apresentação do trabalho que será feita nas aula práticas de 17 e 18 de Dezembro.

 

Implemente um subconjunto da linguagem de programação Julia (http://learnxinyminutes.com/docs/julia/ ,  http://julialang.org/ ) para MIPS. O subconjunto da linguagem deverá incluir:

 

- Inteiros

- Floats

- Booleanos

- Expressões aritméticas

- Expressões booleanas

- println

- Atribuições

- If then else

- Ciclos While

 

 

 O compilador deverá:

 

1) Fazer análise sintáctica do programa em Julia construindo uma representação da árvore sintáctica (data do Haskell / struct em C / class C++) que será o input da tradução para código intermédio;

 

2) Traduzir essa estrutura 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). 

 

3) 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-2024 © 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: 2024-10-06 às 18:28:52 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias