Compiladores

lasalle - 2024/2

Objetivos

São objetivos da disciplina:

Pré-requisitos

Embora os pré-requisitos não sejam obrigatórios, o seu domínio auxiliará muito na evolução do aprendizado:

Competências trabalhadas

As competências trabalhadas na disciplina são:

Unidades de Aprendizagem

As unidades de aprendizagem abordadas na disciplina são:

Estratégias metodológicas

Aulas expositivas, atividades de pesquisa relacionadas às unidades de aprendizagem, exemplos práticos e exercícios individuais ou em grupo.

Cronograma

AulaConteúdo ProgramadoData
01
  • Apresentação da disciplina.
  • Linguagens de Programação.
  • Compiladores, Interpretadores e Transpiladores.
  • Máquinas Virtuais.
  • Ambientes de Execução.
06/03
02
  • Revisão de Estruturas de Dados.
  • Estrutura de um compilador.
  • Características de Linguagens de Programação.
  • Sintaxe e semântica.
13/03
03
  • Git e Github.
  • Exercício Git, Github e Pull Request.
  • Exemplos de leitura de arquivos texto em Python.
20/03
04
  • Revisão de Automatos Finitos, Linguagens Regulares e Expressões Regulares.
  • Análise léxica.
27/03
05
  • Python PLY.
  • Implementação de um analisador léxico.
  • Gramáticas livres de contexto.
03/04
06
  • Gramáticas livres de contexto.
  • Árvores de Derivação.
  • BNF.
  • Projeto de Linguagem de Programação.
  • Parsers.
  • Análise sintática Top-Down.
  • Analisador Preditivo Descendente.
  • Especificação T1.
10/04
07
  • Implementação do analisador léxico..
17/04
08
  • Revisão das gramáticas livres de contexto..
  • FIRST e FOLLOW.
  • Análise sintática Bottom-Up.
  • Tradução direcionada por sintaxe.
  • Especificação T2.
24/04
09
  • Feriado.
01/05
10
  • Aula convertida em exercícios domiciliares devido a enchentes no RS.
08/05
11
  • Aula convertida em exercícios domiciliares devido a enchentes no RS.
15/05
12
  • Retorno das aulas _online.
  • Revisão de conteúdos.
22/05
13
  • Gramáticas Livres de contexto.
  • Árvores de derivação.
  • Associação de regras a GLC.
29/05
14
  • Análise semântica.
  • Verificação de tipos.
05/06
15
  • Geração de código intermediário.
12/06
16
  • Geração de código alvo.
19/06
17
  • Exemplo de implementação de um compilador.
26/06
18
  • Revisão e exercícios.
03/07
19
  • Prova P1.
  • Correção da Prova.
  • Data limite para entrega dos trabalhos do G1 (T1 e T2).
10/07
20
  • Prova P2.
  • Prova de substituição.
17/07

Procedimento e critérios de avaliação

A nota final será composta por trabalhos/exercícios e prova, que serão desenvolvidos durante as aulas e em atividades extraclasse.

O grau 1 será composto por G1 = T1(2.5) + T2(2.0) + T3(2.5) + P1(3.0)

O grau 2 será composto por G2 = T4(3.5) + T5(3.5) + P2(3.0)

A nota final será a média (M) dada pela regra M = (G1 + G2) / 2

A recuperação será realizada com a aplicação de uma prova escrita. A nota desta substituirá a nota mais baixa e a média (M) será recalculada.

Para obter a aprovação, o aluno deve obter uma média (M) igual ou superior a 6, com frequência igual ou superior à 75%. A frequência será medida a partir de chamada nominal, realizada em todas as aulas.

Recursos para a disciplina

Bibliografia

  1. AHO, Alfred V.; LAM, Monica S.; SETHI, Ravi; ULLMAN, Jeffrey B. Compilers: Principles, Techniques, & Tools 2a Ed. Addisson Wesley. 2006. (Livro do Dragão Roxo)
  2. LOUDEN, Kenneth C. Compiladores : princípios e práticas. Cengage Learning, 2004.

Recursos online

  1. CS143 Compilers (Stanford - en)
  2. CS143 Compiles - video aulas (Stanford - en) - Os vídeos são legendados automaticamente pelo YouTube, porém a legenda é bem boa, mesmo no caso da tradução automática para português, que é bem aceitável.

Posts Relacionados