Print - - Edit

TCC-00.289 Compiladores, 2018.1

4a. feira e 6a. feira, sempre de 11:00 às 12:40 na sala 315.

Objetivo

Apresentar conceitos básicos da construção de compiladores.

Tópicos

  • Análise sintática
  • Análise semântica
  • Geração de código

Datas importantes

P1 - 25 e 27/04 - Expressões e comandos.

Objetivos:

  1. Ambientar-se com a linguagem escolhida e suas ferramentas.
  2. Entender PEG.
  3. Entender SMC.
  4. Implementar BPLC-mark0: (i) O tipo de dados SMC, (ii) operações aritméticas, Booleanas e comandos.
  5. Implementar um parser PEG para operações aritméticas, Booleanas e comandos.
  6. Implementar um compilador de AST PEG para operações aritméticas, Booleanas e comandos para BPLC-mark0.

P2 - 06 e 08/06 - Definições e declarações

Objetivos:

  1. Entender a semântica operacional de declarações.
  2. Especificar a semântica de declarações utilizando SMC. (Interpreting automata)
  3. Implementar um parser PEG para declarações de variáveis, constantes e inicializações em Imp-mark1.
  4. Implementar BPLC-mark1: (i) O tipo de dados SMC com ambientes, (ii) declarações de variáveis e constantes.
  5. Implementar um compilador de Imp-mark1 para BPLC-mark1.

P3 - 04 e 06/07 - Funções e procedimentos (slides)

Objetivos:

  1. Entender a semântica operacional de procedimentos e funções recursivas.
  2. Especificar a semântica de procedimentos e funções utilizando SMC. (Interpreting automata)
  3. Implementar um parser PEG para procedimentos e funções recursivas em Imp-mark2.
  4. Implementar BPLC-mark2: (i) Declarações de operações e funções recursivas.
  5. Implementar um compilador de Imp-mark2 para BPLC-mark2.

Linguagens

Critério de avaliação

  1. Três provas (P1, P2 e P3) e uma verificação suplementar (VS).
  2. Seja a média das provas (MP) = (P1+P2+P3)/3
    1. Se MP ≥ 6, o aluno está aprovado.
    2. Se MP < 4, o aluno está reprovado.
    3. Se 4 ≤ MP < 6, o aluno deve fazer VS. Neste caso, ficará aprovado se VS ≥ 6 e reprovado caso contrário.

Durante as aulas e em cada prova, a avaliação será feita segundo os seguintes critérios:

Em aula 10%Apresentação 70%Projeto 20%
Presença 30%, Participação 70%Completude 15%, Corretude 15%, Clareza/Qualidade 10%, Participação 60%Completude 40%, Corretude 40%, Testes 20%

Grupos

#LinguagemIntegrantesDia de apresentaçãoLink para o projeto
1RacketLuis Freitas, João Pedro Abreu e Rafael Leardini4a. feirahttps://github.com/Grupo-de-compiladores/apresenta-o-de-racket?files=1
2RubyJúlia Falcão, Walace e Raffael Muralha4a. feirahttps://github.com/wallacebaleroni/DeceptiCompiler
3JavaScriptCaio e Eduardo6a. feirahttps://github.com/dudu631/Warlock
4F#Erik, Max e Vitor Lourenço6a. feirahttps://github.com/MFrat/TCC-00.289-Compiladores
5ElixirPhelipe, Alysson e Fernando Mendes4a. feirahttps://github.com/fjmendes1994/george-compiler
6GoLeonardo Machado, Arthur Ferraz e José Henrique6a. feirahttps://github.com/leosch92/imperador_golias

Ordem das apresentações:

  • 4a. feira: 1, 2 e 5
  • 6a. feira: 3, 4 e 6

Referência bibliográfica

  • Bryan Ford, Parsing Expression Grammars: A Recognition-Based Syntactic Foundation, Symposium on Principles of Programming Languages, January 14-16, 2004, Venice, Italy.
  • Gordon Plotkin, A structural approach to operational semantics, The Journal of Logic and Algebraic Programming 60–61 (2004) 17–139
  • Aho, Sethi, Ullman, Compilers: Principles, Techniques, and Tools, Addison-Wesley, 1986. ISBN 0-201-10088-6

Documentação complementar

Page last modified on March 12, 2020, at 06:06 PM