DC-UFRPE/Bacharelado em Ciência da Computação/Compiladores

Programa da Disciplina editar

Nome: Compiladores
Código: 14090
Departamento: Departamento de Computação (DC)
Área: Computação
Carga-horária total: 60 horas
Créditos: 4
Pré-requisitos:   06223 - TEORIA DA COMPUTAÇÃO

  14117 - INTRODUÇÃO À PROGRAMAÇÃO I

  14118 - INTRODUÇÃO À PROGRAMAÇÃO II

  14203 - MATEMÁTICA DISCRETA I

  14204 - MATEMÁTICA DISCRETA II

Ementa editar

Especificação da sintaxe de linguagens de programação com expressões regulares e gramáticas livres de contexto. Análise léxica. Análise sintática: ascendente e descendente. Geradores automáticos de lexers e parsers. Análise semântica. Geração de código intermediário e final.

Objetivos editar

Geral: editar

  • Apresentar os principais conceitos da área de compiladores, motivando os alunos a aprofundarem-se na disciplina.

Específicos: editar

  • Capacitar os alunos a entender linguagens de programação, suas características, particularidades, de maneira a possibilitar a adoção das melhores práticas de programação gerando código correto, seguro e eficiente, na linguagem adequada à solução do problema.

Conteúdo editar

1. Revisão de Linguagens de Programação

  1. Origem e histórico das linguagens de alto-nível
  2. Linguagens de alto nível e de baixo nível
  3. Tipos de tradutores de linguagens de programação


2. Análise Léxica

  1. Objetivo
  2. Desenvolvendo de forma manual
  3. Geração de lexers a partir de expressões regulares
  4. Geradores automáticos de lexers


3. Análise Sintática

  1. Objetivo
  2. Tratando ambiguidades nas gramáticas livres de contexto
  3. Parser descendente recursivo
  4. Parsers ascendente LR(0) e SLR


4. Tradução dirigida por sintaxe

  1. Definição dirigida por sintaxe
  2. Esquemas de tradução
  3. Usando esquemas de tradução nos parsers estudados e na árvore


5. Análise Semântica

  1. Tabela de símbolos
  2. Verificações de escopo
  3. Verificações de tipo
  4. Outras verificações


6. Geração de código intermediário

  1. Motivação
  2. Código de três endereços
  3. Alguns exemplos de tradução


7. Geração de código final

  1. Organização da memória de tempo de execução
  2. Um tipo de código final
  3. Exemplos de tradução

Bibliografia editar

Básica editar

1. LOUDEN, Kenneth C. Compiladores: princípios e práticas. São Paulo: Thomson Learning, 2004.

2. AHO, Alfred V.; SETHI, Ravi; ULLMAN, Jeffrey D. Compiladores: principios, tecnicas e fer-ramentas. Rio de Janeiro: LTC, c1995.

3. COOPER, Keith; TORCZON, Linda. Construindo Compiladores (trad. da 1ª edição). Campus Elsevier, 2013.

Complementar editar

1. AHO, Alfred V.; LAM, Monica S.; SETHI, Ravi; ULLMAN, Jeffrey D. Compiladores: princípios, técnicas e ferramentas. Segunda edição. São Paulo: Pearson Addison-Wesley, 2008.

2. WATT, David; BROWN, Deryck. Programming Language Processors in Java: Compilers and Interpreters. Prentice Hall, 2000.

3. SEBESTA, Robert W. Conceitos de linguagens de programação. 5. ed. Porto Alegre: Book-man, 2003.

4. PARR, Terence. Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages.Pragmatic Bookshelf, 2010.

5. GRUNE, Dick et al. Projeto moderno de compiladores: implementação e aplicações. Rio de Janeiro: Campus, 2001.