1 / 12

I - Noções dum compilador

I - Noções dum compilador. DEI. Partes dum compilador Ferramentas de construção de compiladores Bibliografia aconselhada: Aho, Sethi e Ullman – Cap. 1. Jorge Morais. LFA 1999/2000 - 1. Partes dum compilador. DEI. Análise Análise léxica Análise sintáctica Análise semântica

radha
Download Presentation

I - Noções dum compilador

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Partes dum compilador DEI • 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 Jorge Morais LFA 1999/2000 - 2

  3. Tabela de símbolos DEI • 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 Jorge Morais LFA 1999/2000 - 3

  4. Tratamento de erros DEI • 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 Jorge Morais LFA 1999/2000 - 4

  5. Geração de código intermédio DEI • 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 Jorge Morais LFA 1999/2000 - 5

  6. Optimização de código DEI • 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 = id2 + 97.0 Jorge Morais LFA 1999/2000 - 6

  7. Geração de código final DEI • Código objecto • Linguagem assembly/linguagem máquina recolocável • No exemplo, em assembly, temos: MOVF id2 , R1 ADDF #97.0 , R1 MOVF R1 , id1 Jorge Morais LFA 1999/2000 - 7

  8. Contexto dum compilador DEI Jorge Morais LFA 1999/2000 - 8

  9. Pré processador DEI • 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 Jorge Morais LFA 1999/2000 - 9

  10. Assembler DEI • 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 Jorge Morais LFA 1999/2000 - 10

  11. Loader/Link Editor DEI • 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 Jorge Morais LFA 1999/2000 - 11

  12. Ferramentas de auxílio DEI • 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) Jorge Morais LFA 1999/2000 - 12

More Related