TEMA 3: GRAMÁTICAS FORMALES José Miguel Puerta Antonio Fernández Caballero Departamento de Informática Universidad de Castilla- la Mancha Teoría de Autómatas y Lenguajes Formales
1
TEMA 3: GRAMÁTICAS FORMALES INDICE z Descripción
Informal y Ejemplos z Descripción Formal. Conceptos { Derivaciones. Sentencias { Lenguaje generado por una gramática { Árboles de derivación y de síntesis { Gramáticas ambiguas z Jerarquía de Chomsky z Propiedades de las Gramáticas Regulares Teoría de Autómatas y Lenguajes Formales
2
TEMA 3: GRAMÁTICAS FORMALES DESCRIPCIÓN INFORMAL Y EJEMPLOS (1) Estudio de los lenguajes: z Gramática = Análisis de la estructura de las frases Análisis léxico (morfología) = ver si las palabras son correctas { Análisis sintáctico = ver si las palabras combinadas forman una frase correcta { Análisis fonético = propiedades del lenguaje hablado {
z
Semántica = Estudio del significado de las frases de un lenguaje. Teoría de Autómatas y Lenguajes Formales
3
TEMA 3: GRAMÁTICAS FORMALES DESCRIPCIÓN INFORMAL Y EJEMPLOS (2) Informalmente: z Definición constructiva de las palabras de un lenguaje. z Dispositivo abstracto que genera palabras de un lenguaje. z Ejemplos: L = {a n b m | n, m ≥ 0}, reglas de construcción: G = {S → aS | a | aA | b | bA | ε ; A → b | bA} A partir de S podemos generar palabras de L sustituyendo símbolos S ó A por alguna de las cadenas que generan (parte
derecha de la flecha): S ⇒ aS ⇒ aaS ⇒ aaaA ⇒ aaabA ⇒ aaabb S ⇒ bA ⇒ bbA ⇒ bbb Teoría de Autómatas y Lenguajes Formales
4
TEMA 3: GRAMÁTICAS FORMALES DESCRIPCIÓN INFORMAL Y EJEMPLOS (3) L = números naturales Natural → Digito | DigitoPos Ceros Natual DigitoPos → 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 G= Digito → 0 | DigitoPos Ceros → 0 Ceros | ε
L = w ∈ {a, b}* w
a
=
w , w b
a
=
número de a - es
S → aB | bA | ε G = A → aS | bAA B → bS | aBB Teoría de Autómatas y Lenguajes Formales
5
TEMA 3: GRAMÁTICAS FORMALES DESCRIPCIÓN FORMAL. CONCEPTOS Una gramática es una cuádrupla G = (N,T,P,S ) donde: { { { { {
N : conjunto o alfabeto de símbolos no terminales (variables). T : conjunto o alfabeto de símbolos terminales (constantes). Debe cumplirse que N ∩ T = ∅. Notamos Σ = N ∪ T alfabeto de la
gramática. S ∈ N : símbolo inicial o axioma de la gramática. P : conjunto de producciones o reglas de producción. P = α → β α ∈ Σ* N Σ* , β ∈ Σ*
Observemos que α debe contener al menos un símbolo no terminal, que puede estar rodeado de un contexto . Teoría de Autómatas y Lenguajes Formales
6
TEMA 3: GRAMÁTICAS FORMALES Derivaciones. Sentencias (1) Sea G = (N,T,P,S ) una gramática, y α , β , δ , φ , ρ , ... palabras de Σ*. Entonces: se deriva de α en un paso de derivación, o es una derivación directa de α , notado como α ⇒G β , si existen dos cadenas φ 1,φ 2 ∈ Σ* y una producción δ → ρ ∈ P , tales que α = φ 1δφ 2 y β = φ 1 ρφ 2 . { Notamos como ⇒* G al cierre reflexivo y transitivo de ⇒G . Es decir, α ⇒* G β ( β es derivable o se deriva de α ) si existe una sucesión de cadenas inermedias φ 1,φ 2, ..., φ n , tales que α = φ 1 ⇒G φ 1 ... ⇒G φ n = β . Si n = 0 entonces α = β . { β
Teoría de Autómatas y Lenguajes Formales
7
TEMA 3: GRAMÁTICAS FORMALES Derivaciones. Sentencias (2) z Una derivación α ⇒*G β se llama más a la derecha, si en cada paso de derivación directa se expande el símbolo no terminal más a la derecha. z Respectivamente se puede hacer una definición para derivación más a la izquierda. z x ∈ Σ* es una forma sentencial de G si S ⇒*G x (se deriva del axioma S ). Si además x ∈ T * , entonces se dice que x es una sentencia. Ejemplo: Respecto a G = {S → aS |a |aA|b |bA|ε; A → b |bA} Una forma sentencial sería: S ⇒*G aaBb . Una sentencia sería: S ⇒*G aabb . Teoría de Autómatas y Lenguajes Formales
8
TEMA 3: GRAMÁTICAS FORMALES Lenguaje generado por una gramática. (1) z
Se llama lenguaje generado por G , o lenguaje asociado a G , al conjunto de las sentencias de G . Es decir, al conjunto: L(G) = {x ∈ T * | S ⇒*G x }
Teoría de Autómatas y Lenguajes Formales
9
TEMA 3: GRAMÁTICAS FORMALES EJEMPLO z
¿Cuál es el lenguaje generado por G = (T,N,P,S )? T = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) N = (N, C ) S = N P = {N → NC | C , C → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}
Teoría de Autómatas y Lenguajes Formales
10
TEMA 3: GRAMÁTICAS FORMALES Lenguaje generado por una gramática. (2) z
Dos gramáticas G 1 y G 2 son equivalentes cuando generan el mismo lenguaje: L(G 1) = L(G 2). Observaciones: La equivalencia de gramáticas es una propiedad indecidible , y por tanto, cualquier otro problema que pueda plantearse como tal. { Es posible demostrar equivalencia entre dos gramáticas particulares. Lo que no puede darse es un método general de prueba único para cualquier par de gramáticas. {
Teoría de Autómatas y Lenguajes Formales
11
TEMA 3: GRAMÁTICAS FORMALES EJEMPLO z
Probar que G y G’ son gramáticas equivalentes. G = ({S }, {a,b }, S , {S → aSb | ε }) G’ = ({S }, {a,b }, S , {S → aSb | aaSbb | ε })
Teoría de Autómatas y Lenguajes Formales
12
TEMA 3: GRAMÁTICAS FORMALES Árboles de derivación y de síntesis (1) Dada una gramática G = (N,T,P,S ), un árbol de derivación o análisis para una palabra x ∈ T * es un árbol donde: Los nodos son símbolos de Σ ∪ {ε}. { La raíz es S . { Los nodos interiores son símbolos no terminales (de N ). { Las hojas son símbolos terminales T y {ε}. { Si los hijos de un nodo con etiqueta A tienen etiquetas x 1, x 2, ..., x n , entonces existe en P una producción A → x 1x 2...x n . {
Teoría de Autómatas y Lenguajes Formales
13
TEMA 3: GRAMÁTICAS FORMALES Árboles de derivación y de síntesis (2) Ejemplo:
Observaciones: { Cada palabra puede tener más de un árbol de derivación. { Algunas veces usaremos árboles de derivación con raíz distinta de S , para otras derivaciones A ⇒*G x ∈ T * Teoría de Autómatas y Lenguajes Formales
14
TEMA 3: GRAMÁTICAS FORMALES Árboles de derivación y de síntesis (3) Dada una gramática G = (N,T,P,S ), un árbol de síntesis de G es un árbol donde: { Los nodos son formas sentenciales: w ∈ Σ* | S ⇒*G w . { La raíz es S . { Los nodos interiores contienes símbolos de N . { Cada hijo es una derivación en un paso de su padre. { Las hojas son sentencias.
Teoría de Autómatas y Lenguajes Formales
15
TEMA 3: GRAMÁTICAS FORMALES Árboles de derivación y de síntesis (4) Ejemplo:
Teoría de Autómatas y Lenguajes Formales
16
TEMA 3: GRAMÁTICAS FORMALES Gramáticas ambiguas (1) z Dada una gramática G = (N,T,P,S ). Una sentencia x ∈ T * se denomina ambigua si puede obtenerse por
más de un árbol de derivación (o equivalentemente, más de una derivación más a la izquierda o más a la derecha). S S a
S
b
a
S
b
a
a
S
b
b
ε
ε Teoría de Autómatas y Lenguajes Formales
17
TEMA 3: GRAMÁTICAS FORMALES z
z
Gramáticas ambiguas (2) Una gramática G se denomina ambigua si el lenguaje que genera contiene alguna sentencia ambigua. Observaciones: { La ambigüedad es una propiedad indecidible . { La condición de ambigüedad se aplica a las gramáticas y no a los lenguajes. (Un mismo lenguaje puede ser generado por varias gramáticas equivalentes). Un lenguaje se denomina inherentemente ambiguo si no existe una gramática no ambigua que lo genere. Teoría de Autómatas y Lenguajes Formales
18
TEMA 3: GRAMÁTICAS FORMALES Gramáticas limpias (1) z
z z
Cuando tenemos unas gramática, esta puede contener reglas o símbolos que podrían suprimirse o modificarse de cara a mejorar la estructura de la gramática y a hacerla más simple. A este proceso se le denomina simplificación o limpieza de gramáticas. Veamos algunas de las reglas o símbolos que se consideran innecesarios. Teoría de Autómatas y Lenguajes Formales
19
TEMA 3: GRAMÁTICAS FORMALES Gramáticas limpias (2) z z
z
z
Símbolos inaccesibles: son aquellos a los que nunca se puede llegar mediante secuencias de derivaciones. Símbolos no generativos: son aquellos símbolos no terminales que nunca van a producir cadenas de terminales (sentencias). Producciones unitarias: son aquellas reglas que tienen el formato A → B , A,B ∈ N . Estas reglas no aportan nada y se podrían evitar. Producciones nulas: son reglas del tipo A → ε. Si ε ∈ L(G ), entonces al menos tendrá que haber una producción nula en la gramática; no obstante, deben evitarse en lo posible. Teoría de Autómatas y Lenguajes Formales
20
TEMA 3: GRAMÁTICAS FORMALES JERARQUÍA DE CHOMSKY (1) Sea G = (N,T,P,S ) una gramática con α → β ∈ P . Un lenguaje se dice de tipo i (i = 0, 1, 2, 3), si puede ser generado por una gramática de tipo i , y no de tipo i +1. Cada una de las gramáticas incluye a las siguientes: G 3 ⊂ G 2 ⊂ G 1 ⊂ G 0
Entonces según las características de α → β , Chomsky establece la siguiente jerarquía (de más general a más particular): Teoría de Autómatas y Lenguajes Formales
21
TEMA 3: GRAMÁTICAS FORMALES JERARQUÍA DE CHOMSKY (2) { Gramáticas
de TIPO 0 o generales: Producciones: α → β , con α ∈Σ* N Σ* y β ∈Σ*. { Gramáticas de TIPO 1 o sensibles al contexto: Producciones: α 1Aα 2 → α 1 βα 2, con α 1,α 2 ∈Σ*, A ∈ N , y β ∈Σ+. z Esto no significa que A → β ∈ P . z Aunque β ≠ε, excepcionalmente se admite la producción S → ε. Teoría de Autómatas y Lenguajes Formales
22
TEMA 3: GRAMÁTICAS FORMALES JERARQUÍA DE CHOMSKY (3) {
Gramáticas de TIPO 2 o libres del contexto: Producciones: A → β , con A ∈ N y β ∈Σ+. z Caso particular del TIPO 1 con α 1 = α 2 = ε. z Aunque β ≠ ε, excepcionalmente se admite la producción S → ε.
Teoría de Autómatas y Lenguajes Formales
23
TEMA 3: GRAMÁTICAS FORMALES JERARQUÍA DE CHOMSKY (4) {
Gramáticas de TIPO 3 o regulares: Producciones: Lineal derecha: A → a|aB , con A,B ∈ N , a ∈ T . Lineal izquierda: A → a|Ba , con A,B ∈ N , a ∈ T . z En una misma gramática no pueden aparecer producciones de ambos tipos. z Excepcionalmente se admite la producción S → ε.
Teoría de Autómatas y Lenguajes Formales
24
TEMA 3: GRAMÁTICAS FORMALES EJEMPLOS JERARQUÍA DE CHOMSKY (1) TIPO 0 G = { {S , A, B }, {0, 1}, S , P } P = { S → 0SAB | 01B , AB → BA, 1A → 11, 1B → 1 } L(G ) = { 0n 1n | n ≥ 1}
Teoría de Autómatas y Lenguajes Formales
25
TEMA 3: GRAMÁTICAS FORMALES EJEMPLOS JERARQUÍA DE CHOMSKY (2) TIPO 1 G = { {S , A}, {0, 1}, S , P } P = { S → 0SA | 01, 1A → 11 } L(G ) = { 0n 1n | n ≥ 1}
Teoría de Autómatas y Lenguajes Formales
26
TEMA 3: GRAMÁTICAS FORMALES EJEMPLOS JERARQUÍA DE CHOMSKY (3) TIPO 2 G = { {S }, {0, 1}, S , P } P = { S → 0S 1, S → 01 } L(G ) = { 0n 1n | n ≥ 1}
Teoría de Autómatas y Lenguajes Formales
27
TEMA 3: GRAMÁTICAS FORMALES EJEMPLOS JERARQUÍA DE CHOMSKY (4) TIPO 3 G = { {S, A}, {0, 1}, S , P } P = { S → 0S | 0A, A → 1A | 1 } L(G ) = { 0 n 1m | n, m ≥ 1}
Teoría de Autómatas y Lenguajes Formales
28
TEMA 3: GRAMÁTICAS FORMALES PROPIEDADES DE LAS GRAMÁTICAS REGULARES (1) Lema de Eliminación de Ciclos
Si G = (N,T,P,S ) es una gramática regular lineal derecha (izquierda), existe una gramática regular lineal derecha (izquierda) G’ = (N’,T,P,S’ ) equivalente a G sin producciones del tipo A → aS .
Teoría de Autómatas y Lenguajes Formales
29
TEMA 3: GRAMÁTICAS FORMALES PROPIEDADES DE LAS GRAMÁTICAS REGULARES (2) {
Demostración: (sólo la parte constructiva): 1. N’ = N ∪ {S’ }, S’ nuevo símbolo inicial. 2. P’ : • Por cada S → β ∈ P , β ≠ ε, añadimos S’ → β . • Sustituimos cada producción A → aS por A → aS’. • Si S → ε ∈ P , añadimos A → a por cada producción A → aS .
{
Ejemplo: • P = { S → 1A | 1 | ε, A → 0S } • P’ = { S → 1A | 1 | ε, S’ → 1A | 1, A → 0S’ | 0 } Teoría de Autómatas y Lenguajes Formales
30
TEMA 3: GRAMÁTICAS FORMALES PROPIEDADES DE LAS GRAMÁTICAS REGULARES (3) Equivalencia entre gramática regular lineal derecha y gramática regular lineal izquierda Si G = (N,T,P,S ) es una gramática regular lineal derecha, existe una gramática regular lineal izquierda G’ = (N’,T,P,S’ ) equivalente a G.
Teoría de Autómatas y Lenguajes Formales
31
TEMA 3: GRAMÁTICAS FORMALES PROPIEDADES DE LAS GRAMÁTICAS REGULARES (4) {
Demostración: (sólo la parte constructiva): 1. Eliminamos ciclos en S de G . 2. Construimos un grafo dirigido H = (V, A), donde: V = N ∪ {ε} (vértices), y A = {(x,y,e ) = x →e y } (aristas), donde: Si A → aB ∈ P , entonces (A, B, a ) ∈ A. Si A → a ∈ P , entonces (A, ε, a ) ∈ A. Si S → ε ∈ P , entonces (S, ε, ε) ∈ A. 3. Invertimos las aristas, y renombramos ε con S y S con ε. 4. Reconstruimos la gramática a partir del nuevo grafo, invirtiendo el proceso 2, con producciones a la izquierda. Teoría de Autómatas y Lenguajes Formales
32
TEMA 3: GRAMÁTICAS FORMALES EJEMPLO G = { {S, A, B }, {0, 1}, S , P } P = { S → 1A | 1 | ε , B → 1A | 1, A → 0B | 0 } P’ = { S → B 1 | A0 | 1 | ε , B → A0, A → B 1 | 1 } S
1
1
A
1
1
0
A
1
1
0
0
0
B
ε
S
1
B 1
Teoría de Autómatas y Lenguajes Formales
33
TEMA 3: GRAMÁTICAS FORMALES PROBLEMAS 1. Dada la gramática N = {S , A}, T = {0, 1}; P = {S → 0A, A → 0A | 0S | 1}. { ¿De qué tipo es? { Expresar el lenguaje que genera. { Hallar otra gramática que genere el mismo lenguaje pero que incluya la palabra vacía. 2. Construir la gramática que genere el lenguaje L = {a i b i | i ≥ 0} ∪ {b j a j | j ≥ 0}.
Teoría de Autómatas y Lenguajes Formales
34
TEMA 3: GRAMÁTICAS FORMALES PROBLEMAS 3. Dada la gramática G = ({S,A,D,E }, {a,c,d,e }, S , {S → aA|a , A → cD |eE , E → aS |c , D → d }). { Indicar de qué tipo es. { Describir el lenguaje que genera. { Obtener una gramática equivalente lineal por la izquierda. 4. Dados los siguientes alfabetos Σ1 = {1,2,3,4,5,6,7,8} Σ2 = {a,b,c,d,e,f,g,h} y los lenguajes L1(Σ1) y L2(Σ2) . Definir los lenguajes L1∪L2, L1⋅L2 y (L1⋅L2)2. Teoría de Autómatas y Lenguajes Formales
35