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

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

III – Análise sintáctica

Apresentações semelhantes


Apresentação em tema: "III – Análise sintáctica"— Transcrição da apresentação:

1 III – Análise sintáctica
DEI Eliminação de ambiguidade Eliminação de recursividade à esquerda Factorização à esquerda Bibliografia aconselhada: Aho, Sethi e Ullman – secções 4.2 e 4.3 Jorge Morais LFA 1999/

2 Ambiguidade de gramáticas
DEI Uma gramática diz-se ambígua se existirem duas derivações diferentes para uma mesma sequência Exemplo: E  E + E id + id +id Jorge Morais LFA 1999/

3 Ambiguidade do if-then-else
DEI Inst  if Expr then Inst | if Expr then Inst else Inst | resto... Gramática ambígua Exemplo: if E1 then if E2 then S1 else S2 Jorge Morais LFA 1999/

4 Eliminação de ambiguidade
DEI Associar cada else com o then não associado mais próximo Inst  InstA | InstNA InstA  if Expr then InstA else InstA | resto InstNA  if Expr then Inst | if Expr then InstA else InstNA Jorge Morais LFA 1999/

5 Precedência de operadores
DEI Consideremos a gramática: E  E + E | E - E | E * E | E / E | ( E ) | id Pode-se eliminar a ambiguidade determinando a precedência de operadores: E  E + T | E - T | T T  T * F | T / F | F F  ( E ) | id Jorge Morais LFA 1999/

6 Recursividade à esquerda
DEI Uma gramática diz-se recursiva à esquerda se existe uma variável A tal que existe uma derivação A + A  Exemplo: A  A  |  Eliminação da recursividade à esquerda A   A’ A’   A’ |  Jorge Morais LFA 1999/

7 Eliminação da Recursividade
DEI A  A 1 | A 2 | ... | A m | 1 | 2 | ... | n onde nenhum i começa por A Podemos reescrever como A  1 A’ | 2 A’ | ... | n A’ A’  1 A’ | 2 A’ | ... | m A’ |  Esta regra só elimina derivações de um passo Jorge Morais LFA 1999/

8 Exemplo DEI E  E + T | E - T | T T  T * F | T / F | F F  ( E ) | id
E  T E’ E’  + T E’ | - T E’ |  T  F T’ T’  * F T’ | / F T’ |  F  ( E ) | id Jorge Morais LFA 1999/

9 Factorização à esquerda
DEI A factorização à esquerda é uma transformação útil para parsers preditivos A   1 |  2 | ... |  n |  A   A’ |  A’  1 | 2 | ... | n Jorge Morais LFA 1999/


Carregar ppt "III – Análise sintáctica"

Apresentações semelhantes


Anúncios Google