Está en la página 1de 21

RBOL SINTCTICO

Una gramtica libre de contexto est compuesta por los


siguientes elementos:

G = (N , T , P , S )

REPASO - GRAMATICA LIBRE DE
CONTEXTO
Las gramticas libres de contexto tienen una expresividad
limitada y slo pueden expresar un conjunto limitado de
lenguajes.
ELEMENTO N

Conformado por el lenguaje no terminal el cual sirve
como elementos auxiliares para la definicin de una
gramtica. En general los elementos no terminales
no forman parte del conjunto de sentencias que
pretende validar una gramtica.
ELEMENTOS DE LA GRAMATICA

ELEMENTO T
Conformado por el lenguaje terminal que forman las
sentencias que pretende validar una gramtica.


ELEMENTO P
Conformado por el conjunto de reglas que define una
gramtica.
ELEMENTO S

Es el elemento principal que pertenece al lenguaje de no
terminales a partir del cual se aplicaran las sucesivas
reglas gramaticales para validar una sentencia.
Tambin es conocido como axioma inicial.
Un rbol de anlisis sintctico indica como a partir del
axioma de la gramtica se deriva una frase (cadena) del
lenguaje.
P !
P ! 0
P ! 1
P ! 0p0
P ! 0p0

RBOLES DEL ANALIZADOR
SINTACTICO
GRAMATICA
ARBOL
Dada una gramtica independiente del contexto, un rbol
de anlisis sintctico es un rbol tal que:

La raz esta etiquetada con el smbolo inicial.
Cada hoja esta etiquetada con un componente lxico. Las
hojas de izquierda a derecha forman la frase (el
programa fuente).

RBOLES DEL ANALIZADOR
SINTACTICO
RAIZ
HOJA
FRASE
Se toma como nodo padre del nuevo nivel el
antecedente de la regla aplicada.
Los nodos hijos son el conjunto de componentes del
consecuente de la regla aplicada.

Para el nuevo generado nivel se verifica la existencia
de componentes auxiliares, estos componentes
auxiliares sern los nodos padres del siguiente nivel
PASOS PARA LA FORMACION DEL
ARBOL SINTACTICO.

Ejemplo:

Comisin = fijo + valor * 8;

Reglas gramaticales:
1.- S id Asig Expr fsent
2.- Expr id
3.- Expr id opmas Expr
4.- Expr id opmult Expr
5.- Expr num


Existen bsicamente dos formas de describir cmo
en una cierta gramtica una cadena puede ser
derivada desde el smbolo inicial. La forma ms
simple es listar las cadenas de smbolos
consecutivas, comenzando por el smbolo inicial y
finalizando con la cadena y las reglas que han sido
aplicadas.
DERIVICIONES
Una derivacin por la izquierda es aquella en la
que se reemplaza el no terminal ms a la
izquierda en cada paso de la derivacin.





Una derivacin por la izquierda corresponde a
la numeracin preorden de los nodos internos
de su rbol de anlisis gramatical asociado.

DERIVACION POR IZQUIERDA.
Por ejemplo, si tomamos la siguiente gramtica:
(1) S S + S
(2) S 1
y la cadena "1 + 1 + 1", su derivacin a la izquierda
est en la lista [(1) (1) (2) (2) (2)].
La estructura de la derivacin a la izquierda de la
cadena "1 + 1 + 1" con la gramtica anterior sera:
SS+S (1)
SS+S+S (1)
S1+S+S (2)
S1+1+S (2)
S1+1+1 (2)

Una derivacin por la derecha es aquella en la
que se reemplaza el no terminal ms a la
derecha en cada paso de la derivacin.

DERIVACION POR DERECHA

La lista de reglas aplicadas para la derivacin por la
derecha de la cadena con la gramtica anterior
sera la [(1) (2) (1) (2) (2)].

La derivacin por la derecha:
S S + S (1)
S S + 1 (2)
S S + S + 1 (1)
S S + 1 + 1 (2)
S 1 + 1 + 1 (2)

Una gramtica es ambigua cuando para una
determinada sentencia produce ms de un rbol
de derivacin.

La gramtica siguiente es ambigua:

E| id | nm| E + E | E * E | ( E ) | - E

Supongamos la sentencia id + id * id


GRAMATICAS AMBIGUAS

Entrada: num + num * num
E E


E * E E + E


E + E num num E * E


num num num num


El significado semntico es diferente. No existe
una nica traduccin posible.
Se genera cdigo diferente.

No existe un algoritmo que determine con
certeza en un plazo finito de tiempo si una
gramtica es ambigua o no. A lo sumo que se ha
llegado en el estudio de la ambigedad es que
hay algunas condiciones que de cumplirse
determinan la ambigedad, pero en el caso de
no cumplirse no se puede decir que la
gramtica es no ambigua.



Necesidad de evitar las gramticas ambiguas.
Cmo ?.

Transformando la gramtica o estableciendo
precedencias entre operadores y de asociatividad.
Se puede eliminar la ambigedad transformando la
gramtica agrupando todos los operadores de igual
precedencia en grupos y asociando a cada uno una
regla, de forma que los que tengan menor precedencia
aparezca ms cercana al smbolo de inicio,
precedencia en cascada. Esto conlleva el aumento de la
complejidad de la gramtica y con ello en la del rbol
sintctico. La gramtica deja de ser intuitiva.
1.- decl ID : tipo ;
2.- decl ID , decl
3.- tipo INT
4.- tipo REAL
5.- tipo RECORD listaDecl END RECORD
6.- listaDecl decl
7.- listaDecl listaDecl dec
8.- s listaDecl

Construir el rbol sintctico para reconocer la siguiente
sentencia:
ID , ID , ID : RECORD ID : INT ; ID , ID : REAL ; END
RECORD ;


1.-DADA LA SIGUIENTE GRAMATICA
1.- expr ID ASIG NUM
2.- expr NUM
3.- expr ID
4.- cond expr >= expr
5.- cond expr <= expr
6.- cond expr = expr
7.- s FOR ( listaExpr ; cond ; listaExpr )
8.- listaExpr expr
9.- listaExpr listaExpr , expr

Determinar el rbol sintctico para reconocer la sentencia:
FOR ( ID ASIG NUM , NUM ; NUM >= ID ; ID , ID )

2.-DADA LA SIGUIENTE GRAMATICA
1.- S ID ASIG expr FINSENT
2.- expr ID
3.- expr num
4.- expr expr ope expr
5.- num ENTERO
6.- num REAL
7.- ope OPMAS
8.- ope OPMENOS
9.- ope OPMULT

Construir el rbol sintctico para reconocer la siguiente
sentencia:
A = B + 5 * D 10 + F

3.-DADA LA SIGUIENTE GRAMATICA

También podría gustarte