Вы находитесь на странице: 1из 26

Compiladores

Parte I

Prof Wellington Moreira de Oliveira

Agenda
Conceitos Processadores de Linguagem Estrutura de um Compilador Anlise Lxica, Sinttica e Semntica Gerao e Otimizao de Cdigo Tabela de Smbolos Linguagens e Compiladores Ferramentas de apoio Evoluo e Tipo de Linguagens Cincia da Criao de um Compilador Fundamentos das Linguagens de Programao

Prof Wellington Moreira

Conceitos
O que linguagem de programao? Processadores de linguagem Programa Fonte e Programa Objeto

Prof Wellington Moreira

Processo de Compilao
programa fonte

Compilador

programa objeto

Prof Wellington Moreira

Execuo
Programa Objeto Executvel

entrada

Programa Objeto

sada

Prof Wellington Moreira

Processo de Interpretao

cdigo intermedirio Interpretador entrada sada

Prof Wellington Moreira

Compilador Hbrido
programa fonte

Tradutor

cdigo intermedirio entrada Mquina Virtual sada

Prof Wellington Moreira

Compilador JIT
programa fonte

Tradutor

entrada

cdigo intermedirio

Compilador JIT Mquina Virtual sada

Prof Wellington Moreira

Esquema de Gerao de Executvel


Programa fonte

Pr-processador
Programa fonte modificado

Compilador

Programa objeto em assemby

Montador

Cdigo de mquina relocvel Arquivos de biblioteca Arquivos de objetos relocveis

Editor de Ligao/Carregador

Cdigo de mq. alvo

Prof Wellington Moreira

Diviso estrutural de um compilador


Anlise ou Front-End: Lxica (Scanning) Sinttica (Parser) Semntica Sntese ou Back End: Gerador de Cdigo Intermedirio Otimizador de Cdigo Intermedirio Gerador de Cdigo Otimizador de Cdigo

Prof Wellington Moreira

10

Processo de Compilao (1)


fluxo de caracteres

Analisador Lxico
fluxo de tokens

Analisador Sinttico
rvore de sintaxe

Analisador Semntico
rvore de sintaxe

Tabela de Smbolos

Gerador de Cdigo Intermedirio


representao intermediria

Otimizador de Cdigo Intermedirio Dependente da Mquina


representao intermediria

Gerador de Cdigo
cdigo da mquina alvo

Otimizador de Cdigo Independente de Mquina


cdigo da mquina alvo

Prof Wellington Moreira

11

Processo de Compilao (2)

Prof Wellington Moreira

12

Anlise Lxica
Fluxo de Caracteres > Lexemas > Token Estrutura do Token: <nome-token, valor-atributo>

Prof Wellington Moreira

13

Anlise Sinttica
Tokens > rvore de Sintaxe Raiz, Interior, Folha, Pai e Filho Operaes Argumentos

Prof Wellington Moreira

14

Anlise Semntica
rvore de Sintaxe x Tabela de Smbolos Verificao de Tipos Ex.: Arranjos Coeres

Prof Wellington Moreira

15

Tabela de Smbolos
Armazena informaes coletadas Utilizada em toda fase de anlise Informaes de variveis e procedimentos
Prof Wellington Moreira 16

posicao

valor

inicio

Gerao de Cdigo
Gerador de Cdigo Intermedirio cdigo de trs endereos Otimizador de Cdigo rapidez, memria, energia etc. Gerador de Cdigo linguagem objeto

Prof Wellington Moreira

17

Ferramentas
Geradores de analisadores lxicos Geradores de analisadores sintticos Mecanismos de traduo dirigida por sintaxe Geradores de gerador de cdigo Mecanismos de anlise de fluxo de dados Conj. de ferramentas para a construo de comp.
Prof Wellington Moreira 18

Evoluo das Linguagens


1940 (Binrio) 1950 (Assembly > macros) 1957: Cientficas, Comerciais e Funcionais - Ex.: Fortran, Cobol e Lisp

Prof Wellington Moreira

19

Tipos de Linguagem
1, 2, 3, 4 e 5 geraes Imperativa como Declarativa qual Funcional funes matemticas Linguagem de von Neumann modelo computacional Linguagem OO Linguagem de scripting

Prof Wellington Moreira

20

Cincia da criao de um compilador


Abstrao realidade: capturar principais caractersticas Avaliar escolhas de problemas e heursticas: teoria e experimentao Modelos matemticos e algoritmos Preservao da semntica Relao de influncia: Compilador/Linguagem Compilada/Hardware (Novas Linguagens de Programao e Difuso de linguagens)

Prof Wellington Moreira

21

Cincia da criao de um compilador


Otimizao, aspectos a considerar: preservar semntica melhorar desempenho (velocidade de execuo, consumo de memria etc) tempo razovel de compilao esforo de engenharia administrvel

Prof Wellington Moreira

22

Aplicaes da Tecnologia de Compiladores


Linguagens de alto nvel Otimizaes para Arquitetura de computador
Paralelismo Hierarquia de Memria

Projetos de Novas Arquiteturas


Compiladores so usados para avaliar recursos arquitetnicos Arquitetura CISC (Complex Instruction Set Computer) Arquitetura RISC (Reduced Instruction Set Computer)

Prof Wellington Moreira

23

Aplicaes da Tecnologia de Compiladores


Tradues de Programa
Binria: traduo ling. objeto para outro tipo de mquina Sntese de Hardware: compilador de hardware Simulao Compilada: pouco utilizada

Ferramentas de Produtividade de Sw
Verificao de Tipos: tipos de variveis e parmetros Verificao de Limites: limite de arranjos em C Gerenciamento de Memria: coleta de lixo Java

Prof Wellington Moreira

24

Fundamentos da Ling. Progr.


Diferena entre Esttico e Dinmico: definio do valor da varivel antes ou durante a execuo do programa. Mapeamento de variveis: Ambiente: mapeamento nome > posio de memria Estado: mapeamento posio de memria > valor Escopo Esttico e Estrutura de Blocos
Prof Wellington Moreira 25

Fundamentos da Ling. Progr.


Controle de Acesso Explcito Public Private Protected Declarao Global x Local Mecanismos de Passagem de Parmetros Valor Referncia Sinnimos
Prof Wellington Moreira 26

Вам также может понравиться