Analisis Sintactico Predictivo
Upcoming SlideShare
Loading in...5
×
 

Analisis Sintactico Predictivo

on

  • 5,517 views

Explica cómo puede optimizarse el análisis sintáctico descendente prediciendo las producciones que se usarán en lugar de probar sistemáticamente todas las posibles.

Explica cómo puede optimizarse el análisis sintáctico descendente prediciendo las producciones que se usarán en lugar de probar sistemáticamente todas las posibles.

Statistics

Views

Total Views
5,517
Views on SlideShare
5,486
Embed Views
31

Actions

Likes
0
Downloads
45
Comments
0

5 Embeds 31

http://www.slideshare.net 15
http://www.ingenieriasimple.com 10
http://ingenieriasimple.com 4
http://www.slashdocs.com 1
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Analisis Sintactico Predictivo Analisis Sintactico Predictivo Presentation Transcript

  • Análisis Sintáctico Predictivo Optimización del Análisis Sintáctico Descendente Leonel Morales Díaz [email_address] Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple. Derechos reservados Disponible en: http://www.ingenieriasimple.com/compiladores
  • Analizador descendente
    • Algoritmo
      • Seleccione una producción y construya los hijos
      • Encuentre el siguiente nodo (no terminal)
      • Si hay otro nodo aplicar recursivamente
      • Si no hay más nodos
        • Si la cadena coincide entonces ACEPTAR
        • Si no coincide, probar recursivamente
  • Ejemplo
    • Gramática de tipos en Pascal
    • Tipo -> Simple | ^id |
    • array [ Simple ] of Tipo
    • Simple -> integer | char |
    • núm puntopunto núm
  • Descendente (símbolo inicial)
    • Function Tipo()
    • Resu = Simple()
    • If Not Resu Then
    • Resu = Match(“^”) And Match(“id”)
    • If Not Resu Then
    • Resu = Match(“Array”) And Match(“[”)
    • And Simple() And Match(“]”)
    • And Match(“of”) And Tipo()
    • End
    • End
    • Tipo = Resu
    • End Function
  • Descendente (nodo)
    • Function Simple()
    • Resu = Match(“integer”)
    • If Not Resu Then
    • Resu = Match(“char”)
    • If Not Resu Then
    • Resu = Match(“núm”)
    • And Match(“puntopunto”)
    • And Match(“núm”)
    • End
    • End
    • Simple = Resu
    • End Function
  • Optimizaciones
    • Probar con todas las producciones
      • Recursividad puede tomar tiempo
    • Escoger la más acertada anticipadamente
    • Implementación de Primero( β)
  • Primero( β)
    • Dice cuál es el primer lexema
      • De cada lado derecho
    • Ejemplo:
    • Tipo -> Simple | ^id |
    • array [ Simple ] of Tipo
    • Primero(Simple)
    • Primero(^id)
    • Primero(array [ Simple ] of Tipo)
    • Antes de usar cualquier producción
      • Chequear primer símbolo
      • Compararlo contra Primero( β)
      • Encontrar la producción correcta
    • Análisis Sintáctico Predictivo
    Uso de Primero( β)
  • Casos especiales
    • ¿Primero( β) = Primero(δ)?
    • ¿Primero( β) = nil?
  • Gramática infijo corregida
    • Expr -> Término Resto
    • Resto -> + Expr | - Expr | nil
    • Término -> 0
    • Término -> 1
    • Término -> 2
    • ....
    • Término -> 9