Análisis Sintáctico Descendente
Análisis Sintáctico Descendente
Análisis Sintáctico Descendente
SINTÁCTICO
DESCENDENTE
¿Cómo funciona el analizador sintáctico?
La primera acción de un analizador sintáctico es obtener un token de la entrada, llamando al
analizador léxico (que trabaja como un subprograma).
El analizador va leyendo tokens del analizador léxico a la vez que va generando la traducción,
comprobando que la sintaxis es correcta y comprobando las restricciones semánticas.
El análisis sintáctico descendente (ASD) intenta encontrar entre las producciones de la gramática la
derivación por la izquierda del símbolo inicial para una cadena de entrada.
(Top-Down-Parser): un analizador puede empezar con el símbolo inicial e intentar transformarlo en
la entrada, intuitivamente esto sería ir dividiendo la entrada progresivamente en partes cada vez más
pequeñas, de esta forma funcionan los analizadores LL.
Se llama descendente porque parte del símbolo inicial (la raíz del árbol de derivación) y trata de
llegar a la cadena de terminales (las hojas del árbol).
EJEMPLO:
Analizar la cadena de entrada “cad” dada la
gramática siguiente:
S -> c A d
A -> ab | a
El analizador sintáctico LL es un analizador sintáctico descendente, por un conjunto de gramática libre de contexto.
En éste analizador las entradas son de izquierda a derecha, y construcciones de derivaciones por la izquierda de una
sentencia o enunciado. La clase de gramática que es analizable por éste método es conocido como gramática LL.
La recursividad va a implicar:
Algoritmos de reconocimiento más complejos, que hagan uso de llamadas recursivas o usen explícitamente una
pila, la pila de análisis sintáctico.
La estructura de datos usada para representar la sintaxis del lenguaje ha de ser también recursiva (el árbol de
análisis sintáctico), en vez de lineal (caso de un vector de caracteres para almacenar los lexemas en el analizador
léxico).
Es del tipo LL1 porque empezamos a derivando por la izquierda, y los caracteres son leídos de izquierda a derecha,
el 1 por que se lee 1 solo elemento de entrada.
También se puede considerar como un intento de construir un árbol de análisis sintáctico para la entrada
comenzando desde la raíz y creando los nodos del árbol en orden previa.
Primeramente, para trabajar el análisis sintáctico descendente se debe realizar primeramente algunas operaciones
para que la gramática sea LL1 las cuales son:
Eliminar Ambigüedad
Eliminar Recursividad por la Izquierda
Factorizar
Primeros y siguientes
1. Eliminar Ambigüedad:
Una gramática es ambigua cuando genera más de un árbol de
derivación.
Para eliminar la ambigüedad se debe reescribir la gramática.