1 / 99

5.5 – Análise Bottom-Up

5.5 – Análise Bottom-Up. Tentativa de construir uma árvore sintática para a sentença analisada, começando das folhas , indo em direção à raiz (pós-ordem , em alguns métodos) Esse processo pode ser encarado como a redução total de uma sentença ou um programa ao símbolo inicial da gramática

Download Presentation

5.5 – Análise Bottom-Up

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. 5.5 – Análise Bottom-Up • Tentativa de construir uma árvore sintática para a sentença analisada, começando das folhas, indo em direção à raiz (pós-ordem , em alguns métodos) • Esse processo pode ser encarado como a reduçãototal de uma sentença ou um programa ao símbolo inicial da gramática • Redução unitária (ou simplesmente redução): numa forma sentencial, uma sub-cadeia de símbolos igual ao lado direito de uma produção é substituído pelo não-terminal do ladoesquerdo dessa produção

  2. Exemplo: • Risco: escolher reduções erradas e nunca chegar ao símbolo inicial S

  3. Uma forma sentencial pode apresentar várias alternativas conflitantes para reduções: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Se a gramática não for ambígua, só uma delas coopera para se chegar ao símbolo inicial

  4. 5.5.1 – Análise por deslocamento e redução • Os átomos da sentença são deslocados um por um para dentro de uma pilha para reduções • Essas ocorrem para terminais e/ou não-terminais do topo da pilha • Se a sub-cadeia é devidamente escolhida a cada redução, o resultado é uma completa derivação mais à direita reversa

  5. Exemplo: Seja a gramática: S  a A B e A  A b c | b B d • Seja a sentença abbcde e sua redução total a S: a bb c d e  a A b c d e  a Ad e a A B e  S • Esta redução total é inversa a seguinte derivação mais à direita: Smd a AB e md a A d e md a A b c d e md a b b c d e

  6. S  a A B e A  A b c | b B d • Sentença abbcde e sua redução total a S: a b b c d e  a A b c d e  a A d e  a A B e  S • Três possíveis reduções da forma sentencial: a A b c d e A Redução escolhida A ser feita mais tarde, quando ‘d’ cair na pilha Não leva a S, mas é o primeiro lado direito que se forma no topo da pilha B A

  7. S  a A B e A  A b c | b B d Simulação da redução de a b b c d e: Observa-se que Pilha  Entrada é uma forma sentencial (derivada de S), se a entrada for correta

  8. S  a A B e A  A b c | b B d Simulação da redução de a b b c d e: Observa-se que Pilha  Entrada é uma forma sentencial (derivada de S), se a entrada for correta

  9. S  a A B e A  A b c | b B d Simulação da redução de a b b c d e: Observa-se que Pilha  Entrada é uma forma sentencial (derivada de S), se a entrada for correta Lado direito de uma produção: Reduzir

  10. S  a A B e A  A b c | b B d Simulação da redução de a b b c d e: Observa-se que Pilha  Entrada é uma forma sentencial (derivada de S), se a entrada for correta

  11. S  a A B e A  A b c | b B d Simulação da redução de a b b c d e: Observa-se que Pilha  Entrada é uma forma sentencial (derivada de S), se a entrada for correta Lado direito de uma produção: Não reduzir

  12. S  a A B e A  A b c | b B d Simulação da redução de a b b c d e: Observa-se que Pilha  Entrada é uma forma sentencial (derivada de S), se a entrada for correta Lado direito de uma produção: Reduzir

  13. S  a A B e A  A b c | b B d Simulação da redução de a b b c d e: Observa-se que Pilha  Entrada é uma forma sentencial (derivada de S), se a entrada for correta

  14. S  a A B e A  A b c | b B d Simulação da redução de a b b c d e: Observa-se que Pilha  Entrada é uma forma sentencial (derivada de S), se a entrada for correta Lado direito de uma produção: Reduzir

  15. S  a A B e A  A b c | b B d Simulação da redução de a b b c d e: Observa-se que Pilha  Entrada é uma forma sentencial (derivada de S), se a entrada for correta

  16. S  a A B e A  A b c | b B d Simulação da redução de a b b c d e: Observa-se que Pilha  Entrada é uma forma sentencial (derivada de S), se a entrada for correta Lado direito de uma produção: Reduzir

  17. S  a A B e A  A b c | b B d Simulação da redução de a b b c d e: Observa-se que Pilha  Entrada é uma forma sentencial (derivada de S), se a entrada for correta Aceitar a cadeia de entrada

  18. Exemplo: seja a gramática L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$

  19. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $

  20. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $

  21. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $

  22. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $

  23. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $

  24. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $

  25. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $

  26. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $

  27. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $

  28. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $

  29. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $

  30. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $

  31. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $

  32. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $

  33. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $

  34. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $

  35. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $

  36. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $

  37. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $  T * ( E + F ) $

  38. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $  T * ( E + F ) $

  39. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $  T * ( E + F ) $  T * ( E+T )$

  40. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $  T * ( E + F ) $  T * ( E+T )$

  41. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $  T * ( E + F ) $  T * ( E+T )$  T * ( E )$

  42. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $  T * ( E + F ) $  T * ( E+T )$  T * ( E )$

  43. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $  T * ( E + F ) $  T * ( E+T )$  T * ( E )$

  44. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $  T * ( E + F ) $  T * ( E+T )$  T * ( E )$

  45. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $  T * ( E + F ) $  T * ( E+T )$  T * ( E )$  T * F $

  46. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $  T * ( E + F ) $  T * ( E+T )$  T * ( E )$  T * F $

  47. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $  T * ( E + F ) $  T * ( E+T )$  T * ( E )$  T * F $  T $

  48. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $  T * ( E + F ) $  T * ( E+T )$  T * ( E )$  T * F $  T $

  49. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $  T * ( E + F ) $  T * ( E+T )$  T * ( E )$  T * F $  T $  E $

  50. L  E $ E  E opad T | T T  T opmult F | F F cte| ( E ) Análise da expressão 10 * (5 + 3)$ Derivação mais à direita reversa: 10 * ( 5 + 3 ) $  F * ( 5 + 3 ) $  T * ( 5 + 3 ) $  T * ( F + 3 ) $  T * ( T + 3 ) $  T * ( E + 3 ) $  T * ( E + F ) $  T * ( E+T )$  T * ( E )$  T * F $  T $  E $

More Related