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

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

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 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

2 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

3 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

4 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

5 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

6 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

7 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

8 Contexto dum compilador LFA 1999/ Jorge Morais

9 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

10 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

11 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

12 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


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google