Método de Avaliação
A avaliação relativa à componente do Projecto processa-se em várias fases:
- (Avaliação aleatória contínua do conteúdo do repositório CVS)
- (Visualização voluntária nos laboratórios)
- Entrega intermédia
- Entrega final
- Discussão final obrigatória
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.- Enunciado do projecto: enunciado-200803261740.pdf
- Manual de referência da linguagem: nx6-ref-200804081437.pdf
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-200803032033.pdf
- enunciado-200803261740.pdf
- nx6-ref-200803032345.pdf
- nx6-ref-200803041008.pdf
- nx6-ref-200803261740.pdf
- nx6-ref-200804081437.pdf
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.- Enunciado do projecto: enunciado-200803261740.pdf
- Manual de referência da linguagem: nx6-ref-200804081437.pdf
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-200803032033.pdf
- enunciado-200803261740.pdf
- nx6-ref-200803032345.pdf
- nx6-ref-200803041008.pdf
- nx6-ref-200803261740.pdf
- nx6-ref-200804081437.pdf
- enunciado-200803032033.pdf
- enunciado-200803261740.pdf
- nx6-ref-200803032345.pdf
- nx6-ref-200803041008.pdf
- nx6-ref-200803261740.pdf
- nx6-ref-200804081437.pdf
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:
- LibCDK3 - "Compiler Development Kit" libcdk3-200803011832.tar.bz2
- LibRTS - "Run Time System" librts-200703171921.tar.bz2
O compilador Compact exemplifica a utilização das bibliotecas acima:
- Compact compact-200803011832.tar.bz2
O gerador de analisadores lexicais é a ferramenta GNU Flex.
O gerador LALR(1) a utilizar é o Berkeley Yacc (abaixo).
- BYACC (versão da disciplina; compatível com C++) (tar.bz2)
- FlexLexer.h (para flex >= 2.5.31, pelo menos; não usar com flex 2.5.4)
- compact-200803011832.tar.bz2
- libcdk3-200803011832.tar.bz2
- BYACC (versão da disciplina; compatível com C++) (tar.bz2)
- FlexLexer.h (para flex >= 2.5.31, pelo menos; não usar com flex 2.5.4)
- compact-200803011832.tar.bz2
- libcdk3-200803011832.tar.bz2
Pacote de Testes
O seguinte pacote contém exemplos de programas NX6: