1 compiladores. 2 compilador programa v = 5; if (v>5) x = 12 + v; while (x !=3) { x = x - 3; v =...

Download 1 Compiladores. 2 Compilador Programa v = 5; if (v>5) x = 12 + v; while (x !=3) { x = x - 3; v = 10; }...... Add v,v,0 cmp v,5 jmplt ELSE THEN: add x,

Post on 22-Apr-2015

111 views

Category:

Documents

3 download

Embed Size (px)

TRANSCRIPT

  • Slide 1
  • 1 Compiladores
  • Slide 2
  • 2 Compilador Programa v = 5; if (v>5) x = 12 + v; while (x !=3) { x = x - 3; v = 10; }...... Add v,v,0 cmp v,5 jmplt ELSE THEN: add x, 12,v ELSE: WHILE: cmp x,3... Cdigo de Mquina
  • Slide 3
  • 3 analisador lxico parser Compilador programa cdigo de mquina entrada sada
  • Slide 4
  • 4 Um parser conhece a gramtica da linguagem de programao
  • Slide 5
  • 5 Parser PROGRAM STMT_LIST STMT_LIST STMT; STMT_LIST | STMT; STMT EXPR | IF_STMT | WHILE_STMT | { STMT_LIST } EXPR EXPR + EXPR | EXPR - EXPR | ID IF_STMT if (EXPR) then STMT | if (EXPR) then STMT else STMT WHILE_STMT while (EXPR) do STMT
  • Slide 6
  • 6 O parser encontra a derivao para uma entrada particular 10 + 2 * 5 Parser E -> E + E | E * E | INT E => E + E => E + E * E => 10 + E*E => 10 + 2 * E => 10 + 2 * 5 entrada derivao
  • Slide 7
  • 7 10 E 25 E => E + E => E + E * E => 10 + E*E => 10 + 2 * E => 10 + 2 * 5 derivao rvore de derivao EE EE + *
  • Slide 8
  • 8 10 E 25 rvore de derivao EE EE + * mult a, 2, 5 add b, 10, a cdigo de mquina
  • Slide 9
  • 9 Parsing
  • Slide 10
  • 10 gramtica Parser string de entrada derivao
  • Slide 11
  • 11 Exemplo: Parser derivao entrada ?
  • Slide 12
  • 12 Busca Exaustiva Fase 1: Todas as possveis derivaes de comprimento 1 Encontrar derivao
  • Slide 13
  • 13
  • Slide 14
  • 14 Fase 2 Fase 1
  • Slide 15
  • 15 Fase 2 Fase 3
  • Slide 16
  • 16 Resultado final da busca exaustiva Parser derivao entrada (top-down parsing)
  • Slide 17
  • 17 Complexidade de tempo da busca exaustiva Suponha que no existam produes da forma Nmero de fases para um string :
  • Slide 18
  • 18 Tempo para a fase 1: possveis derivaes Para uma gramtica com regras
  • Slide 19
  • 19 Tempo para a fase 2: possveis derivaes
  • Slide 20
  • 20 Tempo para a fase : possveis derivaes
  • Slide 21
  • 21 Tempo total requerido para um string : Extremamente ruim!!! fase 1 fase 2 fase 2|w|
  • Slide 22
  • 22 Existem algoritmos mais rpidos para tipos especiais de gramticas S-grammar: smbolostring de variveis ocorre apenas uma vezPar
  • Slide 23
  • 23 S-grammar - exemplo: Cada string tem uma nica derivao
  • Slide 24
  • 24 No parser por busca exaustiva existe uma nica escolha em cada fase Para S-grammars: Tempo total para parsing de : Tempo para cada fase:
  • Slide 25
  • 25 Para gramticas livres de contexto em geral: Existe um algoritmo de parsing que faz parsing de um string em tempo
  • Slide 26
  • 26 Simplificaes de Gramticas Livres de Contexto
  • Slide 27
  • 27 Regra de Substituio Substitua B gramtica equivalente
  • Slide 28
  • 28 Em geral: Substitua B gramtica equivalente
  • Slide 29
  • 29 Produes Inteis Algumas derivaes nunca terminam... Produo Intil
  • Slide 30
  • 30 Outra gramtica: Nunca atingida a partir de S Produo intil
  • Slide 31
  • 31 Em geral: Se Ento a varivel til Caso contrrio, a varivel intil
  • Slide 32
  • 32 Uma produo til se todas as suas variveis so teis
  • Slide 33
  • 33 Removendo Produes Inteis Gramtica Exemplo:
  • Slide 34
  • 34 Primero: encontre todas as variveis que produzem strings s com terminais Passo 1: Passo 2:
  • Slide 35
  • 35 Mantenha apenas as variveis que produzem smbolos terminais
  • Slide 36
  • 36 Segundo: Encontre todas as variveis atingveis a partir de Grafo de Dependncia no atingvel
  • Slide 37
  • 37 Mantenha apenas as variveis atingveis a partir de S Gramtica Final
  • Slide 38
  • 38 Variveis Nulas Varivel Nula:
  • Slide 39
  • 39 Removendo Variveis Nulas Gramtica Exemplo: Varivel nula
  • Slide 40
  • 40 Substitua Gramtica Final
  • Slide 41
  • 41 Produes Unitrias Produo Unitria:
  • Slide 42
  • 42 Removendo Produes Unitrias Observao: removida imediatamente
  • Slide 43
  • 43 Gramtica Exemplo:
  • Slide 44
  • 44 Substitua
  • Slide 45
  • 45 Remova
  • Slide 46
  • 46 Substitua
  • Slide 47
  • 47 Remova produes repetidas Gramtica final
  • Slide 48
  • 48 Removendo Tudo Passo 1: Remova Variveis Nulas Passo 2: Remova Produes Unitrias Passo 3: Remova Variveis Inteis

View more