derivaciones y arboles sintacticos

17
DERIVACIONES Y ARBOLES SINTACTICOS 1. DEFINICION 2. DERIVACIONES POR LA IZQUIERDA / DERECHA o EJEMPLO POR LA IZQUIERDA o EJEMPLO POR LA DERECHA 3. CONCEPTOS DE ARBOLES GENERALES 4. RECORRIDOS DE UN ARBOL 5. GRAMATICAS AMBIGUAS 6. TIPOS GENERALES DE ANALIZADORES SINTACTICOS FORMA DE PROCESAR LA CADENA DE ENTRADA NUMEROS DE ALTERNATIVAS POSIBLES EN UNA DERIVACION

Upload: cornelio-anoniitha

Post on 14-Sep-2015

27 views

Category:

Documents


2 download

DESCRIPTION

automstsd

TRANSCRIPT

DERIVACIONES Y ARBOLES SINTACTICOS

1. DEFINICION2. DERIVACIONES POR LA IZQUIERDA / DERECHA EJEMPLO POR LA IZQUIERDA EJEMPLO POR LA DERECHA3. CONCEPTOS DE ARBOLES GENERALES4. RECORRIDOS DE UN ARBOL5. GRAMATICAS AMBIGUAS6. TIPOS GENERALES DE ANALIZADORES SINTACTICOS FORMA DE PROCESAR LA CADENA DE ENTRADA NUMEROS DE ALTERNATIVAS POSIBLES EN UNA DERIVACION ANALIZADOR UNIVERSAL ANALIZADOR ASCENDENTE ANALIZADOR DESCENDENTE

1. DEFINICIONLa estructura sintctica de los lenguajes de programacin se especifican medianteGramticas Libres de Contexto (GLC). Analizar sintcticamenteuna cadena de tokens es encontrar para ella unrbol sintctico, que tenga como rz el smbolo inicial de la GLC y mediante la aplicacin sucesiva de sus reglas de derivacin se puede alcanzar dicha cadena como hojas del rbol sintctico.EJEMPLO

PRINCIPIO2. DERIVACIONES POR LA IZQUIERDA / DERECHALas reglas de derivacion desde el smbolo inicial hasta alcanzar la sentencia a reconocer,reemplazan los smbolos NT tomando el de ms a la izquierda o el de ms a la derecha. Habitualmente se trabaja conderivaciones ms a la izquierda.Todo rbol de anlisis sintctico tiene asociado una derivacion izquierda y una nica derivacin derecha. Sin embargouna sentencia de un lenguaje puede dar lugar a ms de un rbol de anlisis sintctico tanto por la derecha como por la izquierda.2.1 EJEMPLO POR LA IZQUIERDA

2.2 EJEMPLO POR LA DERECHA

PRINCIPIO3. CONCEPTOS DE ARBOLES GENERALESEn principio podemos considerar la estructura de rbol de manera intuitiva como una estructura jerrquica.Por tanto,para estructurar un conjunto de elementos eien rbol, deberemos escoger uno de ellos e1al que llamaremosraz del rbol.Del resto de los elementos se selecciona un subconjunto e2,...,ekestableciendo unarelacin padre-hijoentre la raz y cada uno de dichos elementos de manera que e1es llamado el padre de e2,de e3,...eky cada uno de ellos es llamado un hijo de e1.Iterativamente podemos realizar la misma operacin para cada uno de estos elementos asignando a cada uno de ellos un nmero de 0 o ms hijos hasta que no tengamos ms elementos que insertar.El nico elemento que no tiene padre es e1,la raz del rbol.Por otro lado hay un conjunto de elementos que no tienen hijos aunque s padre que son llamados hojas.Como hemos visto la relacin de paternidad es una relacin uno a muchos.

El caso bsico es un rbol con un nico nodo.Lgicamente este nodo es a la vez raz y hoja del rbol. Para construir un nuevo rbol a partir de un nodo nrykrboles A1,A2,...,Akde races n1,n2,...,nkcon N1,N2,...,Nkelementos cada uno establecemos una relacin padre-hijo entre nry cada una de las races de loskrboles.El rbol resultante de N=1 + N1+ ... + Nknodos tiene como raz el nodo nr, los nodos n1,n2,...,nkson los hijos de nry el conjunto de nodos hoja est formado por la unin de loskconjuntos hojas iniciales. Adems a cada uno de los Aise les denota subrboles de la raz.

Ejemplo: Consideremos el ejemplo de la siguiente figura.

Podemos observar que cada uno de los identificadores representa un nodo y la relacin padre-hijo se seala con una lnea.Los rboles normalmente se presentan en forma descendente y se interpretan de la siguiente forma: Ees la raz del rbol. S1,S2,S3son los hijos deE. S1,D1componen un subrbol de la raz. D1,T1,T2,T3,D3,S3son las hojas del rbol.PRINCIPIO4. RECORRIDOS DE UN ARBOLEn una estructura lineal resulta trivial establecer un criterio de movimiento por la misma para acceder a los elementos, pero en un rbol esa tarea no resulta tan simple.No obstante, existen distintos mtodos tiles en que podemos sistemticamente recorrer todos los nodos de un rbol.Los tres recorridos ms importantes se denominanpreorden,inorden y postordenaunque hay otros recorridos como es el recorrido por niveles.Si consideramos el esquema general de un rbol tal como muestra la figura siguiente,los recorridos se definen como sigue:

1. El listado en preorden es:

Si el rbol tiene un nico elemento, dicho elemento es el listado en preorden. Si el rbol tiene ms de un elemento,es decir,una estructura como muestra la figura 2,el listado en preorden es listar el nodo raz seguido del listado en preorden de cada uno de los subrboles hijos de izquierda a derecha.

2. El listado en inorden es:

Si el rbol tiene un nico elemento,dicho elemento es el listado en inorden. Si el rbol tiene una estructura como muestra la figura 2,el listado en inorden es listar el subrbolA1en inorden,y listar el nodo raz seguido del listado en inorden de cada uno de los subrboles hijos de izquierda a derecha restantes.

3. El listado en postorden es:

Si el rbol tiene un nico elemento,dicho elemento es el listado en postorden. Si el rbol tiene una estructura como muestra la figura 2,el listado en postorden es listar en postorden cada uno de los subrboles hijos de izquierda a derecha seguidos por el nodo raz.

4. El listado por niveles es:desdei=0hasta la alturahdel rbol,listar de izquierda a derecha los elementos de profundidadi.Como podemos observar,un nodon1aparece antes quen2en el listado por niveles si la profundidad den1es menor que la profundidad den2usando el orden de los nodos definido anteriormente para el caso en que tengan la misma profundidad.

Como ejemplo de listados veamos el resultado que se obtendra sobre el rbolAde la figura 3.

Los resultados de los listados de preorden,postorden e inorden son los siguientes:

1. Listado preorden.

A=Ar=rAvAs=rvAuAwAs= rvuAwAs=rvuwAxAyAzAs= rvuwxAyAzAs=rvuwxyAzAs=rvuwxyzAs=rvuwxyzsApAq=rvuwxyzspAq=rvuwxyzspq.2. Listado postorden.

A=Ar=AvAsr=AuAwvAsr= uAwvAsr=uAxAyAzwvAsr= uxAyAzwvAsr=uxyAzwvAsr=uxyzwvAsr= uxyzwvApAqsr=uxyzwvpAqsr=uxyzwvpqsr.3. Listado inorden.

A=Ar=AvrAs=AuvAwrAs= uvAwrAs=uvAxwAyAzrAs=uvxw AyAzrAs=uvxwyAzrAs=uvxwyzrAs= uvxwyzrApsAq=uvxwyzrpsAq=uvxwyzrpsq.Por ltimo,el listado por niveles de este rbol es el siguiente:r,v,s,u,w,p,q,x,y,z.Finalmente es interesante conocer que un rbol no puede,en general,recuperarse con uno solo de sus recorridos.Por ejemplo:Dada la lista en inorden:vwyxzrtupsq,los rboles de la figura 4 tienen ese mismo recorrido en inorden.

PRINCIPIO5. GRAMATICAS AMBIGUASUnasentencia generada por una gramatica es ambiguasi existe ms de un rbol sintctico para ella. unagramatica es ambiguasi genera al menos una sentencia ambigua, en caso contrario esno ambigua. Elgrado de ambiguedadde una sentencia se caracteriza por el nmero de rboles sintcticos distintos que la generan. La ambiguedad de una gramtica es una propiedad indecidible.EJEMPLO DE UNA GRAMATICA AMBIGUA

PRINCIPIO6. TIPOS GENERALES DE ANALIZADORES SINTACTICOS 6.1 FORMA DE PROCESAR LA CADENA DE ENTRADA Mtodos direccionales:Procesan la cadena de entrada smbolo a smbolo de izquierda a derecha Mtodos no-direccionales:Acceden a cualquier lugar de la cadena de entrada para construir el rbol. Necesitan tener toda la cadena de componentes lxicos en memoria para que el anlisis pueda comenzar 6.2 NUMEROS DE ALTERNATIVAS POSIBLES EN UNA DERIVACION Mtodos deterministas:Dado un smbolo de la cadena de entrada se puede decidir en cada paso cual es la alternativa/derivacin adecuada a aplicar Mtodos no-deterministas:En cada paso de la construccin del arbol se pdeben probar diferentes alternativas/derivaciones para ver cual es la adecuada. 6.3 ANALIZADOR UNIVERSALEl algoritmoCYKintroducido en 1963 por Cocke, Younger y Kasami opera solamente con gramticas libres de contexto mientras que el algoritmo de Early trata las