Código: | CC3001 | Sigla: | CC3001 | Nível: | 300 |
Áreas Científicas | |
---|---|
Classificação | Área Científica |
OFICIAL | Ciência de Computadores |
Ativa? | Sim |
Unidade Responsável: | Departamento de Ciência de Computadores |
Curso/CE Responsável: | Licenciatura em Ciência de Computadores |
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 |
Compreensão e implementação de um compilador e interpretador de uma linguagem de programação.
Ser capaz de implementar um compilador para uma linguagem de programação simples.
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.
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.
Designação | Peso (%) |
---|---|
Exame | 70,00 |
Trabalho laboratorial | 30,00 |
Total: | 100,00 |
Designação | Tempo (Horas) |
---|---|
Elaboração de projeto | 2,00 |
Estudo autónomo | 2,00 |
Frequência das aulas | 4,00 |
Total: | 8,00 |
0.15*nota do trabalho1 + 0.15*nota do trabalho2 + 0.7*nota do exame
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.