Difference between revisions of "Compiladores/Projecto de Compiladores"

From Wiki**3

< Compiladores
(Manual de Referência da Linguagem Og (época normal))
(Material Diverso)
 
(29 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{PRJCompiladoreAvisosEN20202021}}
+
{{PRJHEADER}}
<!--{{PRJCompiladoreAvisosEE20202021}}-->
 
{{PRJCOMandatory20202021}}
 
 
{{TOCright}}
 
{{TOCright}}
 
== Avaliação do Projecto ==
 
== Avaliação do Projecto ==
Line 11: Line 9:
 
As pautas são acompanhadas pelos critérios de avaliação. Os critérios e condições de Época Especial são parecidos com os da Época Normal. Em particular, o projecto e o teste prático são obrigatórios.
 
As pautas são acompanhadas pelos critérios de avaliação. Os critérios e condições de Época Especial são parecidos com os da Época Normal. Em particular, o projecto e o teste prático são obrigatórios.
  
== Manual de Referência da Linguagem FIR (época normal) ==
+
== Manual de Referência da Linguagem (época normal) ==
* [[Compiladores/Projecto de Compiladores/Projecto 2020-2021/Manual de Referência da Linguagem FIR|Manual de Referência da Linguagem FIR]] (enunciado)
+
* [[Compiladores/Projecto de Compiladores/Projecto 2023-2024/Manual de Referência da Linguagem TIL|Manual de Referência da Linguagem TIL]] (2023-2024)
<!--* [[Compiladores/Projecto de Compiladores/Projecto 2019-2020/Manual de Referência da Linguagem Og|Manual de Referência da Linguagem Og (2019-2020)]] (enunciado)-->
+
* Linguagens de anos anteriores: [[Compiladores/Projecto de Compiladores/Projecto 2022-2023/Manual de Referência da Linguagem MML|MML]] (2022-2023), [[Compiladores/Projecto de Compiladores/Projecto 2021-2022/Manual de Referência da Linguagem L22|L22]] (2021-2022), [[Compiladores/Projecto de Compiladores/Projecto 2020-2021/Manual de Referência da Linguagem FIR|FIR]] (2020-2021), [[Compiladores/Projecto de Compiladores/Projecto 2019-2020/Manual de Referência da Linguagem Og|Og]] (2019-2020), [[Compiladores/Projecto de Compiladores/Projecto 2018-2019/Manual de Referência da Linguagem M19|M19]] (2018-2019)
<!--* [[Compiladores/Projecto de Compiladores/Projecto 2018-2019/Manual de Referência da Linguagem M19|Manual de Referência da Linguagem M19]] (enunciado)-->
+
<!--* [[Compiladores/Projecto de Compiladores/Projecto 2020-2021/Perguntas e respostas sobre FIR|Perguntas e respostas sobre FIR]] (FAQ)-->
<!--* [[Compiladores/Projecto de Compiladores/Projecto 2018-2019/Perguntas e respostas sobre GR8|Perguntas e respostas sobre M19]] (FAQ)-->
 
  
 
== Introdução ao Desenvolvimento e Compiladores Exemplo ==
 
== Introdução ao Desenvolvimento e Compiladores Exemplo ==
Line 26: Line 23:
  
 
== Material de Apoio e Testes ==
 
== Material de Apoio e Testes ==
* [[Compiladores/Projecto de Compiladores/Repositório CVS|Repositório CVS]] - informações de localização e acesso
+
* [[Compiladores/Projecto de Compiladores/Repositório GIT|Repositório GIT]] - informações de localização e acesso
* [[Compiladores/Projecto de Compiladores/Material de Apoio ao Desenvolvimento|Material de Apoio ao Desenvolvimento]] - CDK16, RTS5, outras ferramentas (flex, bison)
+
* [[Compiladores/Projecto de Compiladores/Material de Apoio ao Desenvolvimento|Material de Apoio ao Desenvolvimento]] - CDK, RTS, outras ferramentas (flex, bison)
* [[Compiladores/Projecto de Compiladores/Testes Automáticos 2020-2021|Testes Automáticos]]
+
* Testes automáticos: https://gitlab.rnl.tecnico.ulisboa.pt/leic-a-co24/eval/co24
* [[Compiladores/Projecto de Compiladores/Máquina Virtual|Máquina Virtual]] - imagem de máquina virtual contendo todo o material de apoio
+
<!--* [[Compiladores/Projecto de Compiladores/Testes Automáticos 2022-2023|Testes Automáticos]]
 +
-->* [[Compiladores/Projecto de Compiladores/Máquina Virtual|Máquina Virtual]] - imagem de máquina virtual contendo todo o material de apoio
  
 
== Material Diverso ==  
 
== Material Diverso ==  
  
 
* [[Postfix Reference Guide]]
 
* [[Postfix Reference Guide]]
 +
* C++ references and tutorials: https://cppreference.com | https://cplusplus.com | https://isocpp.org | https://learncpp.com
 +
* [[Quick topics on compiling and linking in C/C++]]
 +
* [[Tools and Development Environment (make)|Tools and Development Environment]] ('''make''')
 
* <s>[[Quick-and-Dirty Guide to Transforming Compact into your Compiler]]</s> ('''obsolete''') (use at your own risk)
 
* <s>[[Quick-and-Dirty Guide to Transforming Compact into your Compiler]]</s> ('''obsolete''') (use at your own risk)
 
* <s>[[Construção de Compiladores em C++ usando Objectos e Padrões]]</s> <s>[http://www.l2f.inesc-id.pt/~david/ist/docencia/compiladores/howto.pdf PDF]</s> ('''outdated''') (CDK3) (use at your own risk)
 
* <s>[[Construção de Compiladores em C++ usando Objectos e Padrões]]</s> <s>[http://www.l2f.inesc-id.pt/~david/ist/docencia/compiladores/howto.pdf PDF]</s> ('''outdated''') (CDK3) (use at your own risk)
* C++ reference: http://cppreference.com
 
* C++ reference: http://cplusplus.com
 
* ISO C++: http://isocpp.org
 
* C++ tutorial: https://learncpp.com
 
* [[Quick topics on compiling and linking in C/C++]]
 
* [[Tools and Development Environment (make & cvs)|Tools and Development Environment]] (small guide to practical tools: '''make''' and '''cvs''')
 
  
 
== Using xml2dot to draw ASTs ==
 
== Using xml2dot to draw ASTs ==

Latest revision as of 13:08, 5 April 2024

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: 2024/04/29 17:00 (inicial); 2024/05/14 17:00 (intercalar); 2024/05/31 17:00 (final); 2024/05/31-2024/06/03-04 (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.
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.

Avaliação do Projecto

As pautas são acompanhadas pelos critérios de avaliação. Os critérios e condições de Época Especial são parecidos com os da Época Normal. Em particular, o projecto e o teste prático são obrigatórios.

Manual de Referência da Linguagem (época normal)

Introdução ao Desenvolvimento e Compiladores Exemplo

O 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 (esta secção) e corresponde a um problema de programação genérico para qualquer linguagem, devendo 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 (ver manual de referência da linguagem, abaixo).

Material de Apoio e Testes

Material Diverso

Using xml2dot to draw ASTs

The xml2dot JAR can be Googled and used as shown below:

Example for the Simple language:

simple myprog.spl -o myprog.xml
java -cp xml2dot.jar xml2dot.xml2dot myprog.xml

Note that simple is assumed to be available in the PATH. Otherwise, the explicit path must be provided, e.g., ./simple or other specification.