Está en la página 1de 10

Anlisis Sintctico Descendente

Seccin 4.4

Anlisis sintctico por descenso recursivo


Consderese la gramtica S => cAd A => ab | a  Entrada w = cad  Revisar las dos posibilidades de A


Anlisis sintctico por descenso recursivo


Pero si fuera S => cAd A => aAb | a  Entrada w = cad


Anlisis sintctico predictivo




Conocer el no terminal a expandir


  

Dado el smbolo actual a (token) A => 1 | 2 | ... | n Elegir i anticipadamente

Anlisis sintctico predictivo


Ejemplo: Prop => if Expr then Prop Else Prop | while Expr do Prop | begin lista_props end  Cmo elegir cul usar?


Transformacin


Se puede usar predictivo en cualquier gramtica? Puede ser necesario hacer correcciones
 

Eliminar recursin izquierda Factorizar por la izquierda


  

Agrupar todos los prefijos comunes Prop => if Expr then Prop Else Prop | if Expr then Prop

Diagrama de transiciones
 

Con la gramtica lista Para cada no terminal:




Crear estado inicial y final Crear camino desde inicial hasta final Aristas X1, X2, ..., Xn

Para cada produccin A => X1X2...Xn


 

Ejemplo
Copie la siguiente gramtica: E => E + T | T T => T * F | F F => (E) | id  Tiene recursin izquierda?  Necesita factorizacin izquierda?


Gramtica sin recursin


E => TE E => +TE | nil T => FT T => *FT | nil F => (E) | id

Diagrama de transiciones
T E: 0 + E: 3 4 1 T 5 E' 2 E 6

nil

También podría gustarte