Print - - Edit

TCC-00.289 Compiladores, 2018.2

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

Monitor: João Pedro Abreu (jp_abreu AT ID . UFF . BR)

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 - 19 e 21/09 - Expressões e comandos.

Objetivos:

  1. Ambientar-se com a linguagem escolhida e suas ferramentas.
  2. Entender LL, laLR e PEG.
  3. Entender o Π Framework.
  4. Implementar Π lib-mark0: (i) Interpreting Automata, (ii) operações aritméticas, Booleanas e comandos.
  5. Implementar um parser LL, laLR ou PEG para Imp-mark0: operações aritméticas, Booleanas e comandos.
  6. Implementar um compilador de Imp-mark-0 com operações aritméticas, Booleanas e comandos para Π lib-mark0.

P2 - 24 e 26/08 - Definições e declarações

Objetivos:

  1. Especificar a semântica de declarações utilizando o Π Framework.
  2. Implementar um parser LL, laLR ou PEG para Imp-mark1estendendo Imp-mark0 com declarações de variáveis e constantes.
  3. Implementar Π lib-mark1: (i) Interpreting Automata com ambientes, (ii) declarações de variáveis e constantes.
  4. Implementar um compilador de Imp-mark1 para Π lib-mark1.

P3 - 05 e 07/12 - Funções e procedimentos

Objetivos:

  1. Especificar a semântica de procedimentos e funções utilizando Π Framework.
  2. Implementar um parser LL, laLR ou PEG para Imp-mark2 estendendo Imp-mark1 com procedimentos e funções recursivas.
  3. Implementar Π lib-mark2: (i) Declarações de operações e funções recursivas.
  4. Implementar um compilador de Imp-mark2 para Π lib-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
1RustArthur Silva, João Pedro Sá e André Pereira4a. feiraRust(antigo): https://github.com/jpsmedeiros/impiler_v1, Scala(novo): https://github.com/jpsmedeiros/impiler
2HaskellLeonardo Almeida, Marcelo Muniz, e Rodrigo Esteves4a. feirahttps://github.com/mpjmuniz/pilib-hs-c20182
3ClojureDaniel Carias6a. feirahttps://github.com/cariasdaniel/compil_clojure_2018-2/tree/with_insta/comp_clojure

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.
  • 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