Sei sulla pagina 1di 18

ANÁLISIS SINTÁCTICO

DESCENDENTE
PRESENTADO POR
Jhon Ricardo Molina Rodero
Paola Andrea Moncada Antonio

UNIVERSIDAD DE CUNDINAMARCA
SECCIONAL UBATÉ
INGENIERÍA DE SISTEMAS
ELECTIVA BÁSICA DE INGENIERÍA 2
17/11/2015
CONTENIDO
● Funcionalidad del analizador sintáctico
● Árboles de derivación
● Análisis sintáctico descendente.
● Análisis sintáctico por descenso recursivo
● Analizadores sintácticos predictivos
● Análisis sintáctico predictivo no recursivo
Funcionalidad del 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.

IMPORTANTE: Las tres tareas (traducción, sintaxis, semántica) se realizan de


forma simultánea, aunque a veces es necesario acumular varios tokens para
realizar alguna comprobación o generar la traducción
Funcionalidad del analizador sintáctico
Componente léxico (token): Son las unidades lógicas que genera el analizador léxico. Es el conjunto de cadenas de entrada que produce como
salida el mismo componente léxico. Cada token es una secuencia de caracteres que representa una unidad de información en el programa fuente.
Árboles de derivación

Un árbol de análisis gramatical correspondiente a una derivación es un árbol


etiquetado
● Los nodos interiores están etiquetados por no terminales
● Los nodos hoja están etiquetados por terminales
● Los nodos hijos de cada nodo interno representan el reemplazo del no
terminal asociado en un paso de la derivación
Árboles de derivación
Un árbol de análisis gramatical se puede considerar como una representación
gráfica de una derivación que no muestra la elección relativa al orden de
sustitución.
● Al final de la construcción del árbol las hojas se leen de izquierda a derecha
para formar una frase del lenguaje, esta frase también es conocida como el
producto frontera del árbol.
Árboles de derivación
Ambigüedad
● Se dice que una gramática que produce más de un árbol de derivación para
alguna frase es ambigua.
● Para algunos tipos de analizadores es preferible que la gramática no sea
ambigua ya que necesitan un árbol exclusivo por frase.
● Algunos analizadores proporcionan métodos para admitir gramáticas
ambiguas pero con especificaciones adicionales que permiten la generación
de un único árbol por frase.
Árboles de derivación
Ejercicio
Análisis sintáctico descendente (ASD)
★ Construye el árbol a partir del nodo raíz, llegando a los nodos hoja en un
recorrido preorden en profundidad.
★ Parten del axioma inicial, y van efectuando derivaciones por la izquierda
hasta obtener la secuencia de derivaciones que reconocen la frase de
entrada.
★ Algunos tipos de análisis descendente
-Por descenso recursivo
-Predictivos
-Predictivos no recursivos
-LL(1)
Análisis sintáctico por descenso recursivo

El análisis sintáctico por descenso recursivo pretende:


● Encontrar una derivación por la izquierda para una cadena de
entrada.
● Construir un árbol de análisis sintáctico para la entrada comenzando
desde la raíz y creando los nodos del árbol en orden previo.
● Este tipo de análisis requiere gramáticas no recursivas por la
izquierda.
Ejemplo:
Analizadores sintácticos predictivos
Analizadores sintácticos predictivos
● Es una variante del método de análisis sintáctico por descenso recursivo.
● Se emplean cuando se tiene una gramática sin recursividad por la izquierda y
factorizada por la izquierda, cumpliendo con estas dos condiciones no se
necesita el retroceso.
● La alternativa apropiada de la gramática se detecta con ver prácticamente el
primer símbolo al que da lugar.
Análisis sintáctico predictivo no recursivo
● Se puede eliminar la recursividad explícita manteniendo una pila.
● Se busca la producción que debe aplicarse en una tabla de análisis
sintáctico.
Análisis sintáctico predictivo no recursivo
Funcionamiento:
● Al principio la pila contiene el símbolo inicial de la gramática encima de $.
● Se tiene en cuenta X, el símbolo en el tope de la pila, y a, el símbolo en curso
de la entrada, entonces;
● Si X = a = $, el análisis se detiene exitosamente.
● Si X = a ¹ $, el analizador saca X de la pila y mueve el apuntador de la
entrada al siguiente símbolo.
● Si X e un símbolo no terminal, entonces:
● Si M[X, a] tiene una regla X→UVW, entonces saca X del tope e introduce
WVU en la pila (U queda en el tope)
● Si M[X, a] = error, se llama la rutina de recuperación de error
Análisis sintáctico LL(1)
Es un analizador sintáctico descendente, por un conjunto de gramática libre de
contexto. En este 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 este método es conocido como
gramática LL.

Un analizador LL es llamado un analizador LL (k) si usa un número k de tokens


cuando el analizador va hacia delante de la sentencia. Si existe tal analizador para
cierta gramática y puede analizar sentencias de esta gramática sin marcha atrás,
Arquitectura de un analizador LL
Lo siguiente describe un derivaciones por la izquierda por un analizador basado en una tabla descendente
(analiza de arriba hacia abajo).

El trabajo del analizador sobre una cadena de gramática particular. El análisis consiste en:

1. un búfer de entrada, una cadena de gramática


2. una pila sobre la cual se almacenan los símbolos terminales y no-terminales de la gramática aún sin
analizar
3. una tabla de análisis

El analizador aplica la regla encontrada en la tabla por encontrar el símbolo más alto en la pila (fila) con el
presente símbolo en el flujo de entrada (columna).
Bibliografía
● https://sycg.wordpress.com/2010/12/14/analizador-sintactico-ascendente-y-
descendente/
● http://www.ecured.cu/Analizador_sint%C3%A1ctico_descendente
● http://www.dlsi.ua.es/assignatures/pl/downloads/1415/tema3-1x2.pdf