A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 Introdução Prof. Giovanny Lucero

Apresentações semelhantes


Apresentação em tema: "1 Introdução Prof. Giovanny Lucero"— Transcrição da apresentação:

1 1 Introdução Prof. Giovanny Lucero

2 2 Compiladores Um compilador é um programa que traduz um programa escrito numa linguagem fonte para outro equivalente escrito numa linguagem alvo. Compilador programa fonte programa alvo mensagens de erro

3 3 esqueleto do programa fonte pre-processador programa fonte COMPILADOR programa alvo em assembler montador código de máquina relocável carregador código de máquina absoluto bibliotecas, arquivos, objetos relocáveis O contexto de um compilador

4 4 Análise e Síntese Análise –Divide o programa fonte em partes –cria uma representação intermediária (árvores sintáticas) Síntese –constrói o programa alvo := m dp tp + * 60 Ferramentas que fazem análise: Editores de estruturas Pretty printers Verificadores estáticos Interpretadores Formatadores de texto Interpretadores de consultas

5 5 Análise do programa fonte Análise léxica (linear ou scanning) Análise sintática (hierárquica ou gramatical) Análise semântica (restrições sensíveis ao contexto: tipos, coerções,... )

6 6 Análise Léxica Caracteres são agrupados em Tokens montante := deposito_inicial + taxa_de_juros * 60 É decomposto nos seguintes tokens: Identificador montante Símbolo de atribuição := Identificador deposito_inicial Sinal de adição Identificador taxa_de_juros Sinal de multiplicação Número 60

7 7 Análise Sintática Agrupa os tokens do programa fonte em frases gramaticais. Reconhece a estrutura gramatical do programa fonte a qual é representada por uma árvore gramatical. (árvore gramatical = árvore de parser = árvore de derivação) Devolve uma árvore sintática (sintaxe abstrata)

8 8 Árvore de derivação (gramatical) enunciado de atribuição := identificador montante deposito_inicial taxa_de_juros60 expressão + * número

9 9 Árvore sintática Uma árvore sintática (ou sintaxe abstrata) é uma representação condensada da árvore gramatical := montante deposito_inicial taxa_de_juros60 + *

10 10 Definição da Sintaxe dos programas A estrutura gramatical dos programas é expressa recursivamente Por exemplo, podemos definir expressões pelas regras: –Qualquer identificador é uma expressão. –Qualquer número é uma expressão. –Se expressão1 e expressão2 são expressões, então também o são –expressão1 + expressão2 –expressão1 * expressão2 –(expressão1) Formalismo usado: GLCs.

11 11 Qual é divisão entre léxico e sintático? Construções léxicas requerem somente de algum mecanismo de repetição –Em geral, tudo o que se pode descrever com expressões regulares Construções sintáticas requerem recursividade

12 12 Análise Semântica Verifica erros semânticos detectáveis estaticamente –verificação de tipos, resolução de sobrecarga, coerção, variáveis inicializadas antes de serem usadas,... := montante deposito_inicial taxa_de_juros 60 REAL-ADD REAL-MULT inttoreal

13 As fases de um Compilador programa fonte analisador léxico analisador sintático analisador semântico gerador de código intermediário otimizador de código gerador de código gerenciador da tabela de símbolos tratador de erros programa alvo

14 14 Passagens Por eficiência, é comum que várias fases sejam agrupadas numa única passagem

15 15 O agrupamento das fases front-end (vanguarda) –as fases que dependem mais do programa fonte análise léxica, sintática e semântica e geração de código intermediário. back-end (retaguarda) –as fases que dependem mais do programa alvo geração e otimização de código Interface entre vanguarda e retaguarda – Código intermediário

16 16 Portabilidade e Modularidade Java ML Pascal C C++ Sparc MIPS Pentium Alpha Java ML Pascal C C++ Sparc MIPS Pentium Alpha Código Intermediário vanguardasretaguardas

17 17 Os primos do compilador Pré-processadores –processadores de macros, –inclusão de arquivos, –extensões de linguagens (p.e. linguagens de consulta embutidas) –Lings. de Marcação com páginas dinâmicas (JSP, ASP,....) Montadores (Ensambladores) produzem código de máquina relocável

18 18 Ferramentas Geradores de analisadores gramaticais Geradores de analisadores léxicos Dispositivos de tradução dirigida pela sintaxe Dispositivos de fluxo de dados Geradores de tradutores dirigidos por semântica

19 19 Resumo O que é um compilador –Análise sintática, análise semântica e síntese –O contexto de um compilador As fases de um compilador Ferramentas Referências: Capítulos 1 do Dragão e do Tigre


Carregar ppt "1 Introdução Prof. Giovanny Lucero"

Apresentações semelhantes


Anúncios Google