I - Noções dum compilador Partes dum compilador Ferramentas de construção de compiladores Bibliografia aconselhada: –Aho, Sethi e Ullman – Cap. 1 LFA 1999/2000.

Slides:



Advertisements
Apresentações semelhantes
Tópicos em Compiladores
Advertisements

gerador de código intermediário
Introdução à Ciência da Computação Linguagens de Programação.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções.
Compiladores Claudio Benossi
II – Análise léxica DEI Papel do analisador léxico.
II – Análise léxica DEI Conversão de expressões regulares em autómatos finitos determinísticos mínimos Bibliografia aconselhada: Aho, Sethi e Ullman –
III – Análise sintáctica
III – Análise sintáctica
II – Análise léxica DEI lex: linguagem de especificação para analisadores léxicos Implementação de simuladores de autómatos finitos Bibliografia aconselhada:
III – Análise sintáctica
I - Noções dum compilador
III – Análise sintáctica
III – Análise sintáctica Parsers ascendentes Instruções shift-reduce Bibliografia aconselhada: –Aho, Sethi e Ullman – secção 4.5 LFA 1999/ Jorge.
I - Noções dum compilador
III – Análise sintáctica
IV – Análise semântica DEI Associação de regras semânticas a produções
III – Análise sintáctica
III – Análise sintáctica
V – Geração de código Chamada de funções Organização de memória Passagem de parâmetros Representação de código intermédio Bibliografia aconselhada: –Aho,
III – Análise sintáctica Geradores de parsers Bibliografia aconselhada: –Aho, Sethi e Ullman – secção 4.9 LFA 1999/ Jorge Morais.
IV – Análise semântica DEI Implementação da tabela de símbolos
I - Noções dum compilador
VI – Optimização de código Blocos básicos Optimização de ciclos Bibliografia aconselhada: –Apontamentos LFA 1999/ Jorge Morais.
Linguagens Formais e Autómatos
Compiladores I Cristiano Damiani Vasconcellos
Linguagem de Montagem Visão geral.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Prof. Heloise Manica Paris Teixeira
YACC.
Bibliografia 1. Aho V.A., Sethi R., Ulman D.J., Compiladores - Princípios, Técnicas e Ferramentas, tradução de Daniel de Ariosto Pinto - Ed. Guanabara.
Relações em uma Gramática
Análise Léxica Supondo o trecho de programa abaixo:
Tradutores de Linguagens
Arquitetura de Computadores
Programação Orientada para Objectos
Prof. Bruno Moreno Aula 4 – 11/03/2011
Análise Semântica e Representação Intermédia
PROGRAMAÇÃO I UNIDADE 1.
Aula prática - análise contextual
Ferramentas para a Construção de Compiladores: Lex & Yacc
Compiladores, Aula Nº 7 João M. P. Cardoso
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 02: Introdução.
Análise Léxica Primeira fase de um compilador
Geração de Código Intermediário
Análise Léxica.
Geração de Código aula-12-geração-de-código.pdf.
Analise Semântica aula-10-analise-semântica.pdf.
Analisador Léxico Prof. Alexandre Monteiro
Projeto de Linguagens de Programação
Compiladores Prof. Claudio Benossi.
Tradução Dirigida por Sintaxe
Prof. Fábio Carneiro Mokarzel 2014
CES-41 COMPILADORES Aulas Práticas Capítulo II A Ferramenta Yacc.
Back-End Compilação aula-11-back-end.pdf.
Faculdade Pernambucana - FAPE Setembro/2007
COMPILADORES 04 Prof. Marcos.
Uma Infraestrutura para a
Geradores de analisadores léxicos
Compiladores – IF688 Professor: André Santos
SISTEMAS DE INFORMAÇÃO
Faculdade Pernambuca - FAPE
Análise Semântica e Representação Intermédia
Compilador Software que traduz o texto (linguagem fonte) que representa um programa para código máquina(linguagem alvo) capaz de ser executado pelo.
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
COMPILADORES 06 Prof. Marcos.
Transcrição da apresentação:

I - Noções dum compilador Partes dum compilador Ferramentas de construção de compiladores Bibliografia aconselhada: –Aho, Sethi e Ullman – Cap. 1 LFA 1999/ Jorge Morais

Partes dum compilador Análise –Análise léxica –Análise sintáctica –Análise semântica Geração de saída –Geração de código –Optimização de código Tabela de símbolos Tratamento de erros LFA 1999/ Jorge Morais

Tabela de símbolos Identificadores e respectivos atributos Variáveis: –Tipo –Âmbito Funções –Número de argumentos –Lista com tipos dos argumentos –Método de passagem (valor/referência) –Tipo de retorno LFA 1999/ Jorge Morais

Tratamento de erros Detectar e emitir erro Avançar para resto da compilação Erros léxicos – resto da entrada não forma nenhum token Erros sintácticos – posição do token não obedece às regras sintácticas Erros semânticos – apesar de estar sintacticamente correcta, a estrutura não faz sentido LFA 1999/ Jorge Morais

Geração de código intermédio Instruções duma Máquina Abstracta Exemplo: y = x + 'a' ; –Tabela de símbolos: id1 {y,float}; id2 {x,float} t1 = (float)97 t2 = id2 + t1 id1 = t2 LFA 1999/ Jorge Morais

Optimização de código Tentar optimizar o código final de modo a ficar mais rápido No exemplo anterior pode-se reduzir o número de instruções para apenas uma: id1 = id LFA 1999/ Jorge Morais

Geração de código final Código objecto Linguagem assembly/linguagem máquina recolocável No exemplo, em assembly, temos: MOVFid2, R1 ADDF#97.0, R1 MOVFR1, id1 LFA 1999/ Jorge Morais

Contexto dum compilador LFA 1999/ Jorge Morais

Pré processador Produzem a entrada para compiladores Processamento de macros –Simplificação de grandes construções Inclusão de ficheiros –Ficheiros de cabeçalho Pré processador racional –Aumento de facilidades na linguagem Extensões de linguagem –Código embebido doutras linguagens LFA 1999/ Jorge Morais

Assembler Código assembly Mnemónicas código máquina Gera código máquina recolocável: –a cada variável é associado um endereço –cada instrução máquina com endereços é marcada para posterior recolocação LFA 1999/ Jorge Morais

Loader/Link Editor Loader costuma fazer as duas tarefas Adicionar o endereço onde os dados serão carregados ao endereço recolocável Ligar vários programas compilados separadamente Alterar endereços de referências externas LFA 1999/ Jorge Morais

Ferramentas de auxílio Geradores de parsers (yacc, bison) Geradores de scanning (lex, flex) Engenhos de tradução dirigida pela sintaxe (gramáticas de atributos) Geradores de código automático (uso de templates) Engenhos de fluxo de dados (optimização de código) LFA 1999/ Jorge Morais