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. Discussão final obrigatória
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.
A Discussão é realizado em grupo, 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 4 (quatro) valores.
Os pormenores dos parâmetros de avaliação desta entrega estão disponíveis no enunciado do projecto.
Serão executados testes automáticos nesta entrega.

A Entrega Final pressupõe que todo o projecto foi implementado.
Esta entrega tem uma classificação máxima de 16 (dezasseis) 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.

A Discussão consiste num conjunto de questões a que os alunos devem dar resposta. Durante a discussão será dada aos alunos a oportunidade de efectuarem pequenas alterações ao compilador entregue.
A não comparência à Discussão conduz automaticamente a uma classificação de 0 (zero) na componente de avaliação relativa ao Projecto .

Datas Importantes

As datas relativas ao projecto e à sua avaliação são as seguintes:

  • 2008/03/03 (publicação do enunciado)
  • 2008/04/04 (até às 12:00) (entrega intermédia)
  • 2008/06/09 (até às 12:00) (entrega final)
  • 2008/06/11 - 2008/06/14 (discussão)

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 seguintes bibliotecas 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 é o Berkeley Yacc (abaixo).

Pacote de Testes

O seguinte pacote contém exemplos de programas NX6: