Compiladores/Projecto de Compiladores: Difference between revisions
From Wiki**3
| (157 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
== | {{PRJHEADER}} | ||
* [[Compiladores/Projecto de Compiladores/Projecto | {{TOCright}} | ||
* [[Compiladores/Projecto de Compiladores/Projecto | == Avaliação do Projecto == | ||
* [[Compiladores/Projecto de Compiladores/Projecto | |||
* [[Compiladores/Projecto de Compiladores/Compiladores Exemplo|Compiladores Exemplo]] - Simple, Compact, pf2asm, | * [[Compiladores/Projecto de Compiladores/Avaliação do Projecto (Época Normal)|Avaliação do Projecto (Época Normal)]] | ||
* [[Compiladores/Projecto de Compiladores/ | * [[Compiladores/Projecto de Compiladores/Teste Prático (Época Normal)|Teste Prático (Época Normal)]] -- condições e calendário<!--'''<font color="red">IMPORTANTE</font>''' --> | ||
<!-- * [[Compiladores/Projecto de Compiladores/Teste Prático (Época Especial)|Teste Prático (Época Especial)]] -- condições e calendário--><!--'''<font color="red">IMPORTANTE</font>''' --> | |||
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) == | |||
* [[Compiladores/Projecto de Compiladores/Projecto 2024-2025/Manual de Referência da Linguagem UDF|Manual de Referência da Linguagem UDF]] (2024-2025) | |||
* Linguagens de anos anteriores: [[Compiladores/Projecto de Compiladores/Projecto 2023-2024/Manual de Referência da Linguagem TIL|TIL]] (2023-2024), [[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 2020-2021/Perguntas e respostas sobre FIR|Perguntas e respostas sobre FIR]] (FAQ)--> | |||
== 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). | |||
* [[Compiladores/Projecto de Compiladores/Etapas de Análise de uma Linguagem|Etapas de Análise de uma Linguagem]] (e ferramentas associadas) | |||
* [[Compiladores/Projecto de Compiladores/Fases Desenvolvimento|Fases de Desenvolvimento]] | |||
* [[Compiladores/Projecto de Compiladores/Compiladores Exemplo|Compiladores Exemplo]] - Simple, Compact, pf2asm | |||
* [[Compiladores/Projecto de Compiladores/Perguntas e Respostas sobre o Desenvolvimento (FAQ)|Perguntas e Respostas sobre o Desenvolvimento (FAQ)]] - como compilar, etc. | |||
== Material de Apoio e Testes == | |||
* [[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]] - CDK, RTS, outras ferramentas (flex, bison) | |||
* Testes automáticos: https://gitlab.rnl.tecnico.ulisboa.pt/leic-a-co25/eval/co25 | |||
* [[Compiladores/Projecto de Compiladores/Máquina Virtual|Máquina Virtual]] - imagem de máquina virtual contendo todo o material de apoio | |||
== Material Diverso == | |||
* [[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>[[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) | |||
== 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. | |||
[[category:Projecto de Compiladores]] | |||
[[category:Compiladores]] | |||
[[category:Ensino]] | |||
Latest revision as of 12:41, 14 April 2025
| AVISOS - Avaliação em Época Normal |
|---|
|
Esclarecimento de dúvidas:
|
|
Requisitos para desenvolvimento, material de apoio e actualizações do enunciado (ver informação completa em Projecto de Compiladores):
|
|
Processo de avaliação (ver informação completa em Avaliação do Projecto):
|
| 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
- Avaliação do Projecto (Época Normal)
- Teste Prático (Época Normal) -- condições e calendário
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)
- Manual de Referência da Linguagem UDF (2024-2025)
- Linguagens de anos anteriores: TIL (2023-2024), MML (2022-2023), L22 (2021-2022), FIR (2020-2021), Og (2019-2020), M19 (2018-2019)
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).
- Etapas de Análise de uma Linguagem (e ferramentas associadas)
- Fases de Desenvolvimento
- Compiladores Exemplo - Simple, Compact, pf2asm
- Perguntas e Respostas sobre o Desenvolvimento (FAQ) - como compilar, etc.
Material de Apoio e Testes
- Repositório GIT - informações de localização e acesso
- Material de Apoio ao Desenvolvimento - CDK, RTS, outras ferramentas (flex, bison)
- Testes automáticos: https://gitlab.rnl.tecnico.ulisboa.pt/leic-a-co25/eval/co25
- Máquina Virtual - imagem de máquina virtual contendo todo o material de apoio
Material Diverso
- 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)
Quick-and-Dirty Guide to Transforming Compact into your Compiler(obsolete) (use at your own risk)Construção de Compiladores em C++ usando Objectos e PadrõesPDF(outdated) (CDK3) (use at your own risk)
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.