Método de Avaliação

A avaliação relativa à componente do Projecto processa-se em várias fases:

  1. (Avaliação aleatória contínua do conteúdo do repositório CVS)
  2. (Visualização voluntária nos laboratórios)
  3. Entrega intermédia
  4. Entrega final
  5. Teste prático (obrigatório)

O Projecto (trabalho conducente às entregas intermédia e final) é realizado por grupos de exactamente 2 (dois) elementos, durante o período estabelecido. A inscrição do grupo é feita no agrupamento Projecto.
O Teste Prático é realizado individualmente, em data e local a agendar.

A Entrega Intermédia avalia o estado do projecto relativamente a um mínimo de funcionalidade.
Esta entrega tem uma classificação máxima de (a definir) valores.
Serão executados testes automáticos nesta entrega.
Os pormenores dos parâmetros de avaliação desta entrega estão disponíveis no enunciado do projecto.

A Entrega Final pressupõe que todo o projecto foi implementado.
Esta entrega tem uma classificação máxima de (a definir) valores.
Serão executados testes automáticos nesta entrega.
Os testes correspondem a uma série de programas que deverão ser compilados pelo resultado do projecto de cada grupo e cuja execução deve corresponder a um conjunto de resultados padrão. Para esta entrega, cada grupo deve produzir um relatório (máximo de quatro páginas de texto sem formatação) (entrega via CVS).
A não realização da Entrega Final conduz automaticamente a uma classificação de 0 (zero) na componente de avaliação relativa ao Projecto.

O Teste Prático consiste num conjunto de questões (correspondentes a pequenas alterações/extensões ao enunciado) a resolver com base na implementação submetida para a avaliação correspondente à entrega final. Este teste avalia o conhecimento do aluno relativamente ao projecto entregue, assim como a sua capacidade de realizar alterações ao código do projecto.
A não realização do Teste Prático conduz automaticamente a uma classificação de 0 (zero) na componente de avaliação relativa ao Projecto.

Datas Importantes

Enunciado e Condições de Realização do Projecto

O enunciado do projecto está dividido em duas partes: a definição do problema da criação do compilador e a definição da linguagem de programação em causa. A primeira parte corresponde a um problema de programação genérico para qualquer linguagem e deve ser abordado como qualquer projecto de software. A segunda parte, mais importante no contexto da disciplina, implica a compreensão da semântica a realizar na linguagem suportada pelo compilador.

Sugere-se iniciar o desenvolvimento a partir do compilador Compact (fornecido como material de apoio) e prosseguir através de alterações incrementais (suportadas pelo repositório CVS).

Existem recursos de uso obrigatório: linguagem de trabalho (C++) e material de apoio (abaixo).

O repositório CVS é o único meio de entrega do projecto e será considerada entregue a versão lá existente à data correspondente ao fim do prazo (independentemente de serem possíveis alterações subsequentes).

O repositório deve conter um projecto passível de ser construído (compilador e biblioteca de run-time) através da invocação do comando make (este aspecto é automaticamente realizado se for utilizado o compilador Compact como base de trabalho).

Enunciado e Condições de Realização do Projecto

O enunciado do projecto está dividido em duas partes: a definição do problema da criação do compilador e a definição da linguagem de programação em causa. A primeira parte corresponde a um problema de programação genérico para qualquer linguagem e deve ser abordado como qualquer projecto de software. A segunda parte, mais importante no contexto da disciplina, implica a compreensão da semântica a realizar na linguagem suportada pelo compilador.

Sugere-se iniciar o desenvolvimento a partir do compilador Compact (fornecido como material de apoio) e prosseguir através de alterações incrementais (suportadas pelo repositório CVS).

Existem recursos de uso obrigatório: linguagem de trabalho (C++) e material de apoio (abaixo).

O repositório CVS é o único meio de entrega do projecto e será considerada entregue a versão lá existente à data correspondente ao fim do prazo (independentemente de serem possíveis alterações subsequentes).

O repositório deve conter um projecto passível de ser construído (compilador e biblioteca de run-time) através da invocação do comando make (este aspecto é automaticamente realizado se for utilizado o compilador Compact como base de trabalho).

Material de Apoio

O acesso ao material de apoio não público realiza-se mediante autenticação Fénix.

As bibliotecas CDK4 e RTS de apoio ao desenvolvimento do projecto são de uso obrigatório:

O compilador Compact exemplifica a utilização das bibliotecas acima:

O gerador de analisadores lexicais é a ferramenta GNU Flex.

O gerador LALR(1) a utilizar é byacc-1.9-ist.tar.bz2 (não utilizar outros, pois podem ser incompatíveis com o restante material de apoio).

O compilador pf2asm permite compilar directamente código Postfix. É também um exemplo (tal como o Compact) de uso d o restante material de apoio :

Este compilador é de utilização opcional (é independente da realização do projecto), mas pode ser útil para a realização de testes de protótipos de geração de código.

Pacotes de Testes

Pacotes de testes para a linguagem S9: