Está en la página 1de 5

Un árbol de análisis sintáctico o árbol de derivación es un árbol cuyos nodos representan

terminales y no terminales de la gramática donde el nodo raíz es el símbolo de inicio y los hijos de
cada nodo no terminal son los símbolos que reemplazan a ese no terminal en la derivación
(ningún símbolo terminal puede ser nodo interior del árbol, ni ningún símbolo no terminal
puede ser una hoja).

A continuación se presenta un árbol de análisis sintáctico para la cadena zazababa usando la


siguiente gramática y cual quiera de las derivaciones.

Ejemplo 1

S zMNz
M aMa
M z
N bNb
N z

S zMNz aMaNz zazaNz zazabNbz zazabzbz

Una secuencia de derivaciones puede representarse mediante un árbol.

Formalmente.

Definición (Árbol de derivación) Dada una gramótica independiente del contexto


G = (V, T, P, S), se define un árbol de derivación para G como uno que verifica las
siguientes condiciones:

- cada nodo interior está etiquetado con una variable de V ,

- cada hoja está etiquetada con una variable, un carácter terminal o ε,

- si un nodo está etiquetado con una variable A y sus hijos están etiquetados con
X1, . . . ,Xn (respetando el orden de aparición), entonces A → X 1 · · ·Xn es una
producción de P.
Ejemplo

La derivación

P ⇒G 1P1 ⇒G 10P01 ⇒G 10101.

puede representarse mediante el siguiente árbol de derivación:

Nótese que la cadena obtenida concatenando, de izquierda a derecha, las hojas


del árbol es, precisamente, 10101.

Obviamente, los árboles que centrarán nuestra atención son aquellos cuya raíz
está etiquetada con la variable inicial y cuyas hojas están etiquetadas con
carácteres terminales, i.e. representan cadenas del lenguaje.

Veamos a continuación que los árboles de derivación y las secuencias de


derivaciones son, esencialemnte los mismos objetos, i.e. son equivalentes.

Teorema 1 Dada una gramática independiente del contexto, digamos G = (V, T, P,


S), una variable A ∈ V y una cadena w ∈ T*
tal que A ⇒* w.

Entonces, existe un árbol de derivación cuya raíz está etiquetada con A y cuyo
resultado es w.

Demostración La demostración se lleva a cabo por inducción en el número de


derivaciones.
Supongamos que w se puede inferir en un único paso de derivación a partir de A,
i.e. que A → w es una producción. Si w = w1 · · ·wm, donde w1, . . . ,wm ∈ (V ∪ T),
construimos el siguiente árbol de derivación.

En el caso de que w = ε, el árbol que se construye es el siguiente:

Por inducción, supongamos que para toda cadena derivable de A en a lo más n


pasos, tiene asociada un árbol de derivación. Sea w una cadena que derivable a
partir de A en n + 1 pasos. Supongamos además que la primera derivación es de
la forma A ⇒ X1 · · ·Xm, donde X1, . . . ,Xm ∈ (V ∪T)* ∪{ε}.
Para cada i ∈ N, con 1 ≤ i ≤ m, distinguimos los siguientes casos:

- Si Xi = ε, asociamos a Xi el árbol Ti definido como

- Si Xi = w, con w ∈ T, construimos el árbol de derivación

- Finalmente, si Xi ∈ V , considerando las derivaciones que afectan a X i,


obtenemos una cadena subcadena de w, digamos wi ∈ (V ∪ T)*, y una secuencia
de a lo más n derivaciones Xi ⇒ wi. Por hipótesis inductiva, existe un árbol de
derivación, digamos Ti, cuya raíz está etiquetada con Xi y cuyo resultado es,
precisamente, wi.

En resumen, para cada Xi, con i ∈ N y 1 ≤ i ≤ m, tenemos un árbol de derivación


asociado Ti. Definimos entonces el árbol
La demostración concluye observando que el resultado de dicho árbol es la
concatenación de los símbolos w1, . . . ,wm (sean del alfabeto terminal o va riables),
i.e. w = w1 · · ·wm.

Teorema 2. Dado un árbol de derivacién de una gramática G = (V, T, P, S) cuya


raíz está etiquetada mediante A ∈ V y cuyo resultado es w ∈ (V ∪ T)* , existe una
secuencia de derivaciones tales que A ⇒* w.

Demostración .– La demostración se llevará a cabo por induccién en la


profundidad del árbol.

Supongamos que el árbol tiene profundidad nula. Por lo tanto, el árbol es de la


forma:

donde X1, . . . ,Xm ∈ (V ∪ T)* . Gracias a la definición de árbol de derivación se


sigue que A → X1 · · ·Xm es una producción, por lo que A ⇒ X1 · · ·Xm es una
derivación admisible.

Supongamos que el resultado es cierto para cualquier árbol de derivación de


profundidad n y demostremoslo para los árboles de profundidad n + 1.

Sea A la raíz de un árbol de profundidad n+1, y sean X 1, . . . ,Xk ∈ (V ∪T) las


etiquetas de sus hijos. Si Xi es, para algún i ∈ N con 1 ≤ i ≤ k, un carácter
terminal, definimos wi := Xi. En caso contrario, se sigue que Xi es una variable
raíz de un árbol de profundidad a lo más n. Por hipótesis, existe una derivación
que tiene como resultado el resultado del árbol cuya raíz es X i, i.e. Xi ⇒* wi. En
cualquier caso, el resultado del árbol con raíz A es exactamente w = w 1 · · ·wk,
por lo que A ⇒ X1 · · ·Xk ⇒* w1 · · ·wk.
Nota Una atenta lectura de la demostración anterior revela que el tipo de
derivaciones que aparecen son precisamente las derivaciones más a la izquierda.
Esto es, dado un árbol de derivación podemos construir una derivación más a la
izquierda con igual resultado.

http://sistemas.itlp.edu.mx/tutoriales/teoriadelacomputacion/t32.htm

de este link lo tome se me hace mas fácil este explicacion

También podría gustarte