Compiladores
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Programação |
Ocorrência: 2007/2008 - 2S
Ciclos de Estudo/Cursos
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 OO;
- 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.
Programa
- Introdução. Fases da compilação e estrutura típica de um compilador.
- Análise léxica. Expressões regulares e autómatos finitos.
- Análise sintática. Fundamentos teóricos. Gramáticas. Algoritmos para análise sintática. Tratamento de erros.
- Análise semântica. Verificação de tipos.
- Ambientes de execução. Organização de memória e mecanismos para a passagem de parâmetros.
- Técnicas de geração de código intermédio.
- Técnicas de geração de código final e de optimização.
Bibliografia Obrigatória
Louden, Kenneth C.;
Compiler construction. ISBN: 0-534-93972-4
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)
Bibliografia Complementar
Cooper, Keith D.;
Engineering a compiler. ISBN: 1-55860-699-8
Crespo, Rui Gustavo;
Processadores de linguagens. ISBN: 972-8469-01-2
Terence Parr; The Definitive ANTLR Reference - Building Domain Specific Languages, The Pragmatic Bookshelf, 2007. ISBN: 978-09787392-4-9
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
Microsoft Visual Studio 2005
ANTLR - Another Tool for Language Recognition
NetBeans 6
Palavras Chave
Ciências Tecnológicas > Tecnologia > Tecnologia de computadores > Tecnologia de software
Tipo de avaliação
Avaliação distribuída com exame final
Componentes de Avaliação
Descrição |
Tipo |
Tempo (Horas) |
Peso (%) |
Data Conclusão |
Aulas da disciplina (estimativa) |
Participação presencial |
48,00 |
|
|
Resolução de exercícios |
Teste |
24,00 |
|
2008-05-31 |
Trabalho prático |
Trabalho escrito |
55,00 |
|
2008-05-31 |
Exame final |
Exame |
3,00 |
|
2008-06-27 |
|
Total: |
- |
0,00 |
|
Componentes de Ocupação
Descrição |
Tipo |
Tempo (Horas) |
Data Conclusão |
Acompanhamento/Preparação para o exame |
Estudo autónomo |
30 |
2008-06-27 |
|
Total: |
30,00 |
|
Obtenção de frequência
Realização do trabalho prático.
Fórmula de cálculo da classificação final
0.40*TP + 0.60*EX
Avaliação especial (TE, DA, ...)
A realização do trabalho prático é obrigatória.
O trabalho prático, devido à sua extensão, terá de ser realizado no decurso do semestre lectivo.
Melhoria de classificação
A classificação da componente distribuída não é susceptível de melhoria no ano lectivo em curso e conta para todas as épocas. A componente relativa ao exame 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 intermédio de um compilador para uma linguagem imperativa simples.
Este trabalho deverá ser realizado em grupos de no máximo 2 alunos.
O exame final é uma prova com consulta.