Professional Documents
Culture Documents
Gramticas
LENGUAJE
Lenguaje (Grassmann)
Consiste en un conjunto de frases finito o infinito.
Los
lenguajes
pueden
ser
especificados
enumerando de manera exhaustiva todas sus
frases. Sin embargo, para lenguajes infinitos dicha
enumeracin no es posible. Cualquier instrumento
que especifique un lenguaje debe ser finita.
Lenguaje (Chombsky)
Conjunto finito o infinito de oraciones(frases), cada
una de ellas de longitud finita y construidas por la
concatenacin
de
un
conjunto finito
de
elementos(vocabulario)
LENGUAJE
Lenguaje de programacin (Aho, Lam, Sethi y
Ullman)
Los lenguajes de programacin son
notaciones que describen los clculos a las
personas y las maquinas
Otras definiciones
Un lenguaje de programacin es una serie de
comandos
que
nos
permiten
codificar
instrucciones de manera que sean entendidas y
ejecutadas por una computadora.
Conjunto de smbolos y reglas que permiten la
comunicacin con un computador.
ESPECIFICACIN DE
LENGUAJE
La especificacin de un lenguaje de programacin
implica la definicin de los siguientes elementos:
LENGUAJE
Smbolo
Es una entidad abstracta :
Ejemplo: A, 7, $, (, etc
Alfabeto ( )
Cualquier conjunto finito y no
vacio
de
elementos
que
denominaremos smbolos
Ejemplo:
b ={ 0, 1}
v ={ a, e , i , o , u }
LENGUAJE
Cadena
Secuencia finita de smbolos del
alfabeto
- Ejemplo:
0, 1, 101, 1100 pertenecen a b
LENGUAJE
Potencia de una cadena
Una cadena de i smbolos
a se denota por ai
Ejemplo:
a0 =
a1 = a
a2 = aa
LENGUAJE
Lenguaje (* )
Es el conjunto de todas las palabras
sobre un alfabeto.
Ejemplo:
* b ={ , 0, 1, 101, 10,..}
El conjunto vaci , y el conjunto
formado por la cadena vaca {} son
lenguajes.
DEFINICION DE
GRAMATICA
DEFINICION DE
GRAMATICA
Una
gramtica
es
una
maquinita que recibe como
entrada letras y genera
cadenas con estas letras
siguiendo algn tipo de regla
DEFINICION DE GRAMATICA
Una gramtica G es una cudrupla
G = ( Vn , Vt , P, S )
DEFINICION DE GRAMATICA
G = ( Vn , Vt , P, S )
REPRESENTACION DE
GRAMATICAS
Para la representacin de una
gramtica utilizaremos la BNF. La
BNF (Backus NormalForm, BackusNaur Form, en homenaje a Backus,
su
creador
y
a
Naur,
su
continuador), es un metalenguaje
muy utilizado para definir la
estructura sintctica de lenguajes
deprogramacin
(lenguajes
formales).
La forma de Backus-Naur fue
creada para definir la escritura
sintctica
del
lenguaje
de
programacin ALGOL60.
Las notaciones BNF, reducen el
nmero de reglas necesarias.Para
ello,
utilizan
lossiguientes
NOTACION BNF
SIMBO
LO
SIGNIFICADO
{}
[]
()
GRAMATICA EJEMPLO
Anlisis para w = a*( a + a )
G= ( Vn, Vt, E, P)
Vn={ E }
Vt={ +, *, ( , ) , a }
P{E
E
E
E
}
E+E
E*E
(E)
a
E
____ | ___
E
*
E
|
|
a
(E)
____ | ____
E
+
|
a
E
|
a
G= ( Vn, Vt, A, P)
Vn={ A, L, D }
Vt={ A,B,..Z, a, b, .z, 0, 1, ,9 }
G= ( Vn, Vt, A, P)
Vn={ A, L, D, M }
Vt={ A,B,..Z, a, b, .z , 0, 1, ,9
}
P={
A L (L / D)*
L A/B/./Z/a/b//z
D0/1/./9
}
P={
AL M
ML M / DM /
L A/B/./Z/a/b//z
D0/1/./9
}
G= ( Vn, Vt, A, P)
Vn={ A, L, D, B }
Vt={ A,B,..Z, a, b, .z , 0, 1,
,9 }
P={
AL M
ML M /
L A/B/./Z/a/b//z
D0/1/./9
}
<Id><Letra> <MasSimb>
<MasSimb> <Letra> <MasSimb> /
<MasSimb> <Digito> <MasSimb> /
<Letra> A/B/./Z/a/b//z
<Digito>0/1/./9
}
int
dato, a , cantidad
G= ( Vn, Vt, S, P)
,}
P={
<S> int <Id> <Mas>
<Mas> , <Id> <Mas> /
<Id><Letra> <MasLD>
<MasLD> <Letra> <MasLD> /
<MasLD> <Digito> <MasLD> /
<Letra> A/B/./Z/a/b//z
<Digito>0/1/./9
}
,}
P={
<S> int <Id> <Mas>
<Mas> , <Id> <Mas> /
<Id><Letra> <MasLD>
<MasLD> <Letra> <MasLD> /
<MasLD> <Digito> <MasLD> /
<Letra> A/B/./Z/a/b//z
<Digito>0/1/./9
}
Se describen los
lexemas hasta el
detalle,..en
este
caso
G describe
como se forman los
identificadores
GRAMATICA
SINTACTICO
HASTA
UN
NIVEL
Se describen los
lexemas hasta el
detalle,..en
este
caso
G describe
como se forman los
identificadores
JERARQUIA DE CHOMSKY
En los 50s, Chomsky dio a conocer dos
trabajos sobre los Lenguajes Naturales que,
orientados al rea de los lenguajes formales,
resultaron en lo que se denomina como
"Jerarqua de Chomsky".
Esta Jerarqua de Chomsky define una
clasificacin de cuatro tipos de gramtica
formales que, a su vez, generan cuatro tipos
diferentes de lenguajes formales.
TIPOS DE GRAMATICA
TIPO 3:
TIPOS DE GRAMATICA
TIPO 3:
TIPOS DE GRAMATICA
TIPO 2:
TIPOS DE GRAMATICA
TIPO 1:
Gramtica Sensible al Contexto / Contextuales
aAb aBb
donde
A,B Vn
a, b (Vn Vt)*
Definicion alternativa
con | | | |
, ( Vn Vt ) +
Este
tipo
de
producciones,
implica
que las sustituciones
slo pueden efectuarse
en cierto contexto (el
smbolo 'A' se podr
sustituir por '
' B ' si y slo si, est
precedido pora', y le
sigue b'), esto es, son
gramticas
dependientes
(sensibles) al contexto
TIPOS DE GRAMATICA
TIPO 0:
LENGUAJE GENERADO
UNA GRAMATICA
El lenguaje formado por todas las
cadenas de longitud par sobre el
alfabeto ={a} se puede formar con las
gramticas G :
G1
S aSa | que es de tipo 2 y tambin por
G2
S aA |
A aS
que es de tipo 3
POR
G.L.C
r : Vn ( Vn Vt
G.L.C
Dada G=( Vn, Vt, P, E)
Vn={ E }
Vt = { +, *, a, ( , ) }
P={ E E+E
E E*E
E (E)
Ea
La secuencia:
FORMA SENTENCIAL
G.L.C
Arbol de derivacin
E
E * E
E + E
G.L.C. AMBIGUA
Una
gramtica
G
es
ambigua si hay al menos
una cadena en L(G) que
tenga dos o mas rboles de
derivacin distintos.
G.L.C. AMBIGUA
Observemos que la cadena
a*a+a puede ser generada por
dos rboles de derivacin
E* E
E + E
E +E
E*E
a a
G.L.C. AMBIGUA
Recomendacin
Para algunos
tipos de
analizadores
sintcticos
es
preferible que la gramtica no
sea ambigua pues si lo fuera, no
se podra determinar de manera
exclusiva que rbol de anlisis
sintctico seleccionar para una
frase
G.L.C. AMBIGUA
Eliminar la
ambiguedad
Se elimina la ambigedad
atendiendo a la precedencia
deseada
para
los
operadores. Una gramtica
equivalente a la gramtica
anterior que no es ambigua
es:
G=(Vn, Vt, P, E)
Vn= { E, T, F }
Vt = { + , * , a, ( ,) }
P={
EE+T|T
TT*F|F
F a|(E)
}
OTRA FORMA DE
AMBIGUEDAD
Si tenemos producciones de esta
forma:
A b /b
b Vn o Vt,
A aB
B /
, (Vn Vt)*
G.L.C. RECURSIVA
Una gramtica es recursiva por la izquierda
si tiene un no terminal A tal que existe una
derivacin para alguna cadena de la
forma:
+
A A , ( Vn Vt ) *
La recursin izquierda es un problema que
debe ser resuelto antes que se quiera
trabajar con una gramtica para construir
un analizador descendente, ya que ste
no funcionar si la gramtica la posee.
, A Vn
ELIMINAR RECURSIVAD
Se sustituye AA| por las producciones
no recursivas por la izquierda
A A
A A |
A , A Vn
a , ( Vn Vt ) *
EJEMPLO
B1
B2
YAB|XZ
XYZ
REEMPLAZAMOS
Reemplazando B1 en B2:
B1
B2
YAB|XZ
XYZ
Tenemos
X A B Z |X Z Z
Hay
recursivida
d
GRAMATICA
SIN RECURSION
Despus de eliminar la
recursividad:
X ABZX'
X Z Z X ' |
EJERCICIOS
Genere una gramtica para los siguientes casos:
1. L= { aN c bMb / N, M 0} genere una G lineal por la derecha
2. L= { aaN cM bd / N, M 0} genere una G lineal por la izquierda
3. L = { aN c bN / N 0}
4. L= { aN bN / N >0}
5. L= { aN bN cN / N >0}
6. L= { aN bM cN+M / N,M >0}
EJERCICIOS
7. L= { aN bN cN / N >0}
8. Escriba una G para reconocer una zona de declaracion de
variables. Por ejemplo
dato, a, b: integer;
cant, x: real;
Total: real;
EJERCICIOS
10. Para G=(Vn, Vt, P, S) Vn={S, A, B} Vt={a,b,c}
Indique los lenguajes que generan cada P
a)
S abB
B cb
b)
SAb
ABc
B
c)
S aB
Bb BaB
B
d)
S aBbB
BcBA
BAaab
A a
e)
SA
AB
Bab
f)
S aB
B bA
A
g)
SSa
SbS
S
h)
SBbA
BbabA
AabBA
i)
SaBb
B
BbB
SOLUCION
L= { aN bN cN / N >0}
Vn={ S, R, Q}
Vt={ a, b, c }
P={ SaSRQ / aRQ
QR RQ
aRab
bR bb
bQbc
cQcc }
aRQ
abQ
abc
aSRQ
aaRQRQ
aabQRQ
aabRQQ
aabbQQ
aabbcQ
aabbcc
LABORATORIO
Defina la gramtica de su
lenguaje
La gramtica no debe incluir
instrucciones recursivas, ni
ambiguedad.
Incluya tambin en su trabajo
el lenguaje definido en la
anterior clase para poder
comparar.
Enviar la gramtica a: