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.