UPE Caruaru Sistemas de Informao Disciplina Compiladores Prof

  • Slides: 26
Download presentation
UPE – Caruaru – Sistemas de Informação Disciplina: Compiladores Prof. : Paulemir G. Campos

UPE – Caruaru – Sistemas de Informação Disciplina: Compiladores Prof. : Paulemir G. Campos Aspectos e Ferramentas para a Construção de Compiladores (Parte 1) 12/17/2021 Comp - Prof. Paulemir Campos 1

Roteiro da Aula n n n Agrupamentos de Fases Ferramentas para a Construção de

Roteiro da Aula n n n Agrupamentos de Fases Ferramentas para a Construção de Compiladores Referências 12/17/2021 Comp - Prof. Paulemir Campos 2

Agrupamentos de Fases 12/17/2021 Comp - Prof. Paulemir Campos 3

Agrupamentos de Fases 12/17/2021 Comp - Prof. Paulemir Campos 3

Introdução n n Até o momento, foi discutida a organização lógica de um compilador.

Introdução n n Até o momento, foi discutida a organização lógica de um compilador. Durante a construção de um compilador, a ativação de uma ou mais fases podem ser agrupadas juntas. 12/17/2021 Comp - Prof. Paulemir Campos 4

Compilador Front End n n Consiste do agrupamento de fases ou partes de fases

Compilador Front End n n Consiste do agrupamento de fases ou partes de fases que dependem primariamente da linguagem fonte. São grandemente independentes do código de máquina. 12/17/2021 Comp - Prof. Paulemir Campos 5

Compilador Front End n Normalmente incluem: n n n 12/17/2021 as análises léxica, sintática

Compilador Front End n Normalmente incluem: n n n 12/17/2021 as análises léxica, sintática e semântica; a criação da tabela de símbolos; e, a geração do código intermediário. Comp - Prof. Paulemir Campos 6

Compilador Front End n Também podem incluir: n n 12/17/2021 otimização do código intermediário;

Compilador Front End n Também podem incluir: n n 12/17/2021 otimização do código intermediário; e, manipulação dos erros que surgem ao longo de cada fase da compilação. Comp - Prof. Paulemir Campos 7

Compilador Back End n n É formado pelas partes de um compilador que dependem

Compilador Back End n n É formado pelas partes de um compilador que dependem do código de máquina. Geralmente, essas fases não dependem da linguagem fonte, mas, da linguagem intermediária. 12/17/2021 Comp - Prof. Paulemir Campos 8

Compilador Back End n Normalmente incluem: n n n 12/17/2021 otimização de código intermediário;

Compilador Back End n Normalmente incluem: n n n 12/17/2021 otimização de código intermediário; geração de código; e, operações de manipulação de erros e da tabela de símbolos necessárias. Comp - Prof. Paulemir Campos 9

Considerações n Note, com o agrupamento de fases, é possível produzir um compilador front

Considerações n Note, com o agrupamento de fases, é possível produzir um compilador front end e vários compiladores back end, de modo que: n 12/17/2021 Obtém-se um compilador resultante de uma mesma linguagem fonte para diferentes máquinas. Comp - Prof. Paulemir Campos 10

Considerações n Por outro lado, pode-se construir vários compiladores front end e um único

Considerações n Por outro lado, pode-se construir vários compiladores front end e um único compilador back end, de forma que: n 12/17/2021 Seja possível compilar várias linguagens fontes diferentes para uma única máquina. Comp - Prof. Paulemir Campos 11

Ferramentas para a Construção de Compiladores 12/17/2021 Comp - Prof. Paulemir Campos 12

Ferramentas para a Construção de Compiladores 12/17/2021 Comp - Prof. Paulemir Campos 12

Introdução n Na escrita de um compilador, como qualquer programa, pode-se vantajosamente usar ferramentas

Introdução n Na escrita de um compilador, como qualquer programa, pode-se vantajosamente usar ferramentas de software, como: n n 12/17/2021 debuggers; gerenciadores de versão, etc; Comp - Prof. Paulemir Campos 13

Introdução n n Em resumo, depois que o primeiro compilador foi escrito, sistemas ou

Introdução n n Em resumo, depois que o primeiro compilador foi escrito, sistemas ou ferramentas para ajudar no processo de escrita de compiladores apareceram. Alguns desses sistemas são: n n n 12/17/2021 compiladores de compilador; geradores de compilador; e, ferramenta de escrita de tradutor. Comp - Prof. Paulemir Campos 14

Introdução n n Por outro lado, essas ferramentas podem ser orientadas por um modelo

Introdução n n Por outro lado, essas ferramentas podem ser orientadas por um modelo particular de linguagens; Assim, são muito úteis para gerar compiladores de linguagem similares. 12/17/2021 Comp - Prof. Paulemir Campos 15

Introdução n Exemplo: n n 12/17/2021 Supondo que o analisador léxico para todas as

Introdução n Exemplo: n n 12/17/2021 Supondo que o analisador léxico para todas as linguagens é essencialmente o mesmo, exceto pelas palavras reservadas e alguns símbolos, muitos compiladores de compilador executam esta etapa para a geração do compilador. Neste caso, a lista de palavras reservadas é fornecida a parte pelo usuário. Comp - Prof. Paulemir Campos 16

Introdução n Algumas ferramentas gerais também foram criadas para projeto automático de específicos componentes

Introdução n Algumas ferramentas gerais também foram criadas para projeto automático de específicos componentes de um compilador. 12/17/2021 Comp - Prof. Paulemir Campos 17

Introdução n As ferramentas mais úteis são aquelas que ocultam detalhes do algoritmo de

Introdução n As ferramentas mais úteis são aquelas que ocultam detalhes do algoritmo de geração e produzem componentes facilmente integráveis as demais fases do compilador. 12/17/2021 Comp - Prof. Paulemir Campos 18

Introdução n Dentre estas ferramentas, destacam-se: n n n 12/17/2021 Geradores de Análise Sintática;

Introdução n Dentre estas ferramentas, destacam-se: n n n 12/17/2021 Geradores de Análise Sintática; Geradores Léxicos; Tradutores Dirigidos à Sintaxe; Geradores de Código Automático; Analisadores de Fluxo de Dados. Comp - Prof. Paulemir Campos 19

Geradores de Análise Sintática n n Produzem analisadores sintáticos, normalmente de uma entrada baseada

Geradores de Análise Sintática n n Produzem analisadores sintáticos, normalmente de uma entrada baseada em gramática livre de contexto. Nos primeiros compiladores, análise sintática consumia: n n 12/17/2021 grande parte do tempo de compilação; e, muito esforço intelectual. Comp - Prof. Paulemir Campos 20

Geradores de Análise Sintática n Atualmente, esta fase é uma das mais fáceis de

Geradores de Análise Sintática n Atualmente, esta fase é uma das mais fáceis de implementar, principalmente utilizando geradores de análise sintática ou geradores de parser. 12/17/2021 Comp - Prof. Paulemir Campos 21

Geradores Léxicos n n Geram automaticamente analisadores léxicos, normalmente a partir de uma especificação

Geradores Léxicos n n Geram automaticamente analisadores léxicos, normalmente a partir de uma especificação baseada em expressões regulares. A organização básica do resultado de um analisador léxico é fornecido por um autômato finito. 12/17/2021 Comp - Prof. Paulemir Campos 22

Tradutores Dirigidos à Sintaxe n n Estas ferrramentas produzem coleções de rotinas que caminham

Tradutores Dirigidos à Sintaxe n n Estas ferrramentas produzem coleções de rotinas que caminham pela árvore de análise sintática, gerando o código intermediário. A idéia básica é que cada “tradução” é definida em termos dos nós vizinhos na árvore. 12/17/2021 Comp - Prof. Paulemir Campos 23

Geradores de Código Automático n Cada uma dessas ferramentas lida com uma coleção de

Geradores de Código Automático n Cada uma dessas ferramentas lida com uma coleção de regras que definem a tradução de cada operação da linguagem intermediária numa determinada linguagem de máquina. 12/17/2021 Comp - Prof. Paulemir Campos 24

Analisadores de Fluxo de Dados n n Muitas das informações necessárias para uma boa

Analisadores de Fluxo de Dados n n Muitas das informações necessárias para uma boa execução da otimização de código envolve análise do fluxo de dados. Assim, essa ferramenta auxilia no processo de juntar informações de como valores são transmitidos de uma parte a outra do programa. 12/17/2021 Comp - Prof. Paulemir Campos 25

Referências n Aho, A. V. ; Sethi, R. e Ullman, J. D. Compilers: Principles,

Referências n Aho, A. V. ; Sethi, R. e Ullman, J. D. Compilers: Principles, Techniques, and Tools. Addison Wesley Longman, 1985. (Capítulo 1, seções 1. 5 e 1. 6). 12/17/2021 Comp - Prof. Paulemir Campos 26