Clase digital 9. Análisis sintáctico: Análisis descendente recursivo

Portada » Clase digital 9. Análisis sintáctico: Análisis descendente recursivo
flat screen computer monitor

Análisis sintáctico: Análisis descendente recursivo

Introducción

¡Hola!

Es un placer encontrarte, espero que tu actitud triunfadora no cambie y tengas buen ánimo por aprender cosas nuevas de este curso, por ello te invito a la novena clase.

En esta sesión aprenderemos sobre 

No se diga más. ¡Prosigamos nuestro aprendizaje!

 ¡Éxito!

Desarrollo del tema

Análisis Descendente Recursivo:

  • Es un método fácil de implementar.
  • Genera una función por cada símbolo no terminal.
  • Si las producciones son recursivas, entonces la función correspondiente es recursiva.
  • Es llamado análisis descendente recursivo.
  • Sólo funciona con gramáticas LL(1)
  • Construir un analizador descendente recursivo para la siguiente gramática:
    Input → Input Expr ‘\n’ | Expr ‘\n’
    Expr → Expr ‘+’ Term | Expr ‘-’ Term | Term
    Term → Term ‘*’ S | Term ‘/’ S | S
    S → Factor ‘^’ S | FactorFactor → ( Expr ) | CHAR
  • Solución: La gramática anterior no es adecuada debido a que tiene recursión izquierda.
    Por lo tanto, eliminar recursión izquierda:
    Input → Expr ‘\n‘ {Expr ‘\n‘}
    Expr → Term {(‘+’|’-‘) Term}
    Term → S {(‘*’|’/’) S}
    S → Factor ‘^’ S | FactorFactor → ‘(‘ Expr ‘)’ | CHAR
  • Crear una función por cada símbolo no terminal.
  • Cada función debe llamar a las funciones de los símbolos que componen cada regla en el orden en que aparecen.

    La función retorna cuando logra verificar por completo la regla.

    Los lenguajes de programación son naturalmente recursivos.

    Notación de gramática que es ideal para el diseño de analizadores sintácticos descendentes recursivos: EBNF

    El análisis sintáctico descendente recursivo es uno de los más fáciles de implementar

    Operador que permite definir secuencias sin recursividad a la izquierda: Repetición

    El analizador descendente recursivo no funciona para todas las gramáticas

Cómo se representa el operador de opción: Con corchetes []

Los analizadores descendentes recursivos son más lentos que otros algoritmos

Cómo se representa el operador agrupamiento: Con paréntesis ()

El analizador descendente recursivo requiere que la gramática sea modificada para eliminar la recursividad izquierda.

Conclusión

Para recordar:

Es así como se concluye esta sesión. ¡Felicitaciones por tu esfuerzo y dedicación! Continúa con ese mismo ímpetu las clases como hasta ahora. Revisa el material complementario, realiza las actividades correspondientes y en caso de dudas, consulta a tu asesor. Te encuentro en tu siguiente clase.

Fuentes de información