Skip to content

Latest commit

 

History

History

README.org

Projeto de Compilador – Entrega, Avaliação, Regras

O trabalho consiste no projeto e implementação de um compilador para uma determinada gramática de linguagem de programação especificada em cada semestre. Este documento estabelece as regras gerais do projeto de compilador, com links para especificação das etapas.

Especificação, pesos, e prazos de entrega

A entrega sempre é até as 23:59 de dois dias antes da aula de avaliação, com exceção da última etapa cuja data de entrega fica definida para o último dia de aula efetiva. Exemplo: se a data de avaliação de uma data etapa é uma terça-feira, dia 2020-04-28, a entrega desta etapa deve ser feita até as 23:59 de domingo 2020-04-26.

O link para o formulário único que permite realizar a entrega de todas as etapas encontra-se abaixo.

Prazos e Especificação

Planejamento para este semestre

EtapaDescrição e EspecificaçãoPeso (%)Cumul. (%)
E1Análise Léxica (obsoleto)1010
E2Análise Sintática (obsoleto)1525
E3Árvore Sintática Abstrata (obsoleto)1540
E4Análise Semântica (obsoleto)1555
E5Geração de Código (obsoleto)2075
E6Suporte de Execução (obsoleto)1590

Procedimento de Entrega

O seu diretório de trabalho deve conter um arquivo Makefile com todos os comandos necessários à compilação do seu programa, automatizados através da chamada make, incluindo a invocação de flex, bison e gcc. A execução de make deve gerar um executável no mesmo diretório de trabalho chamado exatamente etapaX (onde X é o dígito identificador da etapa).

Cada grupo deve compactar o conteúdo do seu diretório de trabalho executando o comando tar cvzf etapaX.tgz . (onde X é o dígito identificador da etapa) dentro do mesmo diretório. Não utilizem outros programas, formatos, comandos, nomes ou organizações de diretórios para esse operação. Será gerado um arquivo chamado etapaX.tgz. O arquivo etapaX.tgz deve ser enviado por e-mail, com tamanho máximo de 100KBytes.

Ao submeter solução para qualquer tarefa desta disciplina, tu declaras: (1) que a submissão reflete a solução de sua própria autoria para o problema proposto; (2) que a mesma não foi copiada ou extraída, seja parcial ou integralmente, de nenhuma fonte além daquelas públicas consultadas e corretamente referenciadas no trabalho; e (3) estar ciente de que o plágio é uma infração grave segundo o Código Disciplinar Discente da UFRGS. Caso concordes com esta declaração, clique no link abaixo para submeter:

Formulário de entrega

Formação dos Grupos

Os trabalhos devem ser realizados em grupos de dois alunos. Não serão aceitos grupos de três alunos ou trabalhos individuais em nenhuma hipótese, exceto para acomodar número ímpar de alunos na turma. A definição de grupos é definitiva, válida do início ao fim do semestre.

Uma vez formado, a dupla informa os seus membros ao professor por e-mail. O aluno deve utilizar obrigatoriamente a conta de e-mail do instituto de informática. Na mensagem, o aluno informa os nomes e códigos de aluno dos componentes do grupo.

Regras de desenvolvimento

Existe uma certa flexibilidade na organização do código fonte, mas há uma série de regras que devem ser observadas para permitir que os testes automáticos sejam realizados corretamente.

Remova todos os comandos printf e afins antes da submissão, pois o compilador deve ser silencioso salvo quando indicado o contrário na especificação individual de cada etapa. Utilize somente as ferramentas padrão, como make, flex, bison e gcc. Os arquivos fornecidos em cada uma das especificações (por exemplo, tokens.h) não devem ser modificados. Não use nenhuma estrutura hierárquica de diretórios. Todos os seus arquivos, incluindo fontes, teste, Makefile, executável, devem estar no mesmo diretório de trabalho. Eles serão compactados pelo seu comando tar e descompactados por um comando correspondente dentro de um único diretório onde serão testados.

Avaliação das Etapas

Cada etapa do projeto de compiladores é avaliada objetiva e subjetivamente, com pesos iguais. A nota objetiva é definida por testes automáticos (quando possível) que verificam as soluções dos alunos. A nota subjetiva é definida pelo professor, mediante apresentação pelos membros do grupo em aula definida para tal. Esta nota compreende a apresentação do trabalho, o conhecimento técnico, as opções argumentadas de implementação, a originalidade, a qualidade do cógigo, a legibilidade, os comentários assim como a organização do código e os recursos apresentados. A nota final pode ser diferente para cada membro do grupo.

Importante

  • Todos os membros do grupo devem estar presente na apresentação obrigatória
  • Etapas não apresentadas na data prevista recebem nota zero.

Política de Atraso

Todas as etapas do projeto de compilador tem a mesma política de atraso. As soluções de cada etapa devem ser enviadas até as datas de entrega especificadas neste local. As soluções recebidas antes da data limite serão avaliadas normalmente, até 100%. Qualquer solução recebida após a data limite inicialmente estabelecida receberá nota zero. A nota objetiva de cada etapa pode ser recuperada em até 80%.