|
| |
Compiladores (Cpl)
Resumo
- Objectivos
Qualquer programa escrito numa linguagem de programação tem que ser
traduzido antes de ser executado. Esta tradução é tipicamente realizada por
um programa designado de compilador. Esta unidade curricular tem como
objectivo principal aprofundar os conhecimentos sobre linguagens de
programação, através da introdução dos princípios e técnicas utilizadas
nessa tradução, das questões associadas à implementação de um compilador e
da aplicação de técnicas de resolução de problemas estruturalmente
complexos.
- Resultados de aprendizagem
Os estudantes que terminam com sucesso esta unidade curricular serão
capazes de:
-
Compreender os princípios de cada uma das fases do processo de compilação
-
Compreender o papel de cada bloco constituinte de um compilador típico
-
Mostrar conhecimento dos problemas e técnicas aplicadas em cada uma das
fases do processo de compilação
-
Aplicar técnicas padrão na resolução de problemas típicos que surgem na
construção de um compilador
-
Compreender como um compilador pode tirar partido das características do
ambiente de execução (real ou virtual) na geração de código
- Avaliação dos resultados de aprendizagem
Os resultados da aprendizagem (1), (2), (3) e (5) são avaliados
individualmente através de teste escrito. Durante as aulas práticas e na
discussão final dos trabalhos práticos, realizada em grupo, são avaliados os
resultados da aprendizagem (4) e (5).
- Programa resumido
Introdução: O que é um compilador?; fases do processe de compilação;
estrutura genérica de um compilador. Análise lexicográfica (Scanning):
Expressões regulares, autómatos finitos e infinitos; construção de
expressões regulares através de autómatos finitos. Análise sintáctica
(Parsing): Sintaxe de expressões; gramáticas livres de contexto; BNF;
árvores de sintaxe abstractas, Top-Down Bottom-Up parsing. Análise
semântica: Tabelas de símbolos; padrão Visitor; verificação de tipos.
Optimizações: Constant folding; Tree Rewriting. Geração de código: Estrutura
do código; selecção de instruções.
|