Está en la página 1de 3

ANALIZADOR SINTACTICO LL(K)

Un analizador LL es llamado un analizador LL (k) si usa k tokens cuando el analizador ve hacia


delante de la sentencia. Si existe tal analizador para cierta gramtica y puede analizar sentencias
de sta gramtica sin marcha atrs, entonces es llamada una gramtica LL (k). De sta gramticas,
la gramtica LL(1), aunque es bastante restrictiva, stas son muy populares porque los
analizadores LL correspondientes slo necesita ver el siguiente token para hacer el anlisis de sus
decisiones. Lenguajes mal diseados usualmente suelen tener gramticas con un alto nivel de k, y
requieren un esfuerzo considerable a analizar.

Tipo de analizador sintctico predictivo
Se considera como un intento por encontrar una derivacin por la izquierda para una
cadena de entrada
Intento de construir un rbol desde la raz, y creando los nodos del rbol en orden previo

LAS GRAMATICAS Y EL ANALIZADOR LL

Un analizador sintctico LL(1) no puede resolver gramticas recursivas por la izquierda
Estas pueden hacer que inicie un proceso recursivo infinito
Estos analizadores resultan ser los ms simples pero los menos potentes

COMO FUNCIONA UN ANALIZADOR SINTACTICO LLT

Las funciones primero y siguiente permiten rellenar, siempre que sea posible, las entradas
de una tabla de anlisis sintctico predictivo para una gramtica
Tambin se usan los componentes devueltos por la funcin Siguiente para sincronizar la
recuperacin de errores en modo de pnico

Primero:

Si x es una cadena de smbolos gramaticales, se considera PRIMERO(x) como el conjunto
de terminales que inician las cadenas derivadas de x.
Si x->e entonces e tambin est en Primero(x)

Siguiente:
Se define Siguiente(A) como el conjunto de terminales a que pueden aparecer
inmediatamente a la derecha de A en alguna forma de frace
El conjunto de terminales de a tal que haya una derivacin de la forma S->xaAaB para
algn x y B.

En algn momento de la derivacin pudieron haber existido smbolos entre A y a, pero si
as fue, se derivaron a e(psilon)
Si A puede ser el smbolo situado ms a la derecha en una forma de frase, entonces $ esta
en SIGUIENTE(A).




ANALIZADOR SINTACTICO LR(K)
Los analizadores sintcticos LR, tambin conocidos como Parser LR, son un tipo de analizadores
para algunas gramticas libres de contexto. Pertenece a la familia de los analizadores ascendentes,
ya que construyen el rbol sintctico de las hojas hacia la raz. Utilizan la tcnica de anlisis por
desplazamiento reduccin. Existen tres tipos de parsers LR: SLR (K), LALR (K) y LR (K) cannico.
Un analizador LR consta de:
Un programa conductor
Una entrada
Una salida
Una tabla de anlisis sintctico, compuesta de 2 partes (ACCIN Y GOTO)
Cabe acotar que el programa conductor es siempre igual, solo variando para cada lenguaje la tabla
de anlisis sintctico.
El algoritmo para reconocer cadenas es el siguiente: dado el primer carcter de la cadena y el
estado inicial de la tabla, buscar qu accin corresponde en la tabla de accin.
Si el estado es shift n (n N), se coloca el carcter y el nmero de estado n en la pila, se lee el
siguiente carcter y repite el procedimiento, solo que esta vez buscamos en el estado
correspondiente.
SI ACCIN = REDUCE n (n N), se sacan de la pila tantas tuplas (estado, smbolo) como el largo de
la cola de la produccin en el n-simo lugar, y se reemplaza por la cabeza de esta produccin. El
nuevo estado sale de buscar en la tabla GOTO usando para ubicarlo el nmero de estado que
quedo en el tope de la pila, y el no terminal en la cabeza.
En la tabla accin tambin encontraremos ACEPTAR que se toma la cadena como valida y se
termina el anlisis o ERROR que se rechaza la cadena.

COMO FUNCIONA UN ANALIZADOR SINTACTICO ASCENDENTE LR
Para generar un autmata LR(0) en base a una gramtica G, primero se debe definir:
Gramtica ampliada: Dado una gramtica G, se define la gramtica ampliada G'a:
1. Se agrega una produccin S'->S# donde S es el smbolo inicial.(el # representa el
fin de cadena)
2. Se pasan todas las producciones a tems de configuracin (veremos este concepto
en un instante) con el punto al principio de la cola
3. Se define S' como el smbolo inicial de la gramtica.
tem de configuracin: un tem de configuracin es una produccin que tiene un
carcter especial (generalmente un punto) en algn lugar de la cola. Por ejemplo: la
produccin S->ABC genera los siguientes tems,{ S->.ABC, S->A.BC, S->AB.C S-
>ABC.}. Como veremos en un instante, y hablando informalmente el punto
representa el lugar actual en donde me puedo encontrar en un momento en el parseo
en una produccin.
Clausura de un tem: se define a la clausura de un tem (y de forma informal) a:
dado un tem S->A.cB (A, B e V*, c e Vt unin VN) al conjunto formado por
1. S->A.cB
2. Si c es un no terminal, se agregan todos los tems que tengan a c como cabeza de
la produccin y el punto al principio de la cola,
3. Si p es un tem que pertenece a la clausura, la clausura de p pertenece a la
clausura, siempre y cuando ya no este agregada.
En otras palabras, y para que se entienda el concepto, la clausura de un tem representa
todas las producciones que se pueden aplicar a una cadena valida a partir del punto del
tem.
Finalmente, la construccin del autmata es as:
1. Se ampla la gramtica
2. Dado el smbolo inicial de la gramtica ampliada, se calcula su clausura y este se
define como un estado inicial.
3. Para cada estado: se agrupan las producciones segn el carcter que est despus del
punto, si todava no se defini el estado, se corre el punto un carcter a la derecha,
se crea el nuevo estado con esta producciones, y la clausura de cada una de ellas, se
define el carcter que estaba despus del punto en el estado de origen como el
carcter de la transicin.
4. Si el estado tiene en alguna produccin el punto al final, este estado se marca como
un estado final del autmata.
5. Se sigue hasta que ya no se tenga ms estados nuevos posibles.
Estrictamente hablando, el autmata LR es un autmata determinista, aunque, en general,
su utilidad radica en ser la base para la construccin de la tabla LR(0).

También podría gustarte