990 likes | 1.13k Views
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
E N D
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
Exemplo: • Risco: escolher reduções erradas e nunca chegar ao símbolo inicial S
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
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
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: Smd a AB e md a A d e md a A b c d e md a b b c d e
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
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
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
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
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
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
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
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
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
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
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
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
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)$
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 ) $
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 )$
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 )$
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 )$
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 )$
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 )$
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 )$
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 $
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 $
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 $
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 $
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 $
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 $