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

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

Compiladores.

Apresentações semelhantes


Apresentação em tema: "Compiladores."— Transcrição da apresentação:

1 Compiladores

2 Código de Máquina Programa Add v,v,0 cmp v,5 jmplt ELSE THEN: add x, 12,v ELSE: WHILE: cmp x,3 ... v = 5; if (v>5) x = 12 + v; while (x !=3) { x = x - 3; v = 10; } ...... Compilador

3 Compilador analisador léxico parser entrada saída código de programa
máquina programa

4 Um parser conhece a gramática
da linguagem de programação

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

6 O parser encontra a derivação
para uma entrada particular derivação Parser entrada E => E + E => E + E * E => 10 + E*E => * E => * 5 E -> E + E | E * E | INT * 5

7 árvore de derivação derivação E E => E + E => E + E * E => 10 + E*E => * E => * 5 E + E 10 E E * 2 5

8 árvore de derivação E código de máquina E + E mult a, 2, 5 add b, 10, a 10 E E * 2 5

9 Parsing

10 Parser string de entrada derivação gramática

11 Exemplo: Parser derivação entrada ?

12 Busca Exaustiva Fase 1: Encontrar derivação
Todas as possíveis derivações de comprimento 1

13

14 Fase 2 Fase 1

15 Fase 2 Fase 3

16 Resultado final da busca exaustiva
(top-down parsing) Parser entrada derivação

17 Complexidade de tempo da busca exaustiva
Suponha que não existam produções da forma Número de fases para um string :

18 Para uma gramática com regras
Tempo para a fase 1: possíveis derivações

19 Tempo para a fase 2: possíveis derivações

20 Tempo para a fase : possíveis derivações

21 Extremamente ruim!!! Tempo total requerido para um string : fase 1
fase 2|w| fase 2 Extremamente ruim!!!

22 Existem algoritmos mais rápidos
para tipos especiais de gramáticas S-grammar: símbolo string de variáveis Par ocorre apenas uma vez

23 S-grammar - exemplo: Cada string tem uma única derivação

24 Para S-grammars: No parser por busca exaustiva existe uma única escolha em cada fase Tempo para cada fase: Tempo total para parsing de :

25 Para gramáticas livres de contexto em geral:
Existe um algoritmo de parsing que faz parsing de um string em tempo

26 Simplificações de Gramáticas Livres de Contexto

27 Regra de Substituição gramática equivalente Substitua B

28 Em geral: Substitua B gramática equivalente

29 Produções Inúteis Produção Inútil Algumas derivações nunca terminam...

30 Outra gramática: Produção inútil Nunca é atingida a partir de S

31 Em geral: Se Então a variável é útil Caso contrário, a variável é inútil

32 Uma produção é útil se todas as suas variáveis são úteis

33 Removendo Produções Inúteis
Gramática Exemplo:

34 Primero: encontre todas as variáveis que
produzem strings só com terminais Passo 1: Passo 2:

35 Mantenha apenas as variáveis
que produzem símbolos terminais

36 Segundo: Encontre todas as variáveis atingíveis a partir de
Grafo de Dependência não atingível

37 Mantenha apenas as variáveis
atingíveis a partir de S Gramática Final

38 Variáveis Nulas Variável Nula:

39 Removendo Variáveis Nulas
Gramática Exemplo: Variável nula

40 Gramática Final Substitua

41 Produções Unitárias Produção Unitária:

42 Removendo Produções Unitárias
Observação: É removida imediatamente

43 Gramática Exemplo:

44 Substitua

45 Remova

46 Substitua

47 Remova produções repetidas
Gramática final

48 Removendo Tudo Passo 1: Remova Variáveis Nulas Passo 2: Remova Produções Unitárias Passo 3: Remova Variáveis Inúteis


Carregar ppt "Compiladores."

Apresentações semelhantes


Anúncios Google