|
|
Line 1: |
Line 1: |
| {{PRJCompiladoreAvisosEN20172018}} | | {{PRJCompiladoreAvisosEN20172018}} |
− | <!--{{PRJCompiladoreAvisosEE20172018}}-->
| + | {{PRJCompiladoreAvisosEE20172018}} |
| {{PRJCOMandatory20172018}} | | {{PRJCOMandatory20172018}} |
| {{TOCright}} | | {{TOCright}} |
Revision as of 20:43, 6 July 2018
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: 2018/03/23 17:00 (inicial); 2018/04/20 17:00 (intercalar); 2018/05/21 17:00 (final); 2018/05/21-2018/05/25 (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 '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.
- 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.
|
AVISOS - Avaliação em Época Especial
|
Esclarecimento de dúvidas:
- Consultar sempre o corpo docente atempadamente: presencialmente ou através do endereço oficial da disciplina [2].
- 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: 2018/07/26 10:00 (entrega do projecto); 2018/07/26 11:00 (teste prático).
- A não realização da entrega do projecto até à hora limite implica a exclusão da avaliação do projecto e, por consequência, da avaliação da disciplina no ano lectivo actual.
- O teste prático é presencial e obrigatório. A sua não realização implica a exclusão da avaliação do projecto e, por consequência, da avaliação da disciplina no ano lectivo actual.
- 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 CVS.
- Apenas se consideram para avaliação os projectos existentes no repositório CVS oficial.
- 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 pelo aluno que o entrega.
- Fraudes na execução do projecto terão como resultado a exclusão dos alunos implicados do processo de avaliação no ano lectivo actual.
|
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.
|
O compilador, escrito em C++, realiza as seguintes etapas de análise para implementar a linguagem:
- análise lexical (flex);
- análise sintáctica (byacc);
- análise semântica e geração de código (CDK e extensões).
Depois de criado, o compilador pode ser obtido para gerar programas:
- obtenção dos vários módulos binários (compilação de assembly: yasm);
- ligação dos módulos numa imagem executável (RTS).
Análises Lexical e Sintáctica: Flex e BYACC
Estas duas etapas são realizadas pelas seguintes ferramentas:
- análise lexical: gerador de analisadores lexicais: flex versão 2.5.37
- análise sintáctica: gerador de analisadores LALR(1): byacc versão 1.9 (originalmente)
O código por elas produzido é, então, incorporado pela CDK no compilador em construção, sendo ligado automaticamente às restantes etapas.
As duas ferramentas estão disponíveis para a maioria dos sistemas actuais. No entanto, apesar de o número de versão poder ser o mesmo, o código gerado pode variar e não ser compatível com o ambiente oficial de teste. Recomenda-se apenas a utilização do material fornecido pela disciplina.
Análise semântica e geração de código: CDK
Estas duas etapas são realizadas pelas classes da biblioteca CDK, utilizando os padrões de desenho Composite (para representação dos nós da AST, criados pela etapa de análise sintáctica) e Visitor (classes que controlam as acções de verificação de tipos e geração de código).
Compilação de código assembly para código binário: yasm
Esta fase já não é, estritamente, parte do processo de compilação (este termina quando é gerado o código máquina). No entanto, esta etapa é importante para se poderem obter programas executáveis.
A conversão do ficheiro assembly, produzido pelo compilador, num módulo binário é realizada pela ferramenta yasm, sendo utilizado o formato de linux/elf32.
Ligação de módulos numa imagem executável: ld e RTS
A ligação dos módulos binários num programa executável (linking) é realizada pelo linker (em Linux, pelo programa GNU ld, incorporado em todas as distrubuições).
Além dos módulos que transportam o código do programador, traduzido para código máquina, é necessária a biblioteca RTS, que providencia ao programa as funções necessárias para interacção do programa com o ambiente de execução e com o utilizador (ver também o manual da RTS).