Saltar para:
Logótipo
Você está em: Início > EIC0028

Compiladores

Código: EIC0028     Sigla: COMP

Áreas Científicas
Classificação Área Científica
OFICIAL Programação

Ocorrência: 2009/2010 - 2S

Ativa? Sim
Página Web: http://moodle.fe.up.pt/0910/course/view.php?id=750
Unidade Responsável: Departamento de Engenharia Informática
Curso/CE Responsável: Mestrado Integrado em Engenharia Informática e Computação

Ciclos de Estudo/Cursos

Sigla Nº de Estudantes Plano de Estudos Anos Curriculares Créditos UCN Créditos ECTS Horas de Contacto Horas Totais
MIEIC 151 Plano de estudos a partir de 2009/10 3 - 6 56 162

Língua de trabalho

Português

Objetivos

Fornecer os conceitos que permitam:
- compreender as fases de compilação de linguagens, em especial das linguagens imperativas e orientada por objectos;
- especificar a sintaxe e semântica de uma linguagem de programação;
- compreender e utilizar as estruturas de dados e os algoritmos principais usados na implementação de compiladores.

As competências adquiridas permitirão aos estudantes:
- desenvolver e implementar em software processadores de linguagens artificiais e de informação especificada textualmente segundo determinadas regras lexicais e sintácticas;
- conceber e implementar em software as várias etapas relacionadas com compiladores, nomeadamente:
- expressões regulares e autómatos finitos;
- analisadores sintácticos e semânticos;
- analisadores semânticos;
- optimizações de código;
- geradores de código para processadores ou para máquinas virtuais;

Programa

- Introdução. Fases da compilação e estrutura típica de um compilador.
- Análise lexical. Expressões regulares e autómatos finitos.
- Análise sintáctica. Gramáticas. Implementação de analisadores sintácticos. Tratamento de erros.
- Análise semântica. Implementação de analisadores semânticos. Verificação de tipos.
- Ambientes de execução. Organização de memória e mecanismos para a passagem de parâmetros.
- Geração de código intermédio de baixo e de alto-nível.
- Técnicas de geração de código final e de optimização.

Bibliografia Obrigatória

A. Aho, M. Lam, R. Sethi, J. Ullman; Compilers: Principles, Techniques, and Tools, 2nd Edition, Addison Wesley, 2007. ISBN: 0321486811 (Existe 1.a edição (1986) na biblioteca)
Appel, Andrew Wilson; Modern Compiler Implementation in Java, Cambridge University Press, 2002. ISBN: ISBN 0-521-82060-X

Bibliografia Complementar

Cooper, Keith D.; Engineering a compiler. ISBN: 1-55860-699-8
Terence Parr; The Definitive ANTLR Reference - Building Domain Specific Languages, The Pragmatic Bookshelf, 2007. ISBN: 978-09787392-4-9
Louden, Kenneth C.; Compiler construction. ISBN: 0-534-93972-4
Muchnick, Steven; Advanced Compiler Design and Implementation, Morgan Kaufman Publishers, 1997. ISBN: ISBN 1-55860-320-4

Métodos de ensino e atividades de aprendizagem

Aulas teóricas: exposição dos assuntos, acompanhada por exemplos e pela apresentação de pistas para resolução dos problemas das aulas práticas e do trabalho prático.

Aulas teórico-práticas: resolução de problemas e discussão de questões relacionadas com o trabalho prático.

Software

ANTLR - Another Tool for Language Recognition
JASMIN, http://jasmin.sourceforge.net/.
NetBeans 6
JavaCC, https://javacc.dev.java.net/
COINS, http://www.coins-project.org/international/

Palavras Chave

Ciências Tecnológicas > Tecnologia > Tecnologia de computadores > Tecnologia de software

Tipo de avaliação

Avaliação distribuída sem exame final

Componentes de Avaliação

Descrição Tipo Tempo (Horas) Peso (%) Data Conclusão
Participação presencial (estimativa) Participação presencial 51,00
Realização do trabalho prático Defesa pública de dissertação, de relatório de projeto ou estágio, ou de tese 45,00
Exames escritos Exame 3,00
Estudo para os Exames Exame 12,00
Total: - 0,00

Componentes de Ocupação

Descrição Tipo Tempo (Horas) Data Conclusão
Estudo semanal Estudo autónomo 51
Total: 51,00

Obtenção de frequência

Realização do trabalho prático com aproveitamento (nota igual ou superior a 50% da nota máxima do trabalho prático).

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

ÉPOCA NORMAL:
Nota final = ROUND(0,70*AD + 0,15*T1 + 0,15*T2)
- AD: nota da avaliação distribuída (trabalho prático) [0..20]
- T1: nota no primeiro teste [0..20]
- T2: nota no segundo teste [0..20]
O aluno obtém aproveitamento na disciplina na época normal se obtiver frequência (i.e., AD >=10), se obtiver uma nota média nos testes (T1 e T2) igual ou superior a 8 valores, e se obtiver Nota final superior ou igual a 10 valores.

ÉPOCA DE RECURSO:
Nota final = ROUND(0,70*AD + 0,30*EX)
- AD: nota da avaliação distribuída (trabalho prático) [0..20]
- EX: nota no exame de recurso [0..20]
O aluno obtém aproveitamento na disciplina na época normal se obtiver frequência (i.e., AD >=10), se obtiver uma nota no exame (EX) igual ou superior a 8 valores, e se obtiver Nota final superior ou igual a 10 valores.

Avaliação especial (TE, DA, ...)

- Realização do trabalho prático com aproveitamento (nota igual ou superior a 50% da nota máxima do trabalho prático). O trabalho prático, devido à sua extensão, terá de ser realizado no decurso do semestre lectivo.

ÉPOCA NORMAL:
- Testes T1 e T2.

ÉPOCA DE RECURSO:
- Exame de recurso (EX).

A classificação final é obtida como previamente estipulado na secção: "Cálculo da Classificação Final".

Melhoria de classificação

A classificação da componente distribuída (AD) não é susceptível de melhoria no ano lectivo em curso e conta para todas as épocas.

A componente relativa aos testes e exame (30% da nota final) poderá ser melhorada, de acordo com as normas gerais de avaliação.

Observações

Trabalho prático:
- Desenvolvimento das fases de análise léxica, análise sintática, análise semântica e geração de código de um compilador para uma linguagem imperativa simples.
- Este trabalho deverá ser realizado em grupos de no máximo 2 alunos.

Os testes (T1 e T2) e o exame de recurso (EX) são provas com consulta.

Os estudantes que tenham obtido frequência no ano lectivo anterior (2008/2009) podem abdicar de uma nova classificação da componente distribuída (AD). Nesse caso, a nota AD obtida no ano lectivo anterior será utilizada nas fórmulas apresentadas para cálculo da nota final na disciplina.
Recomendar Página Voltar ao Topo
Copyright 1996-2024 © Faculdade de Engenharia da Universidade do Porto  I Termos e Condições  I Acessibilidade  I Índice A-Z  I Livro de Visitas
Página gerada em: 2024-07-22 às 14:26:07 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias