Sie sind auf Seite 1von 14

DERIVACIONES Y

ARBOLES SINTACTICOS
1.
2.

DEFINICION

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
ANALIZADOR UNIVERSAL
ANALIZADOR ASCENDENTE
ANALIZADOR DESCENDENTE

1. DEFINICION
La estructura sintctica de los lenguajes de
programacin se especifican mediante Gramticas
Libres de Contexto (GLC). Analizar
sintcticamente una cadena de tokens es encontrar
para ella un rbol 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

PRINCIPIO

2. DERIVACIONES POR LA
IZQUIERDA / DERECHA
Las 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
con derivaciones ms a la izquierda.Todo rbol de
anlisis sintctico tiene asociado una derivacion
izquierda y una nica derivacin derecha. Sin
embargo una 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

PRINCIPIO

3. CONCEPTOS DE ARBOLES
GENERALES
En principio podemos considerar la estructura de rbol
de manera intuitiva como una estructura jerrquica.Por
tanto,para estructurar un conjunto de elementos ei en
rbol, deberemos escoger uno de ellos e1 al que
llamaremos raz del rbol.Del resto de los elementos
se selecciona un subconjunto e2,...,ek estableciendo
una relacin padre-hijo entre la raz y cada uno de
dichos elementos de manera que e1 es llamado el
padre de e2,de e3,...ek y 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
nr y k rboles A1 ,A2,...,Ak de races n1,n2,...,nk con
N1,N2,...,Nkelementos cada uno establecemos una
relacin padre-hijo entre nr y cada una de las
races de los k rboles.El rbol resultante de N=1
+ N1 + ... + Nk nodos tiene como raz el nodo nr,
los nodos n1,n2,...,nk son los hijos de nr y el
conjunto de nodos hoja est formado por la unin
de los k conjuntos hojas iniciales. Adems a cada
uno de los Ai se 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:
E es la raz del rbol.
S1,S2,S3 son los hijos de E.
S1,D1 componen un subrbol de la raz.
D1,T1,T2,T3,D3,S3 son las hojas del rbol.
PRINCIPIO

4. RECORRIDOS DE UN ARBOL
En 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 denominan preorden,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:

o Si el rbol tiene un nico elemento, dicho


elemento es el listado en preorden.
o 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:

o Si el rbol tiene un nico elemento,dicho


elemento es el listado en inorden.
o Si el rbol tiene una estructura como muestra
la figura 2,el listado en inorden es listar el
subrbol A1 en 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:

o Si el rbol tiene un nico elemento,dicho


elemento es el listado en postorden.
o 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: desde i=0 hasta


la altura h del rbol,listar de izquierda a derecha
los elementos de profundidad i.Como podemos
observar,un nodo n1 aparece antes que n2 en el
listado por niveles si la profundidad de n1es menor
que la profundidad de n2 usando 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 rbol A de 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=rvuwxyzsAp
Aq=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.

PRINCIPIO

5. GRAMATICAS AMBIGUAS
Una sentencia generada por una gramatica es
ambigua si existe ms de un rbol sintctico para ella.
una gramatica es ambigua si genera al menos una
sentencia ambigua, en caso contrario es no ambigua.
El grado de ambiguedad de 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

PRINCIPIO

6. TIPOS GENERALES DE
ANALIZADORES SINTACTICOS
6.1 FORMA DE PROCESAR LA CADENA DE
ENTRADA
o

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
o

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 UNIVERSAL
El algoritmo CYK introducido en 1963 por Cocke,
Younger y Kasami opera solamente con
gramticas libres de contexto mientras que el
algoritmo de Early trata las <b<="" b="">.</b
6.4 ANALIZADOR ASCENDENTE
Contruye el rbol sintctico desde las hojas hasta
llegar a la raz. Son analizadores del tipo
reduccin-despalazamiento.
6.5 NALIZADOR DESCENDENTE
Construyen el rbol sintctico de la sentencia a
reconocer desde el smbolo inicial, hasta llegar a
los smbolos terminales, usando derivaciones ms
hacia la izquierda.
PRINCIPIO