Vous êtes sur la page 1sur 20

Lenguajes y Traductores

GUIA V

FISI 2015-I

ANALISIS SINTACTICO
En toda discusin, el primero que se incomoda y
grita suele ser el que tiene menos razn....
Por eso un necio puede refutar a un sabio en
cualquier momento, pero un sabio no puede
convencer a un necio nunca.
Li Po

Alfred V. Aho ()
El Doctor Alfred V. Aho es un
cientfico computacional. Sus
ocupaciones incluyen trabajar para los
laboratorios Bell y ser profesor de
Computacin en la Universidad de
Columbia.
Se hizo famoso por su creacin, el
lenguaje de programacin AWK (la A
viene de Aho), obra que realiz en
conjunto con Brian Kernighan y meter
J. Weinberger, adems de su coautora
de "Compiladores: Principios,
Tcnicas y Herramientas" con Ravi
SEIT y Jeffrey Ullman. El Doctor Aho
ha recibido varios prestigiosos premios,
y ha sido premiado por el doctorado de
la Universidad de Waterloo y la
Universidad de Helsinki en Finlandia..
Objetivos de aprendizaje
1
2
3

Conocer el concepto de anlisis sintctico


Conocer y caracterizar el concepto de anlisis sintctico ascendente y anlisis
sintctico descendente
Conocer y caracterizar las formas de implementar un analizador sintctico: con
tablas y con autmatas de pila

Augusto Cortez Vsquez

Pag.1/20

Lenguajes y Traductores

FISI 2015-I

Introduccin
Todo lenguaje es definido por una gramtica. En el lenguaje espaol la frase Juan estudia mucho consta de
un sujeto, un verbo y un predicado en ese orden. Igualmente un programa en un lenguaje formal se rige por
una gramtica. EL proceso de anlisis sintctico verifica que los componentes lxicos que son entregados por
el analizador lxico se encuentran en un orden prescrito.

Anlisis sintctico
El analizador sintctico recibe una secuencia de tokens del analizador lxico y decide si la secuencia esta bien
escrita o no. Para ello hace uso de las reglas de derivacin de la gramtica del lenguaje.
El proceso de anlisis sintctico puede describirse como el intento de construir un rbol de anlisis sintctico
para la frase que se quiere reconocer. Aunque en la practica los rboles sintcticos no se implementan porque
ocuparan mucho espacio. Por esta razn se usan como alternativa los autmatas de pila, que guarda
informacin en la pila acerca de los nodos del rbol sintctico relevantes en cada fase del proceso de anlisis.
La sintaxis de las construcciones de los lenguajes de programacin pueden describirse por medios de
gramticas libres del contexto

Ventajas
1

La gramtica proporciona una especificacin precisa, fcil de entender de un lenguaje de


programacin

A partir de algunas clases de gramticas se puede construir automticamente un analizador


eficiente que determine si un programa fuente esta sintacticamente bien formado.

Los lenguajes evolucionan con el tiempo, adquiriendo nuevos construcciones y realizando tareas
adicionales. Estas nuevas construcciones se pueden aadir con mas facilidad a un lenguaje
cuando existe una aplicacin basada en una descripcin gramatical.

Una gramtica imparte una estructura a un lenguaje de programacin til para la traduccin de un
programa fuente a cdigo objeto correcto y para la deteccin de errores

El proceso de construccin del analizador sintctico puede revelar ambigedades sintcticas y


otras construcciones difciles de analizar que podran pasar sin ser detectadas en la fase inicial del
diseo de un lenguaje y de su compilador.

FUNCION DEL ANALIZADOR SINTACTICO


Programa
Fuente

componente
lxico

rbol
anlisis
sintctico

Solicita
Componente
lxico

Augusto Cortez Vsquez

Pag.2/20

Lenguajes y Traductores

FISI 2015-I

EJERCICIO 1
Responda ( V)erdad o (F)also
a) Es verdad que para todo conjunto finito siempre existe una expresin regular
b) Para todo lenguaje regular siempre existe un autmata finito
c) Para todo lenguaje libre de contexto existe siempre un autmata finito
d) No es cierto que todo lenguaje libre de contexto es tambin regular
e) Una gramtica libre de contexto es tambin sensible al contexto
f) Todo regular es reconocido por un autmata de pila
ANLISIS SINTACTICO DESCENDENTE
Intenta construir un rbol de anlisis sintctico, empezando desde la raz y descendiendo
hacia las hojas. Lo que es lo mismo que intentar obtener una derivacin por la izquierda
para una cadena de entrada, comenzando desde la raz y creando los nodos del rbol en
orden previo
ANLISIS SINTACTICO ASCENDENTE
Intenta construir un rbol de anlisis sintctico, empezando desde las hojas ( la cadena) y
ascendiendo hacia la raz. Lo que es lo mismo que intentar obtener una reduccin desde una
cadena hasta llegar al axioma.
MANEJO DE ERRORES
Los programadores a menudo cometen errores al escribir sus programas. Un buen
compilador debera ayudar a identificar y localizar los errores.
TIPOS DE ERRORES
LXICOS: Cuando un lexema no corresponde a ningn componente lxico definido
para el lenguaje. Ejemplo : escribir mal un identificador, verbo u operando
SINTACTICOS: Cuando una secuencia de componentes lxicos no se ajusta a las
reglas de sintaxis definida por la gramtica. Ejemplo : una expresin aritmtica con
parntesis no equilibrados
SEMANTICOS: Cuando no existe relacin semntica entre la secuencia de
componentes lxicos. Ejemplo: operador aplicado a operandos incompatibles
LGICOS: Cuando el algoritmo no corresponde a la solucin del problema. Una
llamada infinitamente recursiva.
ERRORES SINTACTICOS
La secuencia de componentes lxicos proporcionada por el analizador lexicogrfico al
analizador sintctico no satisface las reglas gramaticales
Objetivos de manejador de errores en un analizador sintctico:
1
Informar de la presencia de errores con claridad y exactitud
2
Se debe recuperar de cada error con la suficiente rapidez como para detectar
errores posteriores
3
No debe retrasar significativamente el procesamiento de programas correctos

Augusto Cortez Vsquez

Pag.3/20

Lenguajes y Traductores

FISI 2015-I

GRAMATICA RECURSIVA POR LA IZQUIERDA


G es gramtica recursiva por la izquierda, si se cumple lo siguiente:
+
A VN
A
A / para algn ,
es decir el lado derecho de la frase derivada comienza con el mismo no
terminal del lado izquierdo
La gramtica se dice recursiva inmediata si existe una regla de produccin de
la forma A
A para algn . Una gramtica puede no ser recursiva
inmediata, pero puede ser recursiva, aplicando sucesivas derivaciones.
Una gramtica es no recursiva por la izquierda, si se cumple que:
p: i d P
d empieza con un terminal diferente,
es decir:
A
a1 1 / a2 2 / a3 3
ai aj i j ai Vt 1 i n
TEOREMA
Una gramatica es recursiva por la izquierda
A VN
A
A / para algn ,
Una gramatica es recursiva por la derecha
A VN
A
A/ para algn ,

ELIMINACION DE LA RECURSIVIDAD POR LA IZQUIERDA


Sea G recursiva por la izquierda
Podemos construir una gramtica G no recursiva por la izquierda talque
L(G) = L(G)
Para cada regla de G de la forma
A
A/
en G
Construimos su equivalente en G
A
A
A
A/
Sea la frase , podemos construir los arboles sintacticos con G y con G
A
A
A
A
A

rbol para la forma sentencial

Augusto Cortez Vsquez

A
A
A
A

Pag.4/20

Lenguajes y Traductores

FISI 2015-I

La gramtica G es recursiva por la derecha.


De la misma manera, si G es recursiva por la derecha. Podemos construir una
gramtica G no recursiva por la derecha talque L(G) = L(G)
Para cada regla de G de la forma

A /

en G

Construimos su equivalente en G
A
A
A
A/
G es recursiva por la izquierda.
TEOREMA
Sea la gramtica recursiva por la izquierda
A
A1/ A2/ ...Am/ 1/ 2/.../ n
ninguna / i comienza con A
podemos construir la gramtica G no recursiva por la izquierda
A
A

1 A' / 2 A' / ... n A'


1 A' / 2 A' /.../ m A' /

FACTORIZACION POR LA IZQUIERDA


Una gramtica puede transformarse gramaticalmente para producir una gramtica adecuada
para el anlisis sintctico predictivo. Esta transformacin consiste en agrupar las
producciones con el mismo lado izquierdo, factorizar los smbolos comunes en los lados
derechos.
Entrada:
Salida:
Mtodo:

G
G gramtica factorizada
Sea prefijo comn ms largo a dos o ms alternativas
Sustituir
A
1 / 2 /.../ n /
Por
A
A /
A
1 / 2 /.../ n

Ejemplo 1
P

i E t P /i E t P e P / a

Factorizando
P
P

i E t P P / a
e P/

Augusto Cortez Vsquez

P: proposicion
E: Expresion
i: IF
e: ELSE
t: Then

Pag.5/20

Lenguajes y Traductores

FISI 2015-I

EJERCICIO 2
a) De un ejemplo de gramtica recursiva por la izquierda.
b) Elimine la recursin por la izquierda

ANALISIS SINTACTICO DESCENDENTE


Intenta construir un rbol de anlisis sintctico, empezando desde la raz y descendiendo
hacia las hojas. Lo que es lo mismo que intentar obtener una derivacin por la izquierda
para una cadena de entrada, comenzando desde la raz y creando los nodos del rbol en
orden previo

ANALISIS SINTACTICO PREDICTIVO


NO RECURSIVO
Objetivo: determinar que produccin debe aplicarse a un no terminal
T

W$

El analizador compara X top de la Pila con el smbolo en la entrada a:


Si X = a = $ El AS se detiene y anuncia el xito del anlisis
Si X = a $
Si X VN

El AS saca X de la pila y avanza el cursos en la entrada


consulta T[X,a]
Si T[X,a] = X
A1A2...Ak
Desempilar X
Empilar(An),Empilar(An-1),..Empilar(A1)
Si T[X,a] = ERROR
Llama a rutina de ERROR

Entrada

W cadena de entrada
T Tabla de anlisis sintctico

Salida

Si W L(G) una derivacin por la izquierda para W


Sino indicacin de ERROR

Mtodo

Augusto Cortez Vsquez

Pag.6/20

Lenguajes y Traductores

FISI 2015-I

ACCION ANALISIS()
INICIO
I=1
X= TOP(P)
a = B(I)
Mientras( X $ )
Si (X VT X = $)
Si X = a
DESEMPILAR(X)
I=I+1
Sino ERROR
FinSi
Sino
Si T[X,a] = X
A1A2...Ak
Desempilar X
Empilar(An),Empilar(An-1),..Empilar(A1)
escribir X A1A2...Ak
Sino
ERROR
FinSi
FinSi
X= TOP(P)
a = B(I)
Fin Mientras
FIN

Ejemplo 2
Consideremos la gramtica
A
A+B /B
eliminamos
B
B*C/C
la recursividad
C
(A)/Id

A
A
B
B
C

BA
+BA/
CB
*CB/
(A)/Id

BA

)
-

Sea la Tabla de anlisis sintctico T

Id
A

BA

+
A

*
+BA -

CB

Augusto Cortez Vsquez

B
Id

(
A

CB

*CB C

(A)

Pag.7/20

Lenguajes y Traductores

Paso

PILA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

$A
$AB
$ABC
$ABId
$AB
$A
$AB+
$AB
$ABC
$ABId
$AB
$ABC*
$ABC
$ABId
$AB
$A
$

FISI 2015-I

ENTRADA

SALIDA

Id+Id*Id$
Id+Id*Id$
Id+Id*Id$
Id+Id*Id$
+Id*Id$
+Id*Id$
+Id*Id$
Id*Id$
Id*Id$
Id*Id$
*Id$
*Id$
Id$
Id$
$
$
$

A
B
C

BA
CB
Id

B
A

+BA

B
C

CB
Id

*CB

Id

B
A

CONSTRUCCION DE LA TABLA DE ANALISIS SINTACTICO


Para construir la TAS, en necesario construir los conjuntos PRIMERO y SIGUIENTE.
Para ello definimos las funciones PRIMERO Y SIGUIENTE.
*
PRIMERO() = {a VT /
aw donde w (VT U VT )* }
PRIMERO()
contiene los smbolos terminales que inician las cadenas
derivadas de
Si a VT PRIMERO(a) = { a }
Si A
entonces
PRIMERO(A)
Si A VN A Y1Y2...Yk
Si
a PRIMERO(Yp)
para algn p
y
PRIMERO(Yq)
q= 1,2..p-1
entonces a PRIMERO(A)
Si A VN
Si

A Y1Y2...Yk
PRIMERO(Yq)
q = 1, 2 . . k
entonces PRIMERO(A)

Todos los que estn en PRIMERO(Y1) estn en PRIMERO(X)


Si (Y1
) entonces no se aade nada ms a PRIMERO(X)
Si Y1
entonces se aade PRIMERO(Y2) a PRIMERO(X)
Y as sucesivamente

Augusto Cortez Vsquez

Pag.8/20

Lenguajes y Traductores

FISI 2015-I

ALGORITMO PARA HALLAR PRIMERO


Accion PRIMERO()
Inicio
a VT Incluir (a,PRIMERO(a))
X VN
X

( =1 2... k )
Si =
Incluir (,PRIMERO(X))
Sino
i=1
Mientras i < k

i *
i =i+1
Fin Mientras
Incluir (PRIMERO(i), PRIMERO(X))
Fin si
Fin

Ejemplo 3
A
A
B
B
C

BA
+BA/
CB
*CB/
(A)/Id

PRIMERO(A)

+
*
Id
A
B
C
A
B

{+ }
{* }
{ Id }
{ (, Id }
{ (, Id }
{ (, Id }
{ +, }
{ *, }

SIGUIENTE(A) = {a VT /

Aa

donde , (VT U VT )*}

Conjunto de terminales que aparecen inmediatamente a la derecha de A en alguna frase


1
2

$ SIGUIENTE(S)
Si A
B

Si [ A

S axioma de la gramtica
PRIMERO() {} SIGUIENTE(B)
B] o [

A
i.e.

entonces

SIGUIENTE(A)

Augusto Cortez Vsquez

PRIMERO()]

SIGUIENTE(B)

Pag.9/20

Lenguajes y Traductores

FISI 2015-I

ALGORITMO PARA HALLAR SIGUIENTE


Accion SIGUIENTE()
Inicio
A VN SIGUIENTE(A) =
B
A
Si = ( * )
Incluir(SIGUIENTE(B) , SIGUIENTE(A))
Fin si
Si
Incluir (PRIMERO() VT , SIGUIENTE(A))
Fin si
Fin
En el ejemplo
Por (1)
Por (2) en C

(A)

$
)

Por (3)

en A

BA

SIGUIENTE(A) SIGUIENTE(A)

Por (3)
Por (2)

en A
en A

BA
BA

Por (3)

en B

Por (2)

en B

SIGUIENTE(A)
SIGUIENTE(A)

SIGUIENTE(A) SIGUIENTE(B)
PRIMERO(A){} SIGUIENTE(B)
{+}
CB
SIGUIENTE(B) SIGUIENTE(B)
*CB PRIMERO(T){} SIGUIENTE(C)

{*}
A

SIGUIENTE(A)

A
B
C
A
B

{ ), $}
{ +,), $ }
{ +,*,), $}
{ ), $ }
{ +,), $ }

CONSTRUCCION DE LA TABLA
Accion CONSTRUYE_TABLA()
Inicio
A
a PRIMERO()
Incluir A en T[A , a]
Si PRIMERO()
Incluir A en T[A , a]
b SIGUIENTE(A)
Fin si
Si PRIMERO() y $ SIGUIENTE(A)
Incluir A en T[A , $]
Fin si
Fin

Augusto Cortez Vsquez

Pag.10/20

Lenguajes y Traductores

FISI 2015-I

En el ejemplo anterior, aplicando el algoritmo, se obtiene la tabla del ejemplo 2


EJERCICIO 3
Amplie el ejemplo 2 incorporando las operaciones sustraccin y divisin
EJERCICIO 4
Analice la frase a/b +b*c
EJERCICIO 5
Provea una frase del lenguaje . Analice la frase. sdfaaf
GRAMATICA LL(1)
Una gramtica simple LL(1) es una gramtica libre del contexto que no posee reglas ,
y adems no debe ser recursiva por la izquierda
L: left to right : lee la entrada de izquierda a derecha
L: leftmost derivation : produce una derivacin por la izquierda
1 : significa que se lee por anticipado un smbolo en cualquier paso del proceso de
anlisis sintctico (es decir un smbolo de pre anlisis)
La actividad bsica del analizador sintctico LL es predecir cual de las distintas reglas
de produccin es la que debe usarse para procesar los smbolos de entrada restantes
TEOREMA

Una gramtica G es LL(1) si y solo si cumple R1 y R2


R1
A
1 / 2 /.../ n
PRIMERO( i ) PRIMERO( j ) = i
R2

PRIMERO(A ) PRIMERO(A )

= si A

El teorema nos dice que para cadena de entrada existe solo una produccin posible en
un cierto estado de la derivacin; es decir, ser obvia la alternativa de la produccin que
deber aplicarse.

Ejemplo 4
Sea la gramtica libre del contexto

G (VN, VT, S, P) donde VN = {P, Q, R} VT ={a, b, c}


P: {

P Q / R

Q aQ / b

R aR / c

aac L(G) ?

Augusto Cortez Vsquez

Pag.11/20

Lenguajes y Traductores

FISI 2015-I

si elegimos la primera regla


P Q aQ aaQ aab se obtiene una tira que comienza
con el smbolo a, por tanto a esta en PRIMERO(Q ), sin embargo, no se
puede derivar aac.
Si elegimos la segunda regla
P R aR aaR aac se obtiene la tira aac que
comienza con el smbolo a , por tanto a esta en PRIMERO(R )
El smbolo a esta en PRIMERO(Q ) y PRIMERO(R )
Por tanto no cumple R1 pues
PRIMERO(Q ) PRIMERO(R ) = {a}
Luego G no es LL(1), significa que no basta con elegir una produccin con el lado
derecho que comience con un smbolo a para garantizar una derivacin
EJERCICIO 6
De un ejemplo de una gramtica y su tabla de anlisis sintctico
.

ANLISIS SINTACTICO LL(k) BASADO EN AUTMATA DE PILA


TEOREMA
Si G es una gramtica libre de contexto entonces, existe un analizador sintctico LL basado
en Pila P, tal que L(G) = L(P ).

El autmata de pila para el analizador sintctico LL, se construye en base al teorema 5.2
Sea G = (VN, VT, S, P) Construimos P = ( E, , p, , 1, R, F)
Hacemos
1
= VT
2
p = VT U VN U {#}
3
E = {i, p, q, f }
4

i : estado inicial

# no esta en VT ni VN
f : estado final

Introducir las transiciones

(i, , ; p , #)
(p, , ; q , S)
(q, , N ; q , W)
(q, a, a ; q , )
(q, , # ; F , )

Augusto Cortez Vsquez

N
W ,
W (VN UVT)*
a VT

Pag.12/20

Lenguajes y Traductores

FISI 2015-I

W$

Si X = a = $ El AS se detiene y anuncia el xito del anlisis


Si X = a $
Si X VN

El AS saca X de la pila y avanza el cursor en la entrada


consulta T[X,a]
Si T[X,a] = X
A1A2...Ak
Desempilar X
Empilar(An),Empilar(An-1),..Empilar(A1)

Sea P pila
1
Si TOP = X VN
remplaza X por alguna regla de produccin
2
Si TOP = a VT
elimina a de la pila y lee de la entrada el mismo
terminal.
Si lo que esta en el TOP de la pila es diferente a a , se declara la cadena
ilegal
3
Si TOP = # marca el fondo de la pila, elimina # y declara la cadena
aceptable hasta el momento

Ejemplo 5
Sea G = (VN, VT, E, P) donde VN = {E, T, F} ,

L(G) = {anbn / n 0 }
P: {

1
2

Augusto Cortez Vsquez

S
S

G = (VN, VT, S, P) donde

VN = {S} , VT={a, b}

aSb,

, S ; aSb
, S ;

Pag.13/20

Lenguajes y Traductores

FISI 2015-I

, ; #

, ; S

,# ;

a, a ;
b, b ;
c, c ;

Estado = 0
Empilar (P,#)
Estado = p
Empilar (P,S)
Estado = q
Mientras TOP(P) #
En caso de TOP(P)
S:
desempilar(S),Empilar (P,aSb)
o Desempilar(S)
a:

desempilar(a), Leer(a)

b:
Fin caso
Fin mientras

desempilar(b), Leer(b)

El autmata es no determinista. Este problema se resuelve aplicando el principio de


preanalisis, que consiste en la tcnica de observar los smbolos siguientes sin leerlos
Estado = 0
Empilar (P,#)
Estado = p
Empilar (P,S)
Estado = q
Leer smbolo
Mientras TOP(P) #
En caso de TOP(P)
S:
Si smbolo a
Sino
a:
Si smbolo a
Sino
b:
Si smbolo b
Sino
Augusto Cortez Vsquez

desempilar(S)
Desempilar(S),Empilar (P,aSb)
llamar a rutina de error
Desempilar(a), Leer smbolo
llamar a rutina de error
Desempilar(b), Leer smbolo
Pag.14/20

Lenguajes y Traductores

FISI 2015-I

Fin caso
Fin mientras
Desempilar(P,#)
Si smbolo no es la marca de fin de cadena Llamar rutina de error
Estado = f
Gramtica LL(2)
Supongamos
La gramtica

1
2
3

S
S
T

pSq
prTrq

Si en la entrada tenemos la tira pW


Comienza con p y le sigue la tira W
No es suficiciente examinar el primer carcter p, para poder decidir que produccin elegir entre la 1 o la 2. Si
elegimos la primera podramos conducir a una situacin de error
Si en la entrada tenemos la tira prW
Comienza con pr y le sigue la tira W
Entonces descartamos la produccin 2 y elegimos la produccin 1.
En esta gramtica necesitamos dos smbolos de preanalisis para decidir que produccin elegir. En este caso
decimos que estamos ante una gramtica LL(2). En general podemos afirmar que si necesitamos k smbolos de
preanalisis estaramos ante una gramtica LL(K). Cuando construimos un analizador ara una gramtica LL(K)
decimos que el analizador es tambin LL(K)

Ejemplo 6
n

Consideremos nuevamente el lenguaje L = {a cb /n 0 }


Donde G

G = (VN, VT, S, P) donde


P: {

1
2

S
S

VN = {S} , VT={a, b,c}


aSb,
c

}
G es libre del contexto. Podemos construir el autmata de pila asociado a partir de la
gramtica aplicando el teorema 5.2
= {a, b, c}
p = {a, b, c, S}
# no esta en VT ni VN
E = {i, p, q, f } i : estado inicial
f : estado final
Introducir las transiciones

(i, , ; p , #)
(p, , ; q , S)
(q, , S ; q , aSb)
(q, , S ; q , c)
(q, a, a ; q , )
(q, b, b ; q , )
(q, c, c ; q , )
(q, , # ; F , )

Augusto Cortez Vsquez

Pag.15/20

Lenguajes y Traductores

FISI 2015-I

, S ; aSb
, S ; c

, ; #

, ; S

,# ;

a, a ;
b, b ;
c, c ;
Veamos el comportamiento del autmata para la secuencia acb
Orden
1
2
3
4
5
6
7
8
9

#
#S
#bSa
#bS
#bc
#b
#

Pila

entrada
acb
acb
acb
acb
cb
cb
b

transicin

(i ,
(p ,
(q ,
(q ,
(q ,
(q ,
(q ,
(q ,

, ; p , #)
, ; q , S)
, S ; q , aSb)
a , a ; q , )
, S ; q , c)
c , c ; q , )
b , b ; q , )
, # ; f , )

ANALISIS SINTACTICO ASCENDENTE


ANALISIS SINTACTICO LR(K) BASADO EN AUTMATA DE PILA

W$

Augusto Cortez Vsquez

Pag.16/20

Lenguajes y Traductores

FISI 2015-I

L: left to right : lee la entrada de izquierda a derecha


R: right derivation : produce una derivacin por la derecha
El analizador sintctico LR se clasifica como un analizador sintctico ascendente ya que su
actividad corresponde a la construccin de ocurrencias de no terminales a partir de sus
componentes hasta generar el smbolo inicial dela gramtica
ANALISIS LR(K)
El Analizador sintctico LR(K) se basa en un autmata de pila construido a partir de
una gramtica libre del contexto
TEOREMA
Si G es una gramtica libre de contexto entonces, existe analizador LR basado en Pila P, tal que L(G) = L(P ).

Sea G = (VN, VT, S, P)


Construimos P = ( E, , p, , 1, R, F)
Hacemos
1. = VT
2. p = VT U VN U {#}
1. # no esta en VT ni VN
3. E = {i, p, q, f }
i : estado inicial f : estado final
4. Introducir las transiciones

(operacin de reduccin)

(i, , ; p , #)
(p, , S ; q , )
(p, , W ; p , N)
N
W ,
(p, a, ; p , a) a VT
(q, , # ; F , )

(reduction)
W (VN UVT)*
(desplazamiento)

funcin:
1
Transfiere smbolos de su entrada a la pila hasta que los smbolos
superiores
2
Remplazar estos smbolos con el no terminal que se encuentra en el lado
izquierdo de la regla de antes de transferir otros smbolos de la entrada a
la pila.
La pila acumula cadenas de terminales y no terminales que son reemplazados por
los terminales mas altos

Ejemplo 7
Sea L = {ancbn / n 0 }
Donde G = (VN, VT, S, P) donde
Augusto Cortez Vsquez

VN = {S} , VT={a, b,c}


Pag.17/20

Lenguajes y Traductores

P: {

1
2

FISI 2015-I

S
S

aSb,
c

}
G es libre del contexto. Podemos construir el autmata de pila asociado a partir de la
gramtica aplicando el teorema anterior:

, aSb; S
, c; S

, ; #

, S;

,# ;

a, ;a
b, ;b
c, ; c
Veamos el comportamiento del autmata para la secuencia acb

Orden Pila
1
2
3
4
5
6
7
8
Problemas
9

entrada

#
#a
#ac
#aS
#aSb
#S
al#implantar

acb
acb
cb
b
b

LR(K)

transicin
(i , , ; p , #)
(p , a , ; p , a) desp
( p, c , ; p , c) desp
( p, , c ; p , S) reduc
( p, , b ; p , b) desp
( p, ,aSb ; p , S) reduc
(p , , S ; q , )
(q , , # ; f , )

Como saber si aplicar una operacin de desplazamiento o una operacin de


reduccin
2
Si reducimos, puede existir ms de una alternativa a elegir. Esto se resuelve
con el principio de pre anlisis
3
Como manejar la pila. Si se tiene el movimiento
(i , , aPa ; p , P) significa desempilar aPa y empilar P
pero como saber si se tiene la tira aPa en el extremo de la pila si solo conocemos la
cima. Una solucin es implementar una pila hbrida en la que se pueda acceder no
solo a la cima de la pila sino a todos sus elementos.
EJERCICIO 7

Augusto Cortez Vsquez

Pag.18/20

Lenguajes y Traductores

FISI 2015-I

Construya el analizador sintctico LL basado en pila para L. Realice el anlisis para la frase
aaaabbc
Construya el analizador sintctico LR basado en pila para L. Realice el anlisis para la frase
aaaabbc

Gramticas de clausulas definidas GCD


Las GCD (Define Clause Grammar) contienen todas las propiedades de las GLC,
pero proporcionan mejoras respecto a aquellas. Permiten expresar dependencias del
contexto.
Se define igual que las gramticas, excepto que
VT :
VN :
P :
S :

conjunto finito de smbolos terminales del lenguaje


conjunto finito de smbolos no terminales
conjunto finito de reglas de produccin
Smbolo distinguido o axioma inicial a partir del cual se reconocern las
secuencias de L aplicando sucesivamente las reglas de produccin.

P: donde pertenece a VT:U VN U { llamadas a procedimientos}


Las llamadas a procedimientos se expresan entre llaves

Ejemplo 8
Supongamos La gramtica
1
2
3
4
5
6

S
NP
VP
DET
DET
DET

NP VP
DET N
V NP
el
las
un

7
8
9
10
11

N
N
N
V
V

mecnico
automvil
rueda
arreglaba
inflaba

Identifique los smbolos terminales y los smbolos no terminales

La frase El mecnico arreglaba el automvil puede expresarse como


S(NP(DET(el) ,N(mecnico)), VP(V(arreglaba), NP(DET(el), N(automvil))))
Se pueden expresar ciertas restricciones utilizando llamadas a procedimientos
explcitos en la propia regla. As, por ejemplo, para determinar que el da de una
fecha debe ser mayor que 0 y menor que 32, se expresara de la siguiente manera:
Fecha(D,M)

Mes(M), [D], {entero(D), 0<D, D<32}

Los argumentos de los Vn tambin pueden usarse para incorporar cierta informacin
contextual; tal es el caso de la concordancia en gnero, numero o persona. Asi
concordancia en gnero y nmero entre el determinante y el nombre comn de un
sintagma nominal se podra expresar mediante la regla:

Augusto Cortez Vsquez

Pag.19/20

Lenguajes y Traductores

NP(Num,NP(D,N), Gen )

FISI 2015-I

DET(Num,D, GEN), N(Num, N, Gen)

EJERCICIO 8
Provea un ejemplo de gramtica LL(1)
EJERCICIO 9
Provea un ejemplo de gramtica LL(2)
EJERCICIO 10
Provea un ejemplo de gramtica LR(1)
EJERCICIO 11
Provea un ejemplo de gramtica LR(2)
REFERENCIAS BIBLIOGRAFICAS
[AHO 1990] Aho A.,Sethi,Ullman Compiladores, principios, tcnicas y herramientas; AddisonWesley1990, Wilmington-Delaware EUA.
[2]
[BROOKSHEAR 1993] BROOKSHEAR J. Glean
Teora de la computacin
Addisson Wesley iberoamericana
Wilmington Delaware 1993
[3] [CORTEZ, 2014]Augusto.Cortez Vsquez. Lenguajes y Traductores Edit UCSS 2014 Lima Per
[4] [CORTEZ, 2014]Augusto.Cortez Vsquez, Procesamiento del lenguaje natural. Revista RISI Vol 6 N
2 2009 , Pg 45-54 ISSN 1815-0268 Lima Per www.opejournal.unmsm.edu.pe
[5] [CORTEZ, 2014]Augusto.Cortez Vsquez. Gramticas probabilistas, Revista Algorithmic Vol 4 N 1
2013 , Pg 9-16 ISSN 2220-3982 Lima Per www.opejournal.unmsm.edu.pe
[6]
[DEITEL 1987] Deitel Harvey M.. Introduccin a los sistemas operativos; Addison-Wesley,
Iberoamenricana 1987 Wilmigton Deleware E.U.A:
[7]
[HOPCROFT 1993] Hopcroft Jhon, Ullman Jeffrey
[1]

Introduccin a la teora de autmatas


[8]

Edit. CECSA 1993

[PAJARES 2006] Gonzalo Pajares Inteligencia Artificial

[9] [RUSSELL 2008] Stuart Russell Inteligencia Artificial

Augusto Cortez Vsquez

Edit. AlfaOmega Rama2006

Edit. Prentice Hall Mexico 2008

Pag.20/20

Vous aimerez peut-être aussi