Autómatas y Lenguajes Formales 2016-1
Maestría en Ciencia e Ingeniería de la Computación UNAM Tema 8: Gramáticas, jerarquía de Chomsky, ambigüedad
Dr. Favio Ezequiel Miranda Perea
Facultad de Ciencias UNAM
Gramáticas
IntroducciónUn mecanismo relevante para generar un lenguaje es mediante el concepto de gramática formal.
Las gramáticas formales fueron introducidas por Noam Chomsky en 1956.
La intención era tener un modelo para la descripción de lenguajes naturales.
Gramáticas
IntroducciónUn mecanismo relevante para generar un lenguaje es mediante el concepto de gramática formal.
Las gramáticas formales fueron introducidas por Noam Chomsky en 1956.
La intención era tener un modelo para la descripción de lenguajes naturales.
Gramáticas
IntroducciónUn mecanismo relevante para generar un lenguaje es mediante el concepto de gramática formal.
Las gramáticas formales fueron introducidas por Noam Chomsky en 1956.
La intención era tener un modelo para la descripción de lenguajes naturales.
Gramáticas
IntroducciónUn mecanismo relevante para generar un lenguaje es mediante el concepto de gramática formal.
Las gramáticas formales fueron introducidas por Noam Chomsky en 1956.
La intención era tener un modelo para la descripción de lenguajes naturales.
Gramáticas
DefiniciónUna gramática es una cuaternaG=hV,T,S,Pital que:
V es un alfabeto devariablesosímbolos no-terminales, los
cuales se denotan con mayúsculasA,B,C, . . .
T es un alfabeto desímbolos terminales, los cuales se denotan
con minúsculasa,b,c, . . .. Además se requiereT ∩V =∅.
S∈V es una variable distinguida llamada elsímbolo inicial.
P es un conjunto finito de reglas de reescritura, llamadasreglas
Gramáticas
DefiniciónUna gramática es una cuaternaG=hV,T,S,Pital que:
V es un alfabeto devariablesosímbolos no-terminales, los
cuales se denotan con mayúsculasA,B,C, . . .
T es un alfabeto desímbolos terminales, los cuales se denotan
con minúsculasa,b,c, . . .. Además se requiereT ∩V =∅.
S∈V es una variable distinguida llamada elsímbolo inicial.
P es un conjunto finito de reglas de reescritura, llamadasreglas
Gramáticas
DefiniciónUna gramática es una cuaternaG=hV,T,S,Pital que:
V es un alfabeto devariablesosímbolos no-terminales, los
cuales se denotan con mayúsculasA,B,C, . . .
T es un alfabeto desímbolos terminales, los cuales se denotan
con minúsculasa,b,c, . . .. Además se requiereT ∩V =∅.
S∈V es una variable distinguida llamada elsímbolo inicial.
P es un conjunto finito de reglas de reescritura, llamadasreglas
Gramáticas
DefiniciónUna gramática es una cuaternaG=hV,T,S,Pital que:
V es un alfabeto devariablesosímbolos no-terminales, los
cuales se denotan con mayúsculasA,B,C, . . .
T es un alfabeto desímbolos terminales, los cuales se denotan
con minúsculasa,b,c, . . .. Además se requiereT ∩V =∅.
S∈V es una variable distinguida llamada elsímbolo inicial.
P es un conjunto finito de reglas de reescritura, llamadasreglas
Gramáticas
DefiniciónUna gramática es una cuaternaG=hV,T,S,Pital que:
V es un alfabeto devariablesosímbolos no-terminales, los
cuales se denotan con mayúsculasA,B,C, . . .
T es un alfabeto desímbolos terminales, los cuales se denotan
con minúsculasa,b,c, . . .. Además se requiereT ∩V =∅.
S∈V es una variable distinguida llamada elsímbolo inicial.
P es un conjunto finito de reglas de reescritura, llamadasreglas
Reglas de Producción
GramáticasEl conjunto de reglas de producciónP es un conjunto finito de pares
hα, βitales que
α∈(V ∪T)?−T?. Es decir,αes una cadena de símbolos
terminales ó no terminales, con al menos un símbolo no-terminal.
β ∈(V∪T)?. Es decir,β es una cadena de símbolos deV ∪T ,
los cuales podrían ser todos terminales.
Usualmente en vez de escribirhα, βi ∈P escribimos
α→β
Reglas de Producción
GramáticasEl conjunto de reglas de producciónP es un conjunto finito de pares
hα, βitales que
α∈(V ∪T)?−T?. Es decir,αes una cadena de símbolos
terminales ó no terminales, con al menos un símbolo no-terminal.
β ∈(V∪T)?. Es decir,β es una cadena de símbolos deV ∪T ,
los cuales podrían ser todos terminales.
Usualmente en vez de escribirhα, βi ∈P escribimos
α →β
Reglas de Producción
GramáticasEl conjunto de reglas de producciónP es un conjunto finito de pares
hα, βitales que
α∈(V ∪T)?−T?. Es decir,αes una cadena de símbolos
terminales ó no terminales, con al menos un símbolo no-terminal.
β ∈(V∪T)?. Es decir,β es una cadena de símbolos deV ∪T ,
los cuales podrían ser todos terminales.
Usualmente en vez de escribirhα, βi ∈P escribimos
α →β
Reglas de Producción
GramáticasEl conjunto de reglas de producciónP es un conjunto finito de pares
hα, βitales que
α∈(V ∪T)?−T?. Es decir,αes una cadena de símbolos
terminales ó no terminales, con al menos un símbolo no-terminal.
β ∈(V∪T)?. Es decir,β es una cadena de símbolos deV ∪T ,
los cuales podrían ser todos terminales.
Usualmente en vez de escribirhα, βi ∈P escribimos
α →β
Reglas de Producción
GramáticasEl conjunto de reglas de producciónP es un conjunto finito de pares
hα, βitales que
α∈(V ∪T)?−T?. Es decir,αes una cadena de símbolos
terminales ó no terminales, con al menos un símbolo no-terminal.
β ∈(V∪T)?. Es decir,β es una cadena de símbolos deV ∪T ,
los cuales podrían ser todos terminales.
Usualmente en vez de escribirhα, βi ∈P escribimos
Derivaciones
Generación de cadenasLas reglas de producción sirven para generar cadenas, proceso que se formaliza mediante las derivaciones formales:
Dadas dos palabrasw,v ∈(V ∪T)? decimos quev esderivablea
partir dew en un paso (w →v) si y sólo si:
Existe una reglaα→β enP y cadenasγ1, γ2∈(V∪T)? tales
que:
w =γ1αγ2 y v =γ1βγ2
Algunos autores utilizan⇒en vez de→para denotar la relación
Derivaciones
Generación de cadenasLas reglas de producción sirven para generar cadenas, proceso que se formaliza mediante las derivaciones formales:
Dadas dos palabrasw,v ∈(V ∪T)? decimos quev esderivablea
partir dew en un paso (w→v) si y sólo si:
Existe una reglaα→β enP y cadenasγ1, γ2∈(V∪T)? tales
que:
w =γ1αγ2 y v =γ1βγ2
Algunos autores utilizan⇒en vez de→para denotar la relación
Derivaciones
Generación de cadenasLas reglas de producción sirven para generar cadenas, proceso que se formaliza mediante las derivaciones formales:
Dadas dos palabrasw,v ∈(V ∪T)? decimos quev esderivablea
partir dew en un paso (w→v) si y sólo si:
Existe una reglaα→β enP y cadenasγ1, γ2∈(V ∪T)? tales
que:
w =γ1αγ2 y v =γ1βγ2
Algunos autores utilizan⇒en vez de→para denotar la relación
Derivaciones
Generación de cadenasLas reglas de producción sirven para generar cadenas, proceso que se formaliza mediante las derivaciones formales:
Dadas dos palabrasw,v ∈(V ∪T)? decimos quev esderivablea
partir dew en un paso (w→v) si y sólo si:
Existe una reglaα→β enP y cadenasγ1, γ2∈(V ∪T)? tales
que:
w =γ1αγ2 y v =γ1βγ2
Algunos autores utilizan⇒en vez de→para denotar la relación
Derivaciones formales
→?Decimos que una cadenav esderivablea partir dew si existen
palabrasγ2, . . . , γntales que
w =γ1→γ2. . . γn+1→γn=v
Derivaciones formales
→?Decimos que una cadenav esderivablea partir dew si existen
palabrasγ2, . . . , γntales que
w =γ1→γ2. . . γn+1→γn=v
Lenguaje generado por una gramática
L(G)
Dada una gramáticaG=hV,T,S,Pidefinimos al lenguaje generado
porG, denotadoL(G), como el conjunto de palabras de símbolos
terminalesderivables a partir del símbolo inicialS. Es decir,
Lenguaje generado por una gramática
L(G)
Dada una gramáticaG=hV,T,S,Pidefinimos al lenguaje generado
porG, denotadoL(G), como el conjunto de palabras de símbolos
terminalesderivables a partir del símbolo inicialS. Es decir,
L
= (
a
+
b
)
?Ejemplos
Cualquier cadena de aes y bes debe generarse.
La cadena vacía debe generarse:
S→ε
Siw ∈Lentonceswa∈L
S→Sa
Siw ∈Lentonceswb∈L
S→Sb
Ejemplo de derivación:w =ababb
L
= (
a
+
b
)
?Ejemplos
Cualquier cadena de aes y bes debe generarse. La cadena vacía debe generarse:
S→ε
Siw ∈Lentonceswa∈L
S→Sa
Siw ∈Lentonceswb∈L
S→Sb
Ejemplo de derivación:w =ababb
L
= (
a
+
b
)
?Ejemplos
Cualquier cadena de aes y bes debe generarse. La cadena vacía debe generarse:
S→ε
Siw ∈Lentonceswa∈L
S→Sa
Siw ∈Lentonceswb∈L
S→Sb
Ejemplo de derivación:w =ababb
L
= (
a
+
b
)
?Ejemplos
Cualquier cadena de aes y bes debe generarse. La cadena vacía debe generarse:
S→ε
Siw ∈Lentonceswa∈L
S→Sa
Siw ∈Lentonceswb∈L
S→Sb
Ejemplo de derivación:w =ababb
L
= (
a
+
b
)
?Ejemplos
Cualquier cadena de aes y bes debe generarse. La cadena vacía debe generarse:
S→ε
Siw ∈Lentonceswa∈L
S→Sa
Siw ∈Lentonceswb∈L
S→Sb
Ejemplo de derivación:w =ababb
L
=
{
a
ib
j|
i
,
j
∈
N
,
i
≤
j
}
EjemplosLa cadena vacía debe generarse (i=j=0):
S→ε
Debe haber al menos tantas bes como aes, primero aes y luego bes:
S→aSb
Puede haber más bes al final:
S→Sb
Ejemplo de derivación:w =aabbb
L
=
{
a
ib
j|
i
,
j
∈
N
,
i
≤
j
}
EjemplosLa cadena vacía debe generarse (i=j=0):
S→ε
Debe haber al menos tantas bes como aes, primero aes y luego bes:
S→aSb
Puede haber más bes al final:
S→Sb
Ejemplo de derivación:w =aabbb
L
=
{
a
ib
j|
i
,
j
∈
N
,
i
≤
j
}
EjemplosLa cadena vacía debe generarse (i=j=0):
S→ε
Debe haber al menos tantas bes como aes, primero aes y luego bes:
S→aSb
Puede haber más bes al final:
S→Sb
Ejemplo de derivación:w =aabbb
L
=
{
a
ib
j|
i
,
j
∈
N
,
i
≤
j
}
EjemplosLa cadena vacía debe generarse (i=j=0):
S→ε
Debe haber al menos tantas bes como aes, primero aes y luego bes:
S→aSb
Puede haber más bes al final:
S→Sb
Ejemplo de derivación:w =aabbb
L
=
{
a
ib
ja
jb
i|
i
,
j
∈
N
}
EjemplosPrimero generamos el centro de la palabra,bjaj:
S→B B →bBa B→ε
Después los extremosai, bi:
S→aSb
Ejemplo de derivación:w =aababb
L
=
{
a
ib
ja
jb
i|
i
,
j
∈
N
}
EjemplosPrimero generamos el centro de la palabra,bjaj:
S→B B →bBa B→ε
Después los extremosai, bi:
S→aSb
Ejemplo de derivación:w =aababb
L
=
{
a
ib
ja
jb
i|
i
,
j
∈
N
}
EjemplosPrimero generamos el centro de la palabra,bjaj:
S→B B →bBa B→ε
Después los extremosai, bi:
S→aSb
Ejemplo de derivación:w =aababb
L
=
{
a
ib
ia
jb
j|
i
,
j
∈
N
}
EjemplosEl lenguaje{aibi |i ∈N}se genera mediante:
P →ε P→aPb
Para generar aLsimplemente agregamos:
S →PP
Ejemplo de derivación:w =aabbab
L
=
{
a
ib
ia
jb
j|
i
,
j
∈
N
}
EjemplosEl lenguaje{aibi |i ∈N}se genera mediante:
P →ε P→aPb
Para generar aLsimplemente agregamos:
S →PP
Ejemplo de derivación:w =aabbab
L
=
{
a
ib
ia
jb
j|
i
,
j
∈
N
}
EjemplosEl lenguaje{aibi |i ∈N}se genera mediante:
P →ε P→aPb
Para generar aLsimplemente agregamos:
S →PP
Ejemplo de derivación:w =aabbab
L
=
{
a
ib
i|
i
∈
N
} ∪ {
b
ia
i|
i
∈
N
}
EjemplosEl lenguaje{aibi |i ∈N}se genera mediante:
P →ε P→aPb
El lenguaje{biai |i ∈
N}se genera mediante:
Q→ε Q→bQa
Para generar aLsimplemente agregamos:
S→P S→Q
Ejemplo de derivación:w =bbbaaa
L
=
{
a
ib
i|
i
∈
N
} ∪ {
b
ia
i|
i
∈
N
}
EjemplosEl lenguaje{aibi |i ∈N}se genera mediante:
P →ε P→aPb
El lenguaje{biai |i ∈N}se genera mediante:
Q→ε Q→bQa
Para generar aLsimplemente agregamos:
S→P S→Q
Ejemplo de derivación:w =bbbaaa
L
=
{
a
ib
i|
i
∈
N
} ∪ {
b
ia
i|
i
∈
N
}
EjemplosEl lenguaje{aibi |i ∈N}se genera mediante:
P →ε P→aPb
El lenguaje{biai |i ∈N}se genera mediante:
Q→ε Q→bQa
Para generar aLsimplemente agregamos:
S→P S→Q
Ejemplo de derivación:w =bbbaaa
L
=
{
a
ib
i|
i
∈
N
} ∪ {
b
ia
i|
i
∈
N
}
EjemplosEl lenguaje{aibi |i ∈N}se genera mediante:
P →ε P→aPb
El lenguaje{biai |i ∈N}se genera mediante:
Q→ε Q→bQa
Para generar aLsimplemente agregamos:
S→P S→Q
Ejemplo de derivación:w =bbbaaa
Correctud y completud
Diseño de gramáticasSi bien muchas veces el diseño de una gramáticaGpara un
lenguaje dadoLes intuitivamente claro y correcto, esto debe
mostrarse formalmente, mostrando queL=L(G). Esto se hace,
por supuesto, mostrando lo siguiente:
Correctud: la gramáticaGgenera únicamente cadenas deL, es
decir,L(G)⊆L.
Completud: toda cadena deLes generada porG, es decir,
Correctud y completud
Diseño de gramáticasSi bien muchas veces el diseño de una gramáticaGpara un
lenguaje dadoLes intuitivamente claro y correcto, esto debe
mostrarse formalmente, mostrando queL=L(G). Esto se hace,
por supuesto, mostrando lo siguiente:
Correctud: la gramáticaGgenera únicamente cadenas deL, es
decir,L(G)⊆L.
Completud: toda cadena deLes generada porG, es decir,
Correctud y completud
Diseño de gramáticasSi bien muchas veces el diseño de una gramáticaGpara un
lenguaje dadoLes intuitivamente claro y correcto, esto debe
mostrarse formalmente, mostrando queL=L(G). Esto se hace,
por supuesto, mostrando lo siguiente:
Correctud: la gramáticaGgenera únicamente cadenas deL, es
decir,L(G)⊆L.
Completud: toda cadena deLes generada porG, es decir,
Lenguajes recursivamente enumerables o tipo 0
Jerarquía de ChomskySon aquellos lenguajes generados por una gramática sin restricciones adicionales.
Tales gramáticas pueden incluir reglas de la forma
α→ε
De manera que la gramática es capaz de borrar cadenas.
Tales
gramáticas se conocen comocontraibles.
Ejemplo:
Lenguajes recursivamente enumerables o tipo 0
Jerarquía de ChomskySon aquellos lenguajes generados por una gramática sin restricciones adicionales.
Tales gramáticas pueden incluir reglas de la forma
α→ε
De manera que la gramática es capaz de borrar cadenas. Tales
gramáticas se conocen comocontraibles.
Ejemplo:
Lenguajes recursivamente enumerables o tipo 0
Jerarquía de ChomskyLa siguiente es una gramática de tipo 0:
S →AT A→0AO A→1AI O0→0O
O1→1O I0→0I I1→1I OT →0T
IT →1T A→ε T →ε
L(G) ={ww |w ∈ {0,1}?}
La idea del diseño de esta gramática y la razón del nombre
Lenguajes recursivamente enumerables o tipo 0
Jerarquía de ChomskyLa siguiente es una gramática de tipo 0:
S →AT A→0AO A→1AI O0→0O
O1→1O I0→0I I1→1I OT →0T
IT →1T A→ε T →ε
L(G) ={ww |w ∈ {0,1}?}
La idea del diseño de esta gramática y la razón del nombre
Lenguajes recursivamente enumerables o tipo 0
Jerarquía de ChomskyLa siguiente es una gramática de tipo 0:
S →AT A→0AO A→1AI O0→0O
O1→1O I0→0I I1→1I OT →0T
IT →1T A→ε T →ε
L(G) ={ww |w ∈ {0,1}?}
La idea del diseño de esta gramática y la razón del nombre
Lenguajes dependientes del contexto o tipo 1
Jerarquía de ChomskySon aquellos generados por gramáticas con todas sus producciones son de la forma
α1Aα2→α1βα2
conα1, α2∈(V∪T)?, A∈V, β 6=ε.
Con la posible excepción de la reglaS→ε, en cuyo caso se prohibe
la presencia deSa la derecha de las producciones.
Por ejemplo la siguiente gramática dependiente del contexto genera al lenguajeL={aibici |i≥0}
S→A A→aABC|abC CB →BC
Lenguajes dependientes del contexto o tipo 1
Jerarquía de ChomskySon aquellos generados por gramáticas con todas sus producciones son de la forma
α1Aα2→α1βα2
conα1, α2∈(V∪T)?, A∈V, β 6=ε.
Con la posible excepción de la reglaS→ε, en cuyo caso se prohibe
la presencia deSa la derecha de las producciones.
Por ejemplo la siguiente gramática dependiente del contexto genera al lenguajeL={aibici |i≥0}
S→A A→aABC|abC CB →BC
Lenguajes libres del contexto o tipo 2
Jerarquía de ChomskySon aquellos generados por gramáticas con todas sus producciones de la forma
A→α
conA∈V, α∈(V∪T)?.
Esta definición incluye a la reglaS→ε.
Lenguajes libres del contexto o tipo 2
Jerarquía de ChomskySon aquellos generados por gramáticas con todas sus producciones de la forma
A→α
conA∈V, α∈(V∪T)?.
Esta definición incluye a la reglaS→ε.
Lenguajes libres del contexto o tipo 2
Jerarquía de ChomskySon aquellos generados por gramáticas con todas sus producciones de la forma
A→α
conA∈V, α∈(V∪T)?.
Esta definición incluye a la reglaS→ε.
Lenguajes regulares o tipo 3
Jerarquía de ChomskySon aquellos generados por una gramática de una de las siguientes formas:
Lineal por la derecha: todas las producciones de la forma
A→aB A→a A→ε
conA,B∈V, a∈T
Lineas por la izquierda: todas las producciones de la forma
A→Ba A→a A→ε
conA,B∈V, a∈T
Lenguajes regulares o tipo 3
Jerarquía de ChomskySon aquellos generados por una gramática de una de las siguientes formas:
Lineal por la derecha: todas las producciones de la forma
A→aB A→a A→ε
conA,B∈V, a∈T
Lineas por la izquierda: todas las producciones de la forma
A→Ba A→a A→ε
conA,B∈V, a∈T
Lenguajes regulares o tipo 3
Jerarquía de ChomskySon aquellos generados por una gramática de una de las siguientes formas:
Lineal por la derecha: todas las producciones de la forma
A→aB A→a A→ε
conA,B∈V, a∈T
Lineas por la izquierda: todas las producciones de la forma
A→Ba A→a A→ε
conA,B∈V, a∈T
Jerarquía de Chomsky
ObservacionesDecimos que un lenguaje es de tipoisi y sólo sii es el índice
mas grande tal que existe una gramática de tipoique genera aL
La jerarquía de gramáticas genera una jerarquía en los lenguajes generados:
L3(L2(L1(L0
La jerarquía de Chomsky permite refinar la teoría de la
Jerarquía de Chomsky
ObservacionesDecimos que un lenguaje es de tipoisi y sólo sii es el índice
mas grande tal que existe una gramática de tipoique genera aL
La jerarquía de gramáticas genera una jerarquía en los lenguajes generados:
L3(L2(L1(L0
La jerarquía de Chomsky permite refinar la teoría de la
Jerarquía de Chomsky
ObservacionesDecimos que un lenguaje es de tipoisi y sólo sii es el índice
mas grande tal que existe una gramática de tipoique genera aL
La jerarquía de gramáticas genera una jerarquía en los lenguajes generados:
L3(L2(L1(L0
La jerarquía de Chomsky permite refinar la teoría de la
Gramáticas Regulares
Una gramática regular es una gramática lineal por la derecha o lineal por la izquierda.
No se permite mezclar ambos tipos de producciones.
Gramáticas Regulares
Una gramática regular es una gramática lineal por la derecha o lineal por la izquierda.
No se permite mezclar ambos tipos de producciones.
Gramáticas Regulares
Una gramática regular es una gramática lineal por la derecha o lineal por la izquierda.
No se permite mezclar ambos tipos de producciones.
Gramáticas Regulares
Lenguajes RegularesDecimos que un lenguajeLes regular siexisteuna gramática
regularGque lo genere, es decir, siL=L(G).
SiLes generado por una gramática de tipoi, no se puede
asegurar de inmediato queLsea un lenguaje de tipoi. Debe
Gramáticas Regulares
Lenguajes RegularesDecimos que un lenguajeLes regular siexisteuna gramática
regularGque lo genere, es decir, siL=L(G).
SiLes generado por una gramática de tipoi, no se puede
asegurar de inmediato queLsea un lenguaje de tipoi. Debe
L
=
0
?10
?10
? EjemplosLes generado por:
S → A1A1A A → 0A|ε
esta gramática no es regular,
pero el lenguaje si lo es al existir una gramática regular equivalente:
L
=
0
?10
?10
? EjemplosLes generado por:
S → A1A1A A → 0A|ε
esta gramática no es regular, pero el lenguaje si lo es al existir una gramática regular equivalente:
L
= (
a
+
b
)
?b
Ejemplos
Les generado por:
Lenguajes y gramáticas regulares
AF⇒ GRDado un AFM =hQ,Σ, δ,q0,Fiexiste una gramática regular
G=hV,T,S,Pital queL(M) =L(G). Es decir, todo lenguaje regular es generado por una gramática regular.
Definimos aGcomo sigue:
Suponemos s.p.g. que no hayε-transiciones.
V =Q T = Σ S=q0
P se define como sigue:
I Sip∈δ(q,a)entonces agregamosq→apaP.
Lenguajes y gramáticas regulares
AF⇒ GRDado un AFM =hQ,Σ, δ,q0,Fiexiste una gramática regular
G=hV,T,S,Pital queL(M) =L(G). Es decir, todo lenguaje regular es generado por una gramática regular.
Definimos aGcomo sigue:
Suponemos s.p.g. que no hayε-transiciones.
V =Q T = Σ S=q0
P se define como sigue:
I Sip∈δ(q,a)entonces agregamosq→apaP.
Lenguajes y gramáticas regulares
AF⇒ GRDado un AFM =hQ,Σ, δ,q0,Fiexiste una gramática regular
G=hV,T,S,Pital queL(M) =L(G). Es decir, todo lenguaje regular es generado por una gramática regular.
Definimos aGcomo sigue:
Suponemos s.p.g. que no hayε-transiciones.
V =Q T = Σ S=q0
P se define como sigue:
I Sip∈δ(q,a)entonces agregamosq→apaP.
Lenguajes y gramáticas regulares
AF⇒ GRDado un AFM =hQ,Σ, δ,q0,Fiexiste una gramática regular
G=hV,T,S,Pital queL(M) =L(G). Es decir, todo lenguaje regular es generado por una gramática regular.
Definimos aGcomo sigue:
Suponemos s.p.g. que no hayε-transiciones.
V =Q T = Σ S=q0
P se define como sigue:
I Sip∈δ(q,a)entonces agregamosq→apaP.
Lenguajes y gramáticas regulares
AF⇒ GRDado un AFM =hQ,Σ, δ,q0,Fiexiste una gramática regular
G=hV,T,S,Pital queL(M) =L(G). Es decir, todo lenguaje regular es generado por una gramática regular.
Definimos aGcomo sigue:
Suponemos s.p.g. que no hayε-transiciones.
V =Q T = Σ S=q0
P se define como sigue:
I Sip∈δ(q,a)entonces agregamosq→apaP.
Lenguajes y gramáticas regulares
AF⇒ GRDado un AFM =hQ,Σ, δ,q0,Fiexiste una gramática regular
G=hV,T,S,Pital queL(M) =L(G). Es decir, todo lenguaje regular es generado por una gramática regular.
Definimos aGcomo sigue:
Suponemos s.p.g. que no hayε-transiciones.
V =Q T = Σ S=q0
P se define como sigue:
I Sip∈δ(q,a)entonces agregamosq→apaP.
Lenguajes y gramáticas regulares
GR⇒ AFDada una gramática regularG=hV,T,S,Piexiste un AF
M =hQ,Σ, δ,q0,Fital queL(M) =L(G). Es decir todo lenguaje
generado por una gramática regular es un lenguaje regular.
Definimos aM como sigue:
Suponemos s.p.g. queGes lineal derecha.
Q=V∪ {qF} Σ =T q0=S F ={qF}
δ se define como sigue:
Lenguajes y gramáticas regulares
GR⇒ AFDada una gramática regularG=hV,T,S,Piexiste un AF
M =hQ,Σ, δ,q0,Fital queL(M) =L(G). Es decir todo lenguaje
generado por una gramática regular es un lenguaje regular.
Definimos aM como sigue:
Suponemos s.p.g. queGes lineal derecha.
Q=V ∪ {qF} Σ =T q0=S F ={qF}
δ se define como sigue:
Lenguajes y gramáticas regulares
GR⇒ AFDada una gramática regularG=hV,T,S,Piexiste un AF
M =hQ,Σ, δ,q0,Fital queL(M) =L(G). Es decir todo lenguaje
generado por una gramática regular es un lenguaje regular.
Definimos aM como sigue:
Suponemos s.p.g. queGes lineal derecha.
Q=V ∪ {qF} Σ =T q0=S F ={qF}
δ se define como sigue:
Lenguajes y gramáticas regulares
GR⇒ AFDada una gramática regularG=hV,T,S,Piexiste un AF
M =hQ,Σ, δ,q0,Fital queL(M) =L(G). Es decir todo lenguaje
generado por una gramática regular es un lenguaje regular.
Definimos aM como sigue:
Suponemos s.p.g. queGes lineal derecha.
Q=V ∪ {qF} Σ =T q0=S F ={qF}
δ se define como sigue:
Lenguajes y gramáticas regulares
GR⇒ AFDada una gramática regularG=hV,T,S,Piexiste un AF
M =hQ,Σ, δ,q0,Fital queL(M) =L(G). Es decir todo lenguaje
generado por una gramática regular es un lenguaje regular.
Definimos aM como sigue:
Suponemos s.p.g. queGes lineal derecha.
Q=V ∪ {qF} Σ =T q0=S F ={qF}
δ se define como sigue:
I SiA→aB ∈PentoncesB∈δ(A,a).
Lenguajes y gramáticas regulares
GR⇒ AFDada una gramática regularG=hV,T,S,Piexiste un AF
M =hQ,Σ, δ,q0,Fital queL(M) =L(G). Es decir todo lenguaje
generado por una gramática regular es un lenguaje regular.
Definimos aM como sigue:
Suponemos s.p.g. queGes lineal derecha.
Q=V ∪ {qF} Σ =T q0=S F ={qF}
δ se define como sigue:
I SiA→aB ∈PentoncesB∈δ(A,a). I SiA→a∈PentoncesqF ∈δ(A,a).
Lenguajes y gramáticas regulares
GR⇒ AFDada una gramática regularG=hV,T,S,Piexiste un AF
M =hQ,Σ, δ,q0,Fital queL(M) =L(G). Es decir todo lenguaje
generado por una gramática regular es un lenguaje regular.
Definimos aM como sigue:
Suponemos s.p.g. queGes lineal derecha.
Q=V ∪ {qF} Σ =T q0=S F ={qF}
δ se define como sigue:
Gramáticas libres de contexto
DefiniciónUna gramática es libre o independiente del contexto si todas sus producciones son de la forma
A→α
conA∈V, α∈(V ∪T)?.
Esta definición incluye a la reglaS →ε.
Gramáticas libres de contexto
DefiniciónUna gramática es libre o independiente del contexto si todas sus producciones son de la forma
A→α
conA∈V, α∈(V ∪T)?.
Esta definición incluye a la reglaS →ε.
Gramáticas libres de contexto
DefiniciónUna gramática es libre o independiente del contexto si todas sus producciones son de la forma
A→α
conA∈V, α∈(V ∪T)?.
Esta definición incluye a la reglaS →ε.
Gramáticas libres de contexto
EjemplosL=a?
S→aS|ε
L=a?b?
S → aS|bA|ε
A → bA|b|ε
L=0+1+
S → CU C → 0C|0
Gramáticas libres de contexto
EjemplosL=a?
S→aS|ε
L=a?b?
S → aS|bA|ε
A → bA|b|ε
L=0+1+
S → CU C → 0C|0
Gramáticas libres de contexto
EjemplosL=a?
S→aS|ε
L=a?b?
S → aS|bA|ε
A → bA|b|ε
L=0+1+
S → CU C → 0C|0
Gramáticas libres de contexto
EjemplosL={anbam |n,m≥1}=a+ba+
S → aS |aB B → bC C → aC |a
L={anbn|n∈N}que no es regular
S→aSb|ε
L={w ∈ {a,b}? |w =wR}que no es regular
Gramáticas libres de contexto
EjemplosL={anbam |n,m≥1}=a+ba+
S → aS |aB B → bC C → aC |a
L={anbn |n∈N}que no es regular
S→aSb|ε
L={w ∈ {a,b}? |w =wR}que no es regular
Gramáticas libres de contexto
EjemplosL={anbam |n,m≥1}=a+ba+
S → aS |aB B → bC C → aC |a
L={anbn |n∈N}que no es regular
S→aSb|ε
Derivaciones por la izquierda
GLCUna derivaciónS→? w es una derivación por la izquierda si en cada
paso se reescribe la variable mas a la izquierda en la palabra.
En la gramática
S→aAs|a A→SbA|SS|ba
tenemos la siguiente derivación por la izquierda deaabbaa.
Derivaciones por la izquierda
GLCUna derivaciónS→? w es una derivación por la izquierda si en cada
paso se reescribe la variable mas a la izquierda en la palabra. En la gramática
S→aAs|a A→SbA|SS|ba
tenemos la siguiente derivación por la izquierda deaabbaa.
Derivaciones por la izquierda
GLCUna derivaciónS→? w es una derivación por la izquierda si en cada
paso se reescribe la variable mas a la izquierda en la palabra. En la gramática
S→aAs|a A→SbA|SS|ba
tenemos la siguiente derivación por la izquierda deaabbaa.
Derivaciones por la derecha
GLCUna derivaciónS→? w es una derivación por la derecha si en cada
paso se reescribe la variable mas a la derecha en la palabra.
En la gramática
S→aAs|a A→SbA|SS|ba
tenemos la siguiente derivación por la derecha deaabbaa.
Derivaciones por la derecha
GLCUna derivaciónS→? w es una derivación por la derecha si en cada
paso se reescribe la variable mas a la derecha en la palabra. En la gramática
S→aAs|a A→SbA|SS|ba
tenemos la siguiente derivación por la derecha deaabbaa.
Derivaciones por la derecha
GLCUna derivaciónS→? w es una derivación por la derecha si en cada
paso se reescribe la variable mas a la derecha en la palabra. En la gramática
S→aAs|a A→SbA|SS|ba
tenemos la siguiente derivación por la derecha deaabbaa.
Árboles de derivación
GLCLos árboles de derivación o árboles sintácticos son un mecanismo para representar las derivaciones de gramáticas libres de contexto.
En compiladores se utilizan para el análisis sintáctico de
programas fuente (parsing) y sirven de base para la generación de código.
Árboles de derivación
GLCLos árboles de derivación o árboles sintácticos son un mecanismo para representar las derivaciones de gramáticas libres de contexto.
En compiladores se utilizan para el análisis sintáctico de
programas fuente (parsing) y sirven de base para la generación de código.
Árboles de derivación
GLCLos árboles de derivación o árboles sintácticos son un mecanismo para representar las derivaciones de gramáticas libres de contexto.
En compiladores se utilizan para el análisis sintáctico de
programas fuente (parsing) y sirven de base para la generación de código.
Árboles de derivación
GLCPuede haber mas de un árbol de derivación para una cadena.
Lo ideal es que cada cadena tenga sólo un árbol asociado, esto implica que el lenguaje no es ambiguo.
Árboles de derivación
GLCPuede haber mas de un árbol de derivación para una cadena.
Lo ideal es que cada cadena tenga sólo un árbol asociado, esto implica que el lenguaje no es ambiguo.
Árboles de derivación
GLCPuede haber mas de un árbol de derivación para una cadena.
Lo ideal es que cada cadena tenga sólo un árbol asociado, esto implica que el lenguaje no es ambiguo.
Construcción de árboles de derivación
GLCDada una gramática libre de contextoG=hV,T,S,Pi, un árbol de
derivación enGse construye como sigue:
La raiz contiene al símbolo inicialS.
Cada nodo interior contiene una variable
Cada hoja contiene un símbolo deV ∪T ∪ {ε}.
Si un nodo interior contiene una variableAentonces sus hijos
contienen símbolos (de izquierda a derecha)a1, . . . ,ansi y sólo si
A→a1a2. . .anestá enP.
Construcción de árboles de derivación
GLCDada una gramática libre de contextoG=hV,T,S,Pi, un árbol de
derivación enGse construye como sigue:
La raiz contiene al símbolo inicialS.
Cada nodo interior contiene una variable
Cada hoja contiene un símbolo deV ∪T ∪ {ε}.
Si un nodo interior contiene una variableAentonces sus hijos
contienen símbolos (de izquierda a derecha)a1, . . . ,an si y sólo si
A→a1a2. . .anestá enP.
Construcción de árboles de derivación
GLCDada una gramática libre de contextoG=hV,T,S,Pi, un árbol de
derivación enGse construye como sigue:
La raiz contiene al símbolo inicialS.
Cada nodo interior contiene una variable
Cada hoja contiene un símbolo deV ∪T ∪ {ε}.
Si un nodo interior contiene una variableAentonces sus hijos
contienen símbolos (de izquierda a derecha)a1, . . . ,an si y sólo si
A→a1a2. . .anestá enP.
Construcción de árboles de derivación
GLCDada una gramática libre de contextoG=hV,T,S,Pi, un árbol de
derivación enGse construye como sigue:
La raiz contiene al símbolo inicialS.
Cada nodo interior contiene una variable
Cada hoja contiene un símbolo deV ∪T ∪ {ε}.
Si un nodo interior contiene una variableAentonces sus hijos
contienen símbolos (de izquierda a derecha)a1, . . . ,an si y sólo si
A→a1a2. . .anestá enP.
Construcción de árboles de derivación
GLCDada una gramática libre de contextoG=hV,T,S,Pi, un árbol de
derivación enGse construye como sigue:
La raiz contiene al símbolo inicialS.
Cada nodo interior contiene una variable
Cada hoja contiene un símbolo deV ∪T ∪ {ε}.
Si un nodo interior contiene una variableAentonces sus hijos
contienen símbolos (de izquierda a derecha)a1, . . . ,an si y sólo si
A→a1a2. . .anestá enP.
Construcción de árboles de derivación
GLCDada una gramática libre de contextoG=hV,T,S,Pi, un árbol de
derivación enGse construye como sigue:
La raiz contiene al símbolo inicialS.
Cada nodo interior contiene una variable
Cada hoja contiene un símbolo deV ∪T ∪ {ε}.
Si un nodo interior contiene una variableAentonces sus hijos
contienen símbolos (de izquierda a derecha)a1, . . . ,an si y sólo si
A→a1a2. . .anestá enP.
Ambigüedad
GLCUna gramática se diceambiguasi existe una palabraw con dos o
más árboles de derivación distintos.
En general una palabra puede tener mas de una derivación, pero un sólo árbol, en tal caso no hay ambigüedad.
Algunas veces se puede suprimir la ambigüedad directamente.
Ambigüedad
GLCUna gramática se diceambiguasi existe una palabraw con dos o
más árboles de derivación distintos.
En general una palabra puede tener mas de una derivación, pero un sólo árbol, en tal caso no hay ambigüedad.
Algunas veces se puede suprimir la ambigüedad directamente.
Ambigüedad
GLCUna gramática se diceambiguasi existe una palabraw con dos o
más árboles de derivación distintos.
En general una palabra puede tener mas de una derivación, pero un sólo árbol, en tal caso no hay ambigüedad.
Algunas veces se puede suprimir la ambigüedad directamente.
Ambigüedad
GLCUna gramática se diceambiguasi existe una palabraw con dos o
más árboles de derivación distintos.
En general una palabra puede tener mas de una derivación, pero un sólo árbol, en tal caso no hay ambigüedad.
Algunas veces se puede suprimir la ambigüedad directamente.
Sin embargo no hay un algoritmo para remover ambigüedad.
Ambigüedad
GLCUna gramática se diceambiguasi existe una palabraw con dos o
más árboles de derivación distintos.
En general una palabra puede tener mas de una derivación, pero un sólo árbol, en tal caso no hay ambigüedad.
Algunas veces se puede suprimir la ambigüedad directamente.
Sin embargo no hay un algoritmo para remover ambigüedad.
Ejemplos
AmbigüedadS→AA A→aSa|a
La palabraa5tiene las siguientes derivaciones:
S→AA→aA→aaSa→aaAAa→aaaAa→aaaaa
S→AA→aSaA→aAAaA→aaAaA→aaaaA→aaaaa
Ejemplos
AmbigüedadS→AA A→aSa|a
La palabraa5tiene las siguientes derivaciones:
S→AA→aA→aaSa→aaAAa→aaaAa→aaaaa
S→AA→aSaA→aAAaA→aaAaA→aaaaA→aaaaa
Ejemplos
AmbigüedadS→AA A→aSa|a
La palabraa5tiene las siguientes derivaciones:
S→AA→aA→aaSa→aaAAa→aaaAa→aaaaa
S→AA→aSaA→aAAaA→aaAaA→aaaaA→aaaaa
Ejemplos
AmbigüedadS→AA A→aSa|a
La palabraa5tiene las siguientes derivaciones:
S→AA→aA→aaSa→aaAAa→aaaAa→aaaaa
S→AA→aSaA→aAAaA→aaAaA→aaaaA→aaaaa
Lenguajes Ambiguos
AmbigüedadUn lenguajeLes ambiguo si existe una gramática ambiguaGque
genera aL.
L={a2+3i |i≥0}es ambiguo.
Un lenguaje es inherentemente ambiguo si todas las gramáticas que lo generan son ambiguas.
Lenguajes Ambiguos
AmbigüedadUn lenguajeLes ambiguo si existe una gramática ambiguaGque
genera aL.
L={a2+3i|i≥0}es ambiguo.
Un lenguaje es inherentemente ambiguo si todas las gramáticas que lo generan son ambiguas.
Lenguajes Ambiguos
AmbigüedadUn lenguajeLes ambiguo si existe una gramática ambiguaGque
genera aL.
L={a2+3i|i≥0}es ambiguo.
Un lenguaje es inherentemente ambiguo si todas las gramáticas que lo generan son ambiguas.
Lenguajes Ambiguos
AmbigüedadUn lenguajeLes ambiguo si existe una gramática ambiguaGque
genera aL.
L={a2+3i|i≥0}es ambiguo.
Un lenguaje es inherentemente ambiguo si todas las gramáticas que lo generan son ambiguas.
L
=
{
a
2+3i|
i
≥
0}
Lenguajes ambiguosLes ambiguo por se generado por la gramática ambigua
S→AA A→aSa|a
Sin embargo este lenguaje también es generado por una gramática no ambigua:
S→aa|aaU U →aaaU |aaa
en este caso la derivación dea5es:
S→aaU →aaaaa
L
=
{
a
2+3i|
i
≥
0}
Lenguajes ambiguosLes ambiguo por se generado por la gramática ambigua
S→AA A→aSa|a
Sin embargo este lenguaje también es generado por una gramática no ambigua:
S→aa|aaU U →aaaU |aaa
en este caso la derivación dea5es:
S→aaU →aaaaa
L
=
{
a
2+3i|
i
≥
0}
Lenguajes ambiguosLes ambiguo por se generado por la gramática ambigua
S→AA A→aSa|a
Sin embargo este lenguaje también es generado por una gramática no ambigua:
S→aa|aaU U →aaaU |aaa
en este caso la derivación dea5es:
S→aaU →aaaaa
L
=
{
a
2+3i|
i
≥
0}
Lenguajes ambiguosLes ambiguo por se generado por la gramática ambigua
S→AA A→aSa|a
Sin embargo este lenguaje también es generado por una gramática no ambigua:
S→aa|aaU U →aaaU |aaa
en este caso la derivación dea5es:
S→aaU →aaaaa
L
=
{
a
nb
nc
md
m|
n
,
m
≥
1} ∪ {
a
nb
mc
md
n|
n
,
m
≥
1}
Lenguajes inherentemente ambigüosLes generado por la gramática:
S →AB|C A→aAb|ab B→cBd |cd C →aCd |aDd D→bDc |bc
La cadenaaabbccdd tiene dos derivaciones por la izquierda:
S→AB→aAbB →aabbB →aabbcBd →aabbccdd S→C →aCd →aaDdd →aabDcdd →aabbccdd
L
=
{
a
nb
nc
md
m|
n
,
m
≥
1} ∪ {
a
nb
mc
md
n|
n
,
m
≥
1}
Lenguajes inherentemente ambigüosLes generado por la gramática:
S →AB|C A→aAb|ab B→cBd |cd C →aCd |aDd D→bDc |bc
La cadenaaabbccdd tiene dos derivaciones por la izquierda:
S→AB→aAbB →aabbB →aabbcBd →aabbccdd S→C →aCd →aaDdd →aabDcdd →aabbccdd
L
=
{
a
nb
nc
md
m|
n
,
m
≥
1} ∪ {
a
nb
mc
md
n|
n
,
m
≥
1}
Lenguajes inherentemente ambigüosLes generado por la gramática:
S →AB|C A→aAb|ab B→cBd |cd C →aCd |aDd D→bDc |bc
La cadenaaabbccdd tiene dos derivaciones por la izquierda:
S→AB→aAbB →aabbB →aabbcBd →aabbccdd
S→C →aCd →aaDdd →aabDcdd →aabbccdd
L
=
{
a
nb
nc
md
m|
n
,
m
≥
1} ∪ {
a
nb
mc
md
n|
n
,
m
≥
1}
Lenguajes inherentemente ambigüosLes generado por la gramática:
S →AB|C A→aAb|ab B→cBd |cd C →aCd |aDd D→bDc |bc
La cadenaaabbccdd tiene dos derivaciones por la izquierda:
S→AB→aAbB →aabbB →aabbcBd →aabbccdd S→C →aCd →aaDdd →aabDcdd →aabbccdd
L
=
{
a
nb
nc
md
m|
n
,
m
≥
1} ∪ {
a
nb
mc
md
n|
n
,
m
≥
1}
Lenguajes inherentemente ambigüosLes generado por la gramática:
S →AB|C A→aAb|ab B→cBd |cd C →aCd |aDd D→bDc |bc
La cadenaaabbccdd tiene dos derivaciones por la izquierda:
S→AB→aAbB →aabbB →aabbcBd →aabbccdd S→C →aCd →aaDdd →aabDcdd →aabbccdd