7. Gramáticas

Anuncio
Gramáticas
Introducción
Las gramáticas definen las reglas que definen a los
lenguajes
Las reglas pueden tener una diversa variedad de
esquemas
En algunos lenguajes, una sucesión de símbolos depende del
anterior
En algunos lenguajes, es posible separar una palabra en partes
más pequeñas, que no dependan unas de otras
En un lenguaje, pueden existir elementos que cambien su
significado dependiendo de su contexto
Algunos lenguajes tienen una estructura general, que no se
ajusta a lo ya comentado
Análisis
Considere el caso del lenguaje asociado a las expresiones
matemáticas
9-8+1
9-(8+1)
Para estudiar las estructuras que pueden presentarse en
los diferentes tipos de lenguaje, se ha diseñado teoría
como la Jerarquía de Chomsky
Notación
Una regla de producción se representa como
<término que se define> ::= <definición>
Ejemplo
<instruccion> ::= <asignacion>
<asigancion> ::= <identificador> = <expresion>
<expresion> ::= <sumando>
<expresion> ::= <sumando> + <expresion>
<sumando> ::= <factor>
<sumando> ::= <factor> * <sumando>
<factor> ::= <identificador>
<factor> ::= <numero>
<identificador> ::= x
<identificador> ::= y
<identificador> ::= z
Notación
Sea Σ un alfabeto y P un conjunto de reglas de
producción. Sean u y v dos palabras del mismo alfabeto.
Se dice que v deriva directamente de u mediante P, si es
posible descomponer u y v de la siguiente manera:
Por otro lado, se dice que v deriva de u si existen una
secuencia finita tales que:
u = xyz, v = xwz
P contiene la regla y ::= w
La derivación directa se representa por: u v
u = u0 u1 … un = v
La derivación se denota como: u + v
Existe una relación Thue entre u y v si: u = v ó u * v
Gramática
Una gramática se define como la cuádrupla G = (ΣT, ΣN, S, P),
donde:
ΣT: símbolos terminales
ΣN: símbolos no terminales
S∈ΣN: axioma o símbolo inicial
P: conjunto finito de reglas de producción
Tanto ΣT y ΣN deben de ser conjuntos disjuntos
Ejemplo: considere la gramática G = ({0, 1, …, 9}, {N,C}, N, P),
donde P es el conjunto:
N ::= NC
N ::= C
C ::= 0
C ::= 1
…
C ::= 9
Verificar si es posible generar la palabra 1230 a partir de esta gramática
Notación Backus
Si el conjunto de reglas de producción contiene dos reglas
de la forma:
Se puede representar de forma abreviada la notación de la
forma:
u ::= v
u ::= w
u ::= v | w
Por ejemplo, las reglas de producción del ejemplo anterior
se expresan como:
N ::= NC | C
C ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Lenguaje asociado a una gramática
Sea la gramática G = (ΣT, ΣN, S, P), se llama el lenguaje
asociado a G al conjunto L(G) = {x | S * x, x ∈ Σ*T}
Se dice que dos gramáticas G1 y G2 son equivalentes cuando
describen el mismo lenguaje, es decir, L(G1) = L(G2)
Se una gramática G = (ΣT, ΣN, S, P) y v = x u y tal que S
* x u y. Se dice que u es una frase de la forma sentencial
v respecto del símbolo no terminal U si se verifica que
S * xUy
U + u
Recursividad
Una regla de producción es recursiva si tiene la forma
Sea G = (ΣT, ΣN, S, P), se dice que:
U ::= x U y
Si x = λ, se dice que la regla es recursiva a la izquierda
Si y = λ, se dice que la regla es recursiva a la derecha
G es recursiva en el símbolo no terminal U ∈ ΣN si U + xUy
Si un lenguaje es infinito, la gramática que lo representa
tiene que ser recursiva
Clasificación de gramáticas
Chomsky clasificó a las gramáticas en 4 grandes grupos
Gramáticas de tipo 0
Gramáticas de tipo 1
Gramáticas de tipo 2
Gramáticas de tipo 3
Gramáticas Tipo 3 o Regulares
Las gramáticas del tipo 3 se clasifican en dos grupos:
Gramáticas lineales por la izquierda: sea G = (ΣT, ΣN, S, P), las reglas de
producción de P serán de la forma:
Gramáticas lineales por la derecha: sea G = (ΣT, ΣN, S, P), las reglas de
producción de P serán de la forma:
A ::= a
A ::= Va
S ::= λ
Donde a ∈ ΣT, A,V,S ∈ ΣN, S es el axioma de la gramática
A ::= a
A ::= aV
S ::= λ
Donde a ∈ ΣT, A,V,S ∈ ΣN, S es el axioma de la gramática
En ambos casos, la última regla puede aparecer únicamente si la
gramática no es recursiva en S. Si se desea considerar en el lenguaje
representado por la gramática a la palabra vacía, se genera una nueva
transición
Gramáticas Tipo 3 o Regulares
Ejemplo:
G1 = ({0,1}, {A, B}, A, {A ::= B1 | 1, B ::= A0})
G2 = ({0,1}, {A, B}, A, {A ::= 1B | 1, B ::= 0A})
G3 = ({a,b}, {S, A}, S, {S ::= bA, A ::= aS | a})
¿Estas gramáticas son del tipo G3?
Describe cada lenguaje asociado a las gramáticas descritas
Soluciones
G1 = ({0,1}, {A, B}, A, {A ::= B1 | 1, B ::= A0})
G2 = ({0,1}, {A, B}, A, {A ::= 1B | 1, B ::= 0A})
L(G1) = {1(01)n: n >=0}
L(G2) = {1(01)n: n >= 0}
G3 = ({a,b}, {S, A}, S, {S ::= bA, A ::= aS | a})
L(G3) = {(ba)n: n >= 1}
Gramáticas libres de contexto o Tipo 2
Sea G = (ΣT, ΣN, S, P) una gramática, G es gramática tipo
2 o libre de contexto, si las reglas de producción tienen la
forma:
A ::= v
v ∈ (ΣT ∪ ΣN)*
A ∈ ΣN
Un lenguaje libre de contexto es un lenguaje generado por
una gramática libre de contexto
Gramáticas libres de contexto o Tipo 2
Ejemplo
Considere la gramática G = (ΣT, ΣN, S, P), donde
ΣT = {Num, +, -, (, )}
ΣN = {Q0, Q1, Op}
S = Q1
P esta formado por
Q0 ::= Q1 Op | Q1
Op ::= +Q1 | -Q1
Q1 ::= Num | (Q0)
Nota: considere que Num es un número.
Gramáticas tipo 1 o sensibles al contexto
Sea G = (ΣT, ΣN, S, P) una gramática, G es gramática tipo
1 si todas sus producciones P son del tipo:
xAy ::= xvy
A ∈ ΣN
x,y ∈ (ΣT ∪ ΣN)*
v ∈ (ΣT ∪ ΣN)+
Esto dice que un símbolo no terminal A se transforma en
la cadena v si está flanqueado a la izquierda por la cadena
x y a la derecha por la cadena y (contexto).
Además, v no puede ser la cadena vacía
Gramáticas de tipo 0
Sea G = (ΣT, ΣN, S, P) una gramática, G es gramática tipo
0 si todas sus producciones P son del tipo:
u ::= v
u, v ∈ (ΣT ∪ ΣN)*
Hay que notar que un lenguaje regular siempre es un
lenguaje libre de contexto
Ejemplo
Considere la gramática G = ({a,b}, {A, B, C}, A, P),
donde:
A ::= aABC | abC
CB ::= BC
bB ::= bb
bC ::= b
Descargar