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.
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.
| Etapa | Descrição e Especificação | Peso (%) | Cumul. (%) |
|---|---|---|---|
| E1 | Análise Léxica (obsoleto) | 10 | 10 |
| E2 | Análise Sintática (obsoleto) | 15 | 25 |
| E3 | Árvore Sintática Abstrata (obsoleto) | 15 | 40 |
| E4 | Análise Semântica (obsoleto) | 15 | 55 |
| E5 | Geração de Código (obsoleto) | 20 | 75 |
| E6 | Suporte de Execução (obsoleto) | 15 | 90 |
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 |
|---|
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.
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.
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.
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%.