| AVISOS - Avaliação em Época Normal
|
|
Esclarecimento de dúvidas:
- Consultar sempre o corpo docente atempadamente: presencialmente ou através do endereço oficial da disciplina [1].
- Não utilizar fontes de informação não oficialmente associadas ao corpo docente (podem colocar em causa a aprovação à disciplina).
- Não são aceites justificações para violações destes conselhos: quaisquer consequências nefastas são da responsabilidade do aluno.
|
|
Requisitos para desenvolvimento, material de apoio e actualizações do enunciado (ver informação completa em Projecto de Compiladores):
- O material de apoio é de uso obrigatório e não pode ser alterado.
- Verificar atempadamente (mínimo de 48 horas antes do final de cada prazo) os requisitos exigidos pelo processo de desenvolvimento.
|
|
Processo de avaliação (ver informação completa em Avaliação do Projecto):
- Datas: 2015/03/25 12:00 (inicial); 2015/04/14 12:00 (intercalar); 2015/05/20 12:00 (final); 2015/05/20-2015/05/27 (teste prático).
- Todas as entregas são cruciais para o bom desenvolvimento do projecto, sendo obrigatórias: a não realização de uma entrega implica a exclusão da avaliação do projecto e, por consequência, da avaliação da disciplina.
- Verificar atempadamente (até 48 horas antes do final de cada prazo) os requisitos exigidos pelo processo de avaliação, incluindo a capacidade de acesso ao repositório.
- Apenas se consideram para avaliação os projectos existentes no repositório oficial. Apenas se considera para avaliação o ramo 'master'.
- Trabalhos não presentes no repositório no final do prazo têm classificação 0 (zero) (não são aceites outras formas de entrega). Não são admitidas justificações para atrasos em sincronizações do repositório. A indisponibilidade temporária do repositório, desde que inferior a 24 horas, não justifica atrasos na submissão de um trabalho.
- A avaliação do projecto pressupõe o compromisso de honra de que o trabalho correspondente foi realizado pelos alunos correspondentes ao grupo de avaliação.
- Fraudes na execução do projecto terão como resultado a exclusão dos alunos implicados do processo de avaliação em curso.
|
| Material de Uso Obrigatório
|
| As bibliotecas CDK e RTS de apoio ao desenvolvimento do projecto são de uso obrigatório:
|
|
|
| A máquina virtual, fornecida para desenvolvimento do projecto, já contém todo o material de apoio.
|
| Uso Obrigatório: Repositório GIT
|
| Apenas se consideram para avaliação os projectos existentes no repositório GIT oficial. Apenas se considera para avaliação o ramo main.
Trabalhos não presentes no repositório no final do prazo têm classificação 0 (zero) (não são aceites outras formas de entrega). Não são admitidas justificações para atrasos em sincronizações do repositório. A indisponibilidade temporária do repositório, desde que inferior a 24 horas, não justifica atrasos na submissão de um trabalho.
|
Prazo de Revisão
Critérios de Avaliação
LER COM ATENÇÃO
A avaliação da entrega inicial considera a execução de intervenções em duas regiões do código do compilador em desenvolvimento, assim como a gestão do projecto correspondente.
A avaliação é realizada sobre a versão existente no CVS no final do prazo para a entrega inicial. Projectos que não apresentem alterações relativamente ao conteúdo inicial do repositório CVS não serão considerados.
Considerando que é um passo crucial na concepção do projecto, a não realização desta entrega conduz automaticamente a uma classificação de 0 (zero) na componente de avaliação relativa ao Projecto e consequente exclusão da avaliação da disciplina no ano lectivo 2014/2015.
Advertem-se os alunos sobre a consulta de colegas de anos anteriores. Estas consultas podem ser positivas, mas comportam algum risco, pois o processo e critérios de avaliação podem ter mudado. Além disso, a proficiência do colega pode majorar negativamente o resultado da avaliação em curso. Não são admitidas quaisquer justificações com base na história da disciplina.
Estas condições são aplicáveis à data da entrega inicial.
Em caso de dúvidas suscitadas por qualquer elemento neste texto, no projecto, ou na disciplina em geral, os alunos são fortemente encorajados a consultar o corpo docente.
| VALORAÇÕES
|
|
Existem 2 valores (dos 20 disponíveis para o projecto) associados a esta entrega:
- gestão do projecto: 0.5 valores
- projecto com a estrutura correcta no repositório CVS: 0.25 valores (i.e., código que não apresente a estrutura canónica de um compilador desenvolvido com a CDK é considerado sem a estrutura correcta -- consultar estas páginas sobre o desenvolvimento do projecto com base no repositório CVS)
- projecto compila e produz compilador "pwn" ("pwn", com letras minúsculas: variações correspondem a "não compilação"): 0.25 valores
Se o projecto compilar, poderão ser atribuídos mais 1.5 valores (desenvolvimento do compilador), distribuídos como se segue:
- Classes dos nós do compilador (completo): 1.0 valores
- Reutilização dos nós da CDK (simples ajuste do Compact)
- Definição ou extensão de elementos existentes (simples ajuste do Compact)
- Definição de novas declarações/definições (variáveis/funções) (completo)
- Definição de novas instruções (completo)
- Definição de novas expressões (completo)
- Definição de outros elementos (completo)
- Sugere-se (por simplicidade de gestão do código) a separação das várias classes de nós em namespaces coerentes (à la Compact)
- Não é necessário criar as regras no BYACC para criar os nós (se for feito, é conveniente para o progresso do projecto, mas não é avaliado nesta entrega)
- Métodos dos "visitors" (completo): 0.5 valores
- Reutilização de métodos já definidos (simples ajuste do Compact)
- Definição de todos os métodos do_X (correspondentes ao nó da class X) em todos os visitors (simples extensão do Compact)
- Métodos novos podem estar vazios, mas devem existir
- Métodos correspondentes a acções semelhantes às existentes devem ser modelados nos existentes (exemplo, do_program_node -> do_function_definition_node) (mesmo que não modificados numa primeira instância)
- A presença de implementações de semântica no postfix_writer (tabela de símbolos, validação de tipos, etc.) não é penalizada, mas não será avaliada nesta entrega
|
| PENALIZAÇÕES
|
|
Existem penalizações relativas à (deficiente) execução do projecto.
São considerados os seguintes aspectos preliminares:
- A linguagem do projecto contém a linguagem Simple, pelo que não há razão para não utilizar completamente o compilador Simple, eventualmente com pequenas alterações.
- A semântica da linguagem do projecto contém a da linguagem Simple, pelo que a implementação de alguns aspectos da linguagem do projecto não requer qualquer reimplementação relativamente ao Simple.
- O compilador Simple foi fornecido completamente funcional, assim como a versão inicial do compilador do projecto no respositório CVS (igual ao Simple e apenas alterado, para ter um nome apropriado).
- A criação de novos nós não apresenta quaisquer dificuldades (são classes muito simples).
- Os métodos (na sua maioria, vazios) dos "visitors" são simples paralelos com as classes dos nós e os que não estão vazios são quase 100% reutilizáveis na nova linguagem.
- O compilador é obrigatoriamente desenvolvido em C++, fazendo-se uso do material de apoio.
Considerando os aspectos 1. a 6., são aplicadas as seguintes penalizações:
- Destruição de funcionalidade do compilador Simple sem substituição por funcionalidade equivalente do compilador do projecto: 2 valores
- Utilização de funções e estruturas C, quando existem alternativas directas C++ (malloc em lugar de new, por exemplo; strcmp, etc. em lugar da classe std::string; e outras): penalização máxima de 1 valor
- Não utilização de qualquer material obrigatório ou não satisfação dos critérios mínimos: 2 valores e considera-se entrega não realizada (implica exclusão da avaliação)
|
Legenda
PAUTA PROVISÓRIA
A entrega "zero" vale 2 valores em 20.
Os alunos são encorajados a compreender/verificar/corrigir os problemas reportados, especialmente nos casos em que exista anotação explícita na pauta.
| Anotações da Tabela
|
- pnode: o program_node não existe (devia ser function_definition_node ou semelhante)
- lvals: faltam nós correspondentes a alguns left-values (um left-value é uma entidade que pode estar do lado esquerdo de uma atribuição)
- funcs: faltam nós correspondentes a funções ou têm problemas
- exprs: faltam expressões
- stop, next: o valor não corresponde a um literal
- [outras anotações específicas]: contactar o professor responsável
|
Pauta
<runphp>
echo<<<___EOT___
<colgroup width="44"></colgroup>
<colgroup span="2" width="43"></colgroup>
<colgroup width="48"></colgroup>
<colgroup width="109"></colgroup>
<colgroup width="48"></colgroup>
<colgroup width="109"></colgroup>
<colgroup width="48"></colgroup>
<colgroup width="109"></colgroup>
<colgroup span="2" width="48"></colgroup>
<colgroup width="112"></colgroup>
<colgroup width="122"></colgroup>
<tbody>
</tbody>
|
Nota |
Total |
Pontos Positivos |
Pontos Negativos |
Obs. |
|
CVS |
Compilação |
Nós, Métodos de Visita |
Simple |
Bad code |
| Grupo |
2.00 |
2.00 |
0.25 |
Problemas |
0.25 |
Problemas |
1.50 |
Problemas |
4.00 |
1.00 |
Problemas |
| 01 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 02 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 03 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 04 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 05 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 06 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 07 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 08 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 09 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 10 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 11 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 12 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 13 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 14 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 15 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 16 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 17 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 18 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 19 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 20 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 21 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 22 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 23 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 24 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 25 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 26 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 27 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 28 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 29 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 30 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 31 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 32 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 33 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 35 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 36 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 37 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 38 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 39 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 40 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 41 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 42 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 43 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 44 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 45 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 46 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 47 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 48 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 49 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 50 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 51 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 52 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 53 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 54 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 55 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 56 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 57 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 58 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 59 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 60 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 61 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 62 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 63 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 64 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 65 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 66 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 67 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 68 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 69 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 70 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 71 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 73 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 74 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 75 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 76 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 77 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 78 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 79 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 81 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 82 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 83 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 84 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 85 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 86 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 87 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 89 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 90 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 91 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 93 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 94 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
| 96 |
NA |
0.00 |
|
|
|
|
|
|
|
|
|
|
___EOT___;
</runphp>