Compiladores: Difference between revisions

From Wiki**3

Root (talk | contribs)
No edit summary
Root (talk | contribs)
No edit summary
 
(100 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{NAVCompiladores}}
__NOTOC__
__NOTOC__
{{Suggestion|https://bit.ly/co-wiki}}
== Tópicos Teóricos ==
== Tópicos Teóricos ==


* [[Tópicos sobre Construção de Compiladores]] (teoria e prática)
* [[Tópicos sobre Construção de Compiladores]] -- tópicos teóricos e práticos
== Tópicos de Desenvolvimento ==


* "[[Construção de Compiladores em C++ usando Objectos e Padrões]]" [http://www.l2f.inesc-id.pt/~david/ist/docencia/compiladores/howto.pdf PDF]
== Projecto ==
* Apêndice B: [http://www.l2f.inesc-id.pt/~david/ist/docencia/compiladores/2005-2006/200605240840-pf.pdf Postfix Code Generator]
* Material de apoio à construção de compiladores:
** '''CDK3''' (Compiler Development Kit): [https://dspace.ist.utl.pt/bitstream/2295/162321/1/libcdk3-200803011832.tar.bz2 download] [http://www.l2f.inesc-id.pt/~david/ist/docencia/compiladores/libcdk3/ manual]
** '''RTS''' (Run-Time Support): [https://dspace.ist.utl.pt/bitstream/2295/153645/1/librts-200703171921.tar.bz2 download], [[Manual da RTS|manual]], and
** '''Compact''' (simple but functional compiler): [https://dspace.ist.utl.pt/bitstream/2295/162322/1/compact-200803011832.tar.bz2 download]


== Tópicos de Apoio ==
* [[Compiladores/Projecto de Compiladores|Projecto de Compiladores]] -- informação sobre todos os aspectos do projecto


* [[Tópicos Rápidos sobre C++]] - A Guide for the Perplexed (with examples)
== Aulas Práticas ==
* [[Tools and Development Environment (make & cvs)|Tools and Development Environment]] (small guide to practical tools: make and cvs)
Plano das aulas: https://bit.ly/co26-plano


=== Execução de xml2dot ===
* [[Compiladores/Aula Prática 01|Semana 1.1]] - Revisões sobre programação em C++.
* [[Compiladores/Aula Prática 02|Semana 1.2]] - Modelação de conceitos da linguagem do projecto. Revisões sobre padrões de desenho.
* [[Compiladores/Aula Prática 03|Semana 2.1]] - Análise lexical. Analisadores lexicais.
* [[Compiladores/Aula Prática 04|Semana 2.2]] - Análise lexical com a ferramenta Flex.
* [[Compiladores/Aula Prática 05|Semana 3.1]] - Gramáticas. Conjuntos FIRST e FOLLOW. Análise sintáctica descendente LL(1).
* [[Compiladores/Aula Prática 06|Semana 3.2]] - Gramáticas atributivas. Atributos herdados e atributos sintetizados. YACC.
<!--* [[Compiladores/Aula Prática 07|Aula Prática 07]] - Ferramenta YACC.-->
* [[Compiladores/Aula Prática 08|Semana 4.1]] - Análise ascendente LR(0) e SLR(1). Items LR(0).
* [[Compiladores/Aula Prática 09|Semana 4.2]] - Análise sintáctica ascendente LALR(1). Lookaheads. Items LR(1).
* [[Compiladores/Aula Prática 10|Semana 5.1]] - Processamento semântico. Verificação de tipos.
* Semana 5.2: (apoio ao projecto)
* [[Compiladores/Aula Prática 11|Semana 6.1]] - Processamento semântico e geração de código Postfix (não optimizado).
* [[Compiladores/Aula Prática 12|Semana 6.2]] - Processamento semântico e geração de código Postfix (não optimizado).
* [[Compiladores/Aula Prática 13|Semana 7.1]] - Processamento semântico e geração de código Postfix. Optimização.
* Semana 7.2: (apoio ao projecto)


The xml2dot JAR is in the /tmp directory of the official machine.
[[category:Compiladores]]
[[category:Ensino]]


nx6 -target xml sourcefile.nx6
== Pautas ==
java -cp xml2dot.jar xml2dot.xml2dot sourcefile.xml


* {{PautaAberta}} [[Compiladores/Pautas 2025-2026|Pautas 2025-2026]]
* {{PautaFechada}} Pautas de anos anteriores: [[Compiladores/Pautas 2024-2025|2024-25]] [[Compiladores/Pautas 2023-2024|2023-24]] [[Compiladores/Pautas 2022-2023|2022-23]] [[Compiladores/Pautas 2021-2022|2021-22]] [[Compiladores/Pautas 2020-2021|2020-21]] [[Compiladores/Pautas 2019-2020|2019-20]] [[Compiladores/Pautas 2018-2019|2018-19]] [[Compiladores/Pautas 2017-2018|2017-18]] [[Compiladores/Pautas 2016-2017|2016-17]] [[Compiladores/Pautas 2015-2016|2015-16]] [[Compiladores/Pautas 2014-2015|2014-15]]
<!--== Testes de Avaliação (por data)  ==
Note-se que alguns enunciados cont&ecirc;m quest&otilde;es que n&atilde;o s&atilde;o abordadas no ano lectivo corrente.
[https://fenix.ist.utl.pt/downloadFile/3779579650124 T1 2013], [https://fenix.ist.utl.pt/downloadFile/3779579731286 T2 2013], [https://fenix.ist.utl.pt/downloadFile/3779579756961 T1R 2013], [https://fenix.ist.utl.pt/downloadFile/3779579756962 T2R 2013],
[https://dspace.ist.utl.pt/bitstream/2295/933775/1/201104020900-t1.pdf T1 2011], [https://dspace.ist.utl.pt/bitstream/2295/933774/1/201106031130-t2.pdf T2 2011],
[https://dspace.ist.utl.pt/bitstream/2295/642980/1/201004171100-t1a.pdf T1a 2010], [https://dspace.ist.utl.pt/bitstream/2295/642981/1/201004171100-t1b.pdf T1b 2010], [https://dspace.ist.utl.pt/bitstream/2295/680027/1/201006140900-t2a.pdf T2a 2010],
[https://dspace.ist.utl.pt/bitstream/2295/325068/1/200904281900-t1.pdf T1 2009], [https://dspace.ist.utl.pt/bitstream/2295/325070/1/200906121900-t2.pdf T2 2009],
[https://dspace.ist.utl.pt/bitstream/2295/303539/1/t1a.pdf T1 2008], [https://dspace.ist.utl.pt/bitstream/2295/303541/1/t1ra.pdf T1R 2008], [https://dspace.ist.utl.pt/bitstream/2295/318398/1/t2ra.pdf T2R 2008],
[https://dspace.ist.utl.pt/bitstream/2295/160436/1/co04e1.pdf T1 2004],
[https://dspace.ist.utl.pt/bitstream/2295/160431/1/co03e1a.pdf T1 2003],
[https://dspace.ist.utl.pt/bitstream/2295/160426/1/co02e1a.pdf T1 2002],
[https://dspace.ist.utl.pt/bitstream/2295/160423/1/co01e1.pdf E3 2001],
[https://dspace.ist.utl.pt/bitstream/2295/160420/1/co00e1.pdf T1 2000]
-->
[[category:Compiladores]]
[[category:Compiladores]]
[[category:Ensino]]
[[category:Ensino]]
[[en:Compilers]]
[[en:Compilers]]

Latest revision as of 16:16, 5 August 2025

Compiladores
Introdução ao Desenvolvimento de Compiladores
Aspectos Teóricos de Análise Lexical
A Ferramenta Flex
Introdução à Sintaxe
Análise Sintáctica Descendente
Gramáticas Atributivas
A Ferramenta YACC
Análise Sintáctica Ascendente
Análise Semântica
Geração de Código
Tópicos de Optimização

Tópicos Teóricos

Projecto

Aulas Práticas

Plano das aulas: https://bit.ly/co26-plano

  • Semana 1.1 - Revisões sobre programação em C++.
  • Semana 1.2 - Modelação de conceitos da linguagem do projecto. Revisões sobre padrões de desenho.
  • Semana 2.1 - Análise lexical. Analisadores lexicais.
  • Semana 2.2 - Análise lexical com a ferramenta Flex.
  • Semana 3.1 - Gramáticas. Conjuntos FIRST e FOLLOW. Análise sintáctica descendente LL(1).
  • Semana 3.2 - Gramáticas atributivas. Atributos herdados e atributos sintetizados. YACC.
  • Semana 4.1 - Análise ascendente LR(0) e SLR(1). Items LR(0).
  • Semana 4.2 - Análise sintáctica ascendente LALR(1). Lookaheads. Items LR(1).
  • Semana 5.1 - Processamento semântico. Verificação de tipos.
  • Semana 5.2: (apoio ao projecto)
  • Semana 6.1 - Processamento semântico e geração de código Postfix (não optimizado).
  • Semana 6.2 - Processamento semântico e geração de código Postfix (não optimizado).
  • Semana 7.1 - Processamento semântico e geração de código Postfix. Optimização.
  • Semana 7.2: (apoio ao projecto)

Pautas