Академический Документы
Профессиональный Документы
Культура Документы
la derivación por la izquierda del símbolo inicial para una cadena de entrada.
• Ejemplo:
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:
Es del tipo LL1 porque empezamos a derivando por la izquierda, y los carácteres son leidos 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.
Bueno 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 Ambiguedad
- Eliminar Recursividad por la Izquierda
- Factorizar
- Primeros y siguientes
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.
Ejemplo:
Ejemplo:
Gramática Recursiva
El trabajo del analizador sobre una cadena de gramática particular.
(Bottom-Up-Parser): un analizador puede empezar con la entrada e intentar llegar hasta el símbolo
inicial, intuitivamente el analizador intenta encontrar los símbolos más pequeños y
progresivamente construir la jerarquía de símbolos hasta el inicial, los analizadores LR funcionan
así y un ejemplo es el Yacc.
Los analizadores sintácticos LR, también conocidos como Parser LR, son un tipo
de analizadores para algunas gramáticas libres de contexto. Pertenece a la familia de los
analizadores ascendentes, ya que construyen el árbol sintáctico de las hojas hacia la raíz. Utilizan
la técnica de análisis por desplazamiento reducción. Existen tres tipos de parsers LR: SLR (K), LALR
(K) y LR (K) canónico.
1. Un programa conductor
2. Una entrada
3. Una salida
4. Una tabla de análisis sintáctico, compuesta de 2 partes (ACCIÓN Y GOTO)
Cabe acotar que el programa conductor es siempre igual, solo variando para cada lenguaje la tabla
de análisis sintáctico.
SI ACCIÓN = REDUCE n (n ∈ N), se sacan de la pila tantas tuplas (estado, símbolo) como el largo de
la cola de la producción en el n-ésimo lugar, y se reemplaza por la cabeza de esta producción. El
nuevo estado sale de buscar en la tabla GOTO usando para ubicarlo el número de estado que
quedo en el tope de la pila, y el no terminal en la cabeza.
En la tabla acción también encontraremos ACEPTAR que se toma la cadena como valida y se
termina el análisis o ERROR que se rechaza la cadena.
Para generar un autómata LR(0) en base a una gramática G, primero se debe definir:
1. Se amplía la gramática
2. Dado el símbolo inicial de la gramática ampliada, se calcula su clausura y este
se define como un estado inicial.
3. Para cada estado: se agrupan las producciones según el carácter que está
después del punto, si todavía no se definió el estado, se corre el punto un
carácter a la derecha, se crea el nuevo estado con esta producciones, y la
clausura de cada una de ellas, se define el carácter que estaba después del
punto en el estado de origen como el carácter de la transición.
4. Si el estado tiene en alguna producción el punto al final, este estado se marca
como un estado final del autómata.
5. Se sigue hasta que ya no se tenga más estados nuevos posibles.
- DESCENDENTE
- ASCENDENTE
BIBLIOGRAFÍA: