Compiladores (IM861)

Compiladores

Informações

Código: IM861

Pré-requisito

Linguagens de Programação; Linguagens Formais e Autômatos.

Ementa

Estrutura de um compilador; Análise léxica; Análise sintática; Análise semântica; Recuperação de erros; Geração de código intermediário.

Objetivos

Ao final da disciplina, o aluno deve:

(a) Compreender a teoria e as técnicas usadas na construção de compiladores

(b) Projetar e testar um compilador completo para uma linguagem algorítmica

Conteúdo Programático

Sumário

  1. Introdução
  2. Análise Léxica
  3. Autômatos Finitos
  4. Scanners
  5. Análise Sintática
  6. Analisador Sintático Descendente
  7. Analisador Sintático Ascendente
  8. Análise Semântica
  9. Geração de Código

Tópicos de Aula

01. Introdução

Estrutura de um compilador Processadores de linguagens Evolução das linguagens de programação Fundamentos das linguagens de programação

02. Análise Léxica

Arquitetura da análise léxica Especificações de tokens Erros léxicos Operações sobre linguagens Expressões Regulares Definições Regulares Extensões de ERs

03. Autômatos Finitos

Definição de Autômatos Representação Gráfica e Matricial Simulando um AFD e um AFND Algoritmo de Thompson ER para Autômato Construção de Subconjunto Minimização de Estados

04. Scanners

Arquitetura de um Scanner Scanner feito à mão Scanner utilizando AFD e AFND Eficiência Projeto de um analisador de cadeia Pares de Buffers Casamento de Padrão

05. Análise Sintática

Arquitetura Gramática Livre de Contexto Derivações Árvore de Derivação Ambiguidade Análise Léxica vs Sintática

06. Analisador Sintático Descendente

Análise Top-Down Recursão à Esquerda Lookahead Parses Preditivos First e Follow Gramáticas LL(k) e LR(k) Analisador de Descida Recursiva Analisador Preditivo sem Recursão

07. Analisador Sintático Ascendente

Handle Parsers Shift-Reduce Parsers LR(1) Itens Canônicos Autômato LR(0) Tabela de Análise SLR

08. Análise Semântica

Tabela de símbolos Heurísticas para a análise semântica

09. Geração de Código

Processo de compilação Linguagem de três endereços Especificações

Referência Bibliográfica

Bibliografia Básica

SETHI, Ravi; ULLMAN, Jeffrey D.; MONICA S. LAM. Compiladores: princípios, técnicas e ferramentas. Pearson Addison Wesley, 2008. RICARTE, Ivan. Introdução à compilação. Elsevier Brasil, 2012. SEBESTA, Robert W. Conceitos de Linguagens de Programação. 11. ed. Bookman Editora, 2018.

Bibliografia Complementar

KEITH, C.; TORCZON, L. Construindo Compiladores. 2013. TUCKER, Allen; NOONAN, Robert. Linguagens de Programação-: Princípios e Paradigmas. AMGH Editora, 2009. DE ALENCAR PRICE, Ana Maria; TOSCANI, Simão Sirineo. Implementação de linguagens de programação: compiladores. Sagra-Luzzatto, 2000. NETO, João José. Introdução a compilação. Elsevier Brasil, 2017. SANTOS, Pedro Reis; LANGLOIS, Thibault. Compiladores da Teoria à Prática. LTC Editora, 2018.

Postado em 21/11/2013 - 09:21 - Atualizado em 14/08/2023 - 22:23

Últimas Notícias

Segundo dia SECCIM 2023

Hoje ocorreu mais um dia da SECCIM, envolvendo até e escrita criativa para uma jornada de aprendizado e inspiração. O leia mais

31/10/2023

Primeiro dia de SECCIM 2023

Primeiro dia de SECCIM 2023

30/10/2023

Descubra Programação da Seccim – Edição 2023!

Na próxima semana se inicia a 12º Semana Acadêmica de Ciência da Computação da UFRRJ (Seccim). A programação promete enriquecer leia mais

27/10/2023


Nota de pesar

É com grande consternação que o Curso e o Departamento de Ciência da Computação comunica à comunidade universitária ruralina o leia mais

19/10/2023

Apresentação do projeto “O Uso do Pensamento Computacional para evitar a retenção e evasão nos cursos de graduação” na SNCT 2023

Nesta quarta-feira, dia 18 de outubro, os alunos Jorge Duarte Miguel Junior, Luiz Filipe Brandi e Maxwel Batalha, junto com leia mais

19/10/2023

mais notícias

Skip to content