You are on page 1of 107

Matemáticas discretas II

Lenguajes y gramáticas
carlos.andres.delgado@correounivalle.edu.co

Carlos Andrés Delgado S.


Raúl E Gutierrez de Piñerez R.

Facultad de Ingenierı́a. Universidad del Valle

Abril 2017
1 Lenguajes

2 Autómatas finitos

3 Gramáticas
Contenido

1 Lenguajes

2 Autómatas finitos

3 Gramáticas
El alfabeto
Un alfabeto es un conjunto finito no vacı́o cuyos elementos se llaman
sı́mbolos.

Sea Σ = {a, b} el alfabeto que consta de los sı́mbolos a y b. Las


siguientes son cadenas sobre Σ: aba, abaabaaa, aaaab.
El alfabeto binario Σ = {0, 1} son las cadenas sobre Σ que se definen
como secuencias finitas de ceros y unos.
Las cadenas son secuencias ordenadas y finitas de sı́mbolos. Por
ejemplo, w = aaab 6= w1 = baaa.
Sea Σ = {a, b, c, . . . , x, y , z} el alfabeto del idioma castellano.
El alfabeto utilizado por muchos lenguajes de programación.
Sea Σ = {a, b, c} entonces podemos formar todas las cadenas sobre Σ
incluyendo la cadena vacı́a.
Notación de alfabetos, cadenas y lenguajes

Si bien un alfabeto Σ es un conjunto finito, Σ∗ es siempre un conjunto


infinito (enumerable).
Hay que distinguir entre los siguientes cuatro objetos, que son diferentes
entre sı́: ∅, , {∅}, {}
Alfabetos

Operaciones con alfabetos


Si Σ es un alfabeto, σ ∈ Σ denota que σ es un sı́mbolo de Σ, por tanto, si

Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

se puede decir que 0 ∈ Σ

Un alfabeto es simplemente un conjunto finito no vacı́o que cumple las


siguientes propiedades, Dados Σ1 y Σ2 alfabetos
Entonces Σ1 ∪ Σ2 también es un alfabeto.
Σ1 ∩ Σ2 , Σ1 − Σ2 y Σ2 − Σ1 también son alfabetos.
Conjunto Universal
El conjunto de todas las cadenas sobre un alfabeto Σ, incluyendo la cadena
vacı́a, se denota por Σ∗

Sea Σ = {0, 1}
Σ∗ = {, 0, 1, 00, 01, 10, 11, 000, 001, 010, 100, 010, 110, . . .}
Sea Σ = {a, b, c}, entonces
Σ∗ = {, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, aab, abc, baa, . . .}
Sea Σ = {a, b}, entonces
Σ∗ = {, a, b, aa, ab, ba, bb, aaa, aab, baa, . . .}
Concatenación de cadenas

Cadenas
Dado un alfabeto Σ y dos cadenas u, v ∈ Σ∗ , la concatenación de u y v se
denota como u · v o simplemente uv y se define ası́:
1 Si v = , entonces u ·  =  · u = u, es decir, la concatenación de
cualquier cadena u con la cadena vacı́a, a izquierda o derecha, es igual
a u.
2 Si u = a1 a2 . . . an , v = b1 b2 . . . bm , entonces

u · v = a1 a2 . . . an b1 b2 . . . bm

Es decir, u · v es la cadena formada de escribir los sı́mbolos de u y a


continuación los sı́mbolos de v .
Potencia de una cadena

Dada w ∈ Σ∗ y n ∈ N, se define w n de la siguiente forma



  si n = 0
wn = uu . . . u si n≥1
 | {z }
n−veces

Potencia de una cadena de manera recursiva


La potencia de una cadena se define como w ∈ Σ∗ para n ∈ N

n , si n = 0
w =
ww n−1 , si n > 0

Ejemplo. Sea una cadena w = acc sobre Σ = {a, c} entonces podemos


obtener w 3 = ww 2 = wwww 0 = accaccacc = (acc)3
Inversa de una cadena

Longitud de una cadena


La longitud de una cadena w ∈ Σ∗ se denota |w| y se define como el número
de sı́mbolos de w (contando los sı́mbolos repetidos), es decir:

0, si w = ε
|w| =
n, si w = a1 a2 . . . an

|aba| = 3, |baaa| = 4

Reflexión o inversa de una cadena


La reflexión o inversa de una cadena w ∈ Σ∗ se denota como w I y se define
ası́: 
I , si w = ε
w =
an . . . a2 a1 , si w = a1 a2 . . . an
Inversa de una cadena de manera recursiva
La Inversa de una cadena Sea u ∈ Σ∗ entonces u −1 es la inversa.

w si w = ε
wI =
y I a si w = ay, a ∈ Σ, y ∈ Σ∗

Sea x=’able’ entonces obtener x I


x I = (able)I = (ble)I a
= (le)I ba
= (e)I lba
= (ε)I elba
= εelba
= elba
Sea la concatenación de las cadenas “ab” y “cd” que forma “abcd” sobre
un alfabeto. Sabemos que (abcd)I = dcba, por tanto dcba = (cd)I (ab)I .
Por lo tanto, si w e y son cadenas y si x = wy, entonces
x I = (wy)I = y I w I
En general, (x I )I = x, para demostrar, suponga que x = a1 a2 . . . an .
Sufijos y prefijos

Cadena
Definición formal: Una cadena v es una subcadena o subpalabra de u si
existen x, y tales que u = xvy. Nótese que x o y pueden ser  y por lo tanto,
la cadena vacı́a es una subcadena de cualquier cadena.

Un prefijo de u es una cadena v tal que u = vw para alguna cadena


w ∈ Σ∗ . Se dice que v es un prefijo propio si v 6= u.
Un sufijo de u es una cadena de v tal que u = wv para alguna cadena
w ∈ Σ∗ . Se dice que v es un sufijo propio si v 6= u.
Ejemplo de cadenas que son sufijos y prefijos

Prefijos de u

b
bc
Sea Σ = {a, b, c, d} y u = bcbaadb bcb
bcba
bcbaa
bcbaad
bcbaadb
Sufijos de u

b
db
adb
aadb
baadb
cbaadb
bcbaadb
La concatenación como una operación binaria

Operación binaria
Una operación binaria en un conjunto A es una función f : A × A → A, esta
deberá satisfacer las siguientes propiedades:
1 La operación binaria deberá estar definida para cada par ordenado de
A, es decir, f asigna a UN elemento f (a, b) de A a cada par ordenado
(a, b) de elementos de A.
2 Como una operación binaria es una función, sólo un elemento de A se
asigna a cada par (a, b).

Sea A = Z , se define a ∗ b como a + b. Entonces, ∗ es una operación


binaria en Z .
Sea A = Z + , se define a ∗ b como a − b. Entonces ∗ no es una
operación binaria ya que no asigna un elemento de A a cualquier par
ordenado de elementos de A.
Concatenación de cadenas como una operación binaria

Concatenación
La operación de la concatenación · es una operación binaria entre
cadenas de un alfabeto Σ, esto es:

· : Σ∗ × Σ∗ → Σ∗

Sean u, v ∈ Σ∗ y se denota por u · v o simplemente uv .

| uv |=| u | + | v |

Dado el alfabeto Σ y dos cadena w, u ∈ Σ∗


Entonces w ·  =  · w = w.
Si u = a1 a2 a3 . . . an , w = b1 b2 b3 . . . bm , entonces,
u · w = a1 a2 a3 . . . an b1 b2 b3 . . . bm
Por tanto | u · w |= n + m
La concatenación de cadenas es asociativa. Es decir, si u, v , w ∈ Σ∗ ,
entonces:
(uv )w = u(vw)
Semigrupos

Semigrupo
Sea (Σ∗ , ·) es un semigrupo el cual es un conjunto no vacı́o Σ∗ junto con
una operación binaria asociativa · definida en Σ∗ .

El conjunto P(S), donde S es un conjunto, junto con la operación de la


unión (P(S), ∪) es un semigrupo y es también un semigrupo
conmutativo.
∗ : P(S) × P(S) → P(S)
Sea S = {a, b} entonces {a, b} ∪ (∅ ∪ {b}) = ({a, b} ∪ ∅) ∪ {b}
El semigrupo (Σ∗ , ·) no es un semigrupo cunmutativo porque para
u, w ∈ Σ∗ no se cumple que u · w = w · u.
Sea w = ac, w1 = ab y w2 = bb tal que w, w1 , w2 ∈ Σ∗ entonces

w(w1 w2 ) = (ww1 )w2


ac(abbb) = (acab)bb
acabbb = acabbb
Monoide

Monoide
Un monoide es un semigrupo (S, ∗) que tiene idéntico.

El semigrupo P(S) con la operación de la unión tiene como idéntico a ∅


ya que
∅∗A=∅∪A=A=A∪∅
Sea (Σ∗ , ·, ) un monoide con las siguientes propiedades:
1 Es una operación binaria, es decir la concatenación es cerrada. ∀x, y ∈ Σ∗ ,
entonces x · y ∈ Σ∗ .
2 La concatenación es un semigrupo (Σ∗ , ·) y por tanto · es asociativa
∀x, y, z ∈ Σ∗ , (xy)z = x(yz)
3 La cadena vacı́a  es la idéntica para la concatenación: ∀x ∈ Σ∗ ,
·x =x ·=x
Lenguajes

Lenguaje
Un lenguaje es un conjunto de palabras o cadenas. Un lenguaje L sobre un
alfabeto Σ es un subconjunto de Σ∗ y si L = Σ∗ es el lenguaje de todas las
cadenas sobre Σ.

Sea L = ∅ el lenguaje vacı́o


∅ ⊆ L ⊆ Σ∗

Σ = {a, b, c}. L = {a, aba, aca}


Σ = {a, b, c}. L = {a, aa, aaa} = {an : n ≥ 1}
Σ = {a, b, c}. L = {, aa, aba, ab2 a, ab3 a} = {abn a : n ≥ 0} ∪ {}
Σ = {a, b, c}. L = {w ∈ Σ∗ : w no contiene el sı́mbolo c}. Por ejemplo,
abbaab ∈ L pero abbcaa ∈ / L.
Sobre Σ = {0, 1, 2} el lenguaje de las cadenas que tienen igual número
de ceros, unos y dos’s en cualquier orden.
Operaciones entre lenguajes

Operaciones entre lenguajes; Sean A, B lenguajes sobre Σ entonces


A ∩ B, A ∪ B, A − B operaciones de conjuntos.
Las operaciones lingüı́sticas son la concatenación, potencia, inverso y
clausura.
Sean A, B lenguajes sobre Σ entonces,

A ∪ B = {x|x : x ∈ A o x ∈ B}

{a} ∪ {b} = {a, b}


{a, ab} ∪ {ab, aab, aaabb} = {a, ab, aab, aaabb}
Operaciones entre lenguajes

Sean A, B lenguajes sobre Σ entonces,

A ∩ B = {x|x : x ∈ A y x ∈ B}

{a, ab} ∩ {ab, aab} = {ab}


{a, aab} ∩ {a, ab, aab, aaabb} = {a, aab}
{} ∩ {a, ab, aab, aaabb} = ∅
Complemento en Σ∗ :

∼A = {x ∈ Σ∗ |x ∈
/ A}

∼A =Σ −A

A ={ Cadenas de longitud par} sobre Σ = {a, b}, entonces


∼ A={cadenas de longitud impar}.
Operaciones entre lenguajes

Sean A, B lenguajes sobre Σ entonces,

A − B = {x|x : x ∈ A y x∈
/ B}

Sea B: El lenguaje de todas las cadenas de ceros de cualquier longitud.


Entonces:
Sea A = {0, 1}∗ y B = {0}∗ entonces
A − B = {0, 1}∗ − {0}∗ = 0∗ 1(0 ∪ 1)∗
A − B es el lenguaje de todas las cadenas de unos y ceros con almenos
un uno.
Lenguajes

Lenguaje Universal
Si Σ 6= ∅, entonces Σ∗ es el conjunto de todas las cadenas sobre Σ. Se le
llama lenguaje universal.

Σ∗ es un conjunto infinito de cadenas de longitud finita sobre Σ.

Teorema
Sean A y B dos lenguajes sobre el alfabeto Σ. Entonces A = B si y sólo si
A ⊆ B y B ⊆ A.

⇒) Suponiendo que A = B, entonces si x ∈ A, como A = B entonces x ∈ B


por tanto A ⊆ B de la misma forma si x ∈ B entonces como A = B entonces
x ∈ A por lo tanto B ⊆ A.
⇐) Se demuestra que si A ⊆ B y B ⊆ A entonces A = B.
Lenguajes

Sea el lenguaje del conjunto de cadenas con igual número de ceros y


unos.
L1 = {, 01, 10, 0011, 0101, 1001, 000111, . . .}
y sea
L = {an bn : n ≥ 0} ⊂ L1 ⊂ {0, 1}∗
La concatenación de lenguajes de dos lenguajes A y B sobre Σ, notada
por A.B o simplemente AB.
AB = {uv : u ∈ A, v ∈ B}
A·∅=∅·A=∅

A · ∅ = {uw : u ∈ A, w ∈ ∅} = ∅
Lenguajes

A · {ε} = {ε} · A = A

A · {} = {uw : u ∈ A, w ∈ {}} = {u : u ∈ A} = A

Las propiedad distributiva generalizada de la concatenación con


respecto a la unión. [ [
A· Bi = (A · Bi )
i∈I i∈I

[ [
x ∈A· Bi ⇐⇒ x = u · v , u ∈ A, v ∈ Bi
i∈I i∈I

⇐⇒ x = u · v , u ∈ A, v ∈ Bj ,
∃j ∈ I
⇐⇒ x ∈ A · Bj , ∃j ∈ I
[
⇐⇒ x ∈ (A · Bi )
i∈I
Lenguajes

Ejemplo. Sean A = {ab}, B1 = {a, b}, y B2 = {abb, b}


[ [
A· Bi = (A · Bi )
i∈I i∈I

[
A· Bi = A · (B1 ∪ B2 )
i∈I=2
[
A· Bi = {ab} · ({a, b} ∪ {abb, b})
i∈I=2

{ab} · ({a, b} ∪ {abb, b}) = ({ab} · ({a, b}) ∪ ({ab} · {abb, b})

De igual forma se puede demostrar que:


!
[ [
Bi · A = (Bi · A)
i∈I i∈I
Lenguajes

La concatenación no es distributiva con respecto a la intersección, es decir,


no se cumple que A · (B ∩ C) = A · B ∩ A · C. Contraejemplo: Sea A = {a, },
B = {}, C = {a} se tiene:

A · (B ∩ C) = {a, } · ∅ = ∅

Por otro lado,

A·B∩A·C = {a, } · {} ∩ {a, } · {a}


= {a, } ∩ { a2 , a} = a
Lenguajes

Potencia del lenguaje


Potencia del lenguaje Dado un lenguaje A sobre Σ y (A ⊆ Σ∗ ) y n ∈ N, se
define 
n {}, si n = 0
A =
A · An−1 , si n ≥ 1

Ejemplo. Sea A = {ab} sobre un alfabeto Σ = {a, b}, entonces:


A0 = {}
A1 = A = { ab}
A2 = A · A1 = { abab}
A3 = A · A2 = { ababab}
Cerradura de Kleene

Def. formal de Cerradura de Kleene


La cerradura de Kleene de un lenguaje A ⊆ Σ∗ es la unión de las potencias:
se denota por A∗
[ i
A∗ = A = A0 ∪ A1 ∪ A2 ∪ . . . ∪ An
i≥0

Observación: A∗ se puede describir de la siguiente manera:

A∗ = {u1 u2 . . . un : ui ∈ A, n ≥ 0}

Es el conjunto de todas las concatenaciones de la cadena A, incluyendo



la cerradura positiva se denota por A+
[ i
A+ = A = A1 ∪ A2 ∪ A3 ∪ . . . ∪ An
i≥1
Cerradura de Kleene

Observe que A∗ = A+ ∪ {} y A∗ = A+ si y solamente si  ∈ A


A+ = A∗ · A = A · A∗

A · A∗ = A · (A0 ∪ A1 ∪ A2 ∪ . . .)
= (A1 ∪ A2 ∪ A3 ∪ . . .)
= A+

Se demuestra lo mismo que A+ = A∗ · A


Cerradura de Kleene

A∗ · A∗ = A∗
1 ⇒), Sea un x ∈ A∗ · A∗ , entonces x = u · v , con u ∈ A∗ y v ∈ A∗ Por
tanto x = u · v , con u = u1 u2 . . . un , ui ∈ A, n ≥ 0 y v = v1 v2 . . . vm ,
vi ∈ A, m ≥ 0 De donde

x = u · v = u1 u2 . . . un · v1 v2 . . . vm

con ui ∈ A, vi ∈ A, por lo tanto x, es una concatenación de n + m


cadenas de A, ası́ que x ∈ A∗ .
2 ⇐) Recı́procamente, si x ∈ A∗ , entonces x = x · ε ∈ A∗ · A∗ . Esto
prueba la igualdad de los conjuntos A∗ · A∗ y A∗ .
Cerradura de Kleene

(A∗ )n = A∗ , para todo n ≥ 1


(A∗ )∗ = A∗
A+ · A+ ⊆ A+
Contraejemplo de A+ · A+ = A+ . Sea Σ = {a, b}, A = {a} se tiene que

A+ = (A1 ∪ A2 ∪ A3 ∪ . . .)
= {a} ∪ {aa} ∪ {aaa . . .}
= {an : n ≥ 1}

Por otro lado,

A+ · A+ = {a, a2 , a3 , . . .} · {a, a2 , a3 , . . .}
= {a2 , a3 , . . .}
= {an : n ≥ 2}
Cerradura de Kleene

(A∗ )+ = A∗

(A∗ )+ = (A∗ )1 ∪ (A∗ )2 ∪ (A∗ )3 ∪ . . .


= A∗ ∪ A∗ ∪ A∗ . . .
= A∗

(A+ )∗ = A∗

(A+ )∗ = (A+ )0 ∪ (A+ )1 ∪ (A+ )2 ∪ . . .


= {} ∪ A+ ∪ A+ A+ ∪ . . .
= A∗ ∪ (conjuntos contenidos en A+ )
= A∗

(A+ )+ = A+

(A+ )+ = (A+ )1 ∪ (A+ )2 ∪ (A+ )3 ∪ . . .


= (A+ )1 ∪ (conjuntos contenidos en A+ )
= A+
Operaciones claves

Operaciones claves en los lenguajes:


A ∗ ⊆ Σ∗ A + ⊆ Σ+
+ ∗
A ⊆A
{ε}∗ = {ε} = {ε}+
∅0 = {ε}
∅n = ∅, n ≥ 1
∅∗ = {ε} ∅+ = ∅
Inverso de un lenguaje

Inverso de un lenguaje
Sea A sobre Σ, se define AI como:

AI = {u I : u ∈ A}

Sean A y B lenguajes sobre Σ tal que (A, B ⊆ Σ∗ )


(A.B)I = B I .AI

x ∈ (A · B)I ⇐⇒ x = u I , donde, u ∈ A · B
⇐⇒ x = u I , donde, u = vw, v ∈ A, w ∈ B
⇐⇒ x = (vw)I , donde, v ∈ A, w ∈ B
⇐⇒ x = w I v I , donde, v ∈ A, w ∈ B
⇐⇒ x = B I AI
Propiedades del inverso de un lenguaje

Sean A y B lenguajes sobre Σ tal que (A, B ⊆ Σ∗ )


(A ∪ B)I = AI ∪ B I
(A ∩ B)I = AI ∩ B I
(AI )I = A
(A∗ )I = (AI )∗
(A+ )I = (AI )+
Lenguajes regulares

Los lenguajes regulares sobre un alfabeto Σ se definen recursivamente


como:
∅, {ε} y {a}, a ∈ Σ son lenguajes regulares.
si A y B son lenguajes regulares, también lo son:
A ∪ B (Unión)
A · B (Concatenación)
A∗ (Cerradura de Kleene)
Ejemplo 1. Dado Σ = {a, b} el lenguaje A de todas las palabras que
tienen exactamente una a: A = {b}∗ · {a} · {b}∗
Ejemplo 2. Lenguaje de todas las cadenas que comienzan con b:
B = {b} · {(a ∪ b)}∗
Ejemplo 3. Lenguaje de todas las cadenas que contienen la cadena ba:
C = {(a ∪ b)}∗ · {ba} · {(a ∪ b)}∗
Propiedades de clausura

Teorema
Si L, L1 y L2 son lenguajes regulares sobre un alfabeto Σ, también lo son:
1 L1 ∪ L2
2 L1 L2
3 L+
4 L = Σ∗ − L
5 L∗
6 L1 ∩ L2
7 L1 − L2
8 L1 4L2

Observación
Un sublenguaje (subconjunto) de un lenguaje regular no es necesariamente
regular, es decir, la familia de los lenguajes regulares no es cerrada para
subconjuntos.
Propiedades de clausura

Observación

Un lenguaje regular puede contener sublenguajes No-regulares. Sea


L = {an bn } es un sublenguaje del lenguaje regular a∗ b∗
Todo lenguaje finito es regular y la unión finita de lenguajes regulares es
regular.
La unión infinita de lenguajes no necesariamente es regular.
[ i i
L = {an bn : n ≥ 1} = {a b }
i≥1

Donde cada {ai bi } regular, pero L No lo es.


Definición formal de expresiones regulares

Las expresiones regulares sobre un alfabeto Σ se definen recursivamente


como:
∅,  y a, a ∈ Σ son expresiones regulares.
si A y B son expresiones regulares, también lo son:
A ∪ B (Unión)
A · B (Concatenación)
A∗ (Cerradura de Kleene)
Son expresiones regulares aab∗ , ab+ , (aaba∗ )+
Sea el conjunto {, aa, aba, ab2 a, ab3 a, ab4 a, ...} entonces {} ∪ ab∗ a es
una expresión regular.
Expresión regular de todas las cadenas impares sobre Σ = {a, b}

a(aa ∪ ab ∪ ba ∪ bb)∗ ∪ b(aa ∪ ab ∪ ba ∪ bb)∗


Expresiones regulares

Teorema
Sean r , s y t expresiones regulares sobre Σ, entonces:
1. r ∪ s = s ∪ r
2. r ∪ ∅ = r = ∅ ∪ r
3. r ∪ r = r
4. (r ∪ s) ∪ t = r ∪ (s ∪ t)
5. r ε = r = εr
6. r ∅ = ∅ = ∅r
7. (rs)t = r (st)
8. r (s ∪ t) = rs ∪ rt y (r ∪ s)t = rt ∪ st
9. r ∗ = r ∗∗ = r ∗ r ∗ = (ε ∪ r )∗ = r ∗ (r ∪ ε) = (r ∪ ε)r ∗ = ε ∪ rr ∗
10. (r ∪ s)∗ = (r ∗ ∪ s∗ )∗ = (r ∗ s∗ )∗ = (r ∗ s)∗ r ∗ = r ∗ (sr ∗ )∗
11. r (sr )∗ = (rs)∗ r
12. (r ∗ s)∗ = ε ∪ (r ∪ s)∗ s
13. (rs∗ )∗ = ε ∪ r (r ∪ s)∗
14. s(r ∪ ε)∗ (r ∪ ε) ∪ s = sr ∗
15. rr ∗ = r ∗ r
Ejemplos expresiones regulares

Ejemplo 1. Muestre que si r = s∗ t implica que r = sr ∪ t

r = s∗ t = (ε ∪ s+ )t ya que s∗ = ε ∪ s+
= (ε ∪ ss∗ )t
= s∗ t
εt ∪ s |{z}
r
= t ∪ sr
= sr ∪ t

Ejemplo 2. Probar que (b ∪ aa∗ b) ∪ (b ∪ aa∗ b)(a ∪ ba∗ b)∗ (a ∪ ba∗ b) y


a∗ b(a ∪ ba∗ b)∗ son equivalentes.
Ejemplos expresiones regulares

Ejemplo 3. ¿Las siguientes expresiones regulares representan el mismo


lenguaje?
(a∗ b)∗ y  ∪ (a ∪ b)∗ b
Ejemplo 4. Demostrar que r (sr )∗ = (rs)∗ r
⇒) Sea w ∈ r (sr )∗ , entonces
w = r0 (s1 r1 )(s2 r2 ) . . . (sn rn ), para n ≥ 0

w = r0 (s1 r1 )(s2 r2 ) . . . (sn rn )


w = (r0 s1 )(r1 s2 )(r2 s3 ) . . . (rn−1 sn )rn

Por lo tanto, r (sr )∗ ⊆ (rs)∗ r


⇐)
Sea w ∈ (rs)∗ r , entonces
w = (r0 s0 )(r1 s1 ) . . . (rn−1 sn−1 )rn , para n ≥ 0
Encontrar las expresiones regulares de los siguientes lenguajes

Ejemplo 5. Σ = {a, b} Lenguaje de todas las palabras que comienzan con b


y terminan con a.
b(a ∪ b)∗ a
Ejemplo 6. Σ = {a, b} Lenguaje de todas las palabras que tienen
exactamente dos a’s
b∗ ab∗ ab∗
Ejercicios resueltos de expresiones regulares

Ejemplo 7. Σ = {a, b} Lenguaje de todas las palabras que tienen un número


par de sı́mbolos (palabras de longitud par)

(aa ∪ ab ∪ ba ∪ bb)∗

Ejemplo 8. Σ = {a, b} Lenguaje de todas las palabras que tienen un número


impar de sı́mbolos (palabras de longitud impar)

a(aa ∪ ab ∪ ba ∪ bb)∗ ∪ b(aa ∪ ab ∪ ba ∪ bb)∗

Ejemplo 9. Σ = {a, b} Lenguaje de todas las palabras que tienen un número


par de a’s.
b∗ (ab∗ a)∗ b∗
Ejercicios resueltos de expresiones regulares

Ejemplo 10. Sobre Σ = {0, 1} lenguaje de todas las cadenas que tienen
exactamente dos ceros:
1∗ 01∗ 01∗
Ejemplo 11. Sobre Σ = {0, 1} lenguaje de todas las cadenas cuyo
penúltimo sı́mbolo, de izquierda a derecha, es un 0.

(0 ∪ 1)∗ 0(0 ∪ 1)
Expresiones regulares en la computación

Las expresiones regulares sirven para la construcción de analizadores


léxicos.
http://regexpal.com/ es un testeador de expresiones regulares en
java.

Representa palabras que comienzan por una letra mayúscula seguida de un


espacio en blanco y de dos letras mayúsculas. Ejemplo, reconocerı́a Ithaca
NY. Por ejemplo, Palo Alto CA no la reconocerı́a.
Contenido

1 Lenguajes

2 Autómatas finitos

3 Gramáticas
Introducción a los autómatas finitos
Autómatas finitos

Son máquinas abstractas que procesan cadenas, las cuales son aceptadas
o rechazadas.

El autómata posee unidad de control que inicialmente escanea o lee la


casilla desde el extremo izquierdo de la cinta. Tiene unos estados o
configuraciones internas.
Función de transición

Sea un autómata M = (Q, Σ, q0 , T , δ)


Lenguaje aceptado por un autómata
Autómatas finitos (FSAs: Finite State-Automata)

Los autómatas finitos se dividen en autómatas finitos deterministas (AFD)


(es función) y en autómatas finitos no deterministas (AFN)(es una relación).

Autómata finito determinista


Sea M = (Q, Σ, q0 , T , δ) un AFD entonces:
Σ: es el alfabeto de entrada.
Q: es el conjunto de estados
q0 :Estado inicial
T : Conjunto de estados finales.
δ : Q × Σ −→ Q determina un único estado siguiente para el par δ(qi , γ)
correspondiente al estado actual y la entrada.

Un AFD puede ser representado por un grafo dirigido y etiquetado.


Ejemplos autómatas finitos deterministas

Ejemplo 1. Diseñar el AFD sobre Σ = {a, b} que reconozca el lenguaje


L = a∗ = {ε, a, a2 , a3 , . . .}
Ejemplos finitos deterministas

Ejemplo 2. Diseñar el AFD sobre Σ = {a, b} que reconozca el lenguaje


L = a+ = {a, a2 , a3 , . . .}
Ejemplos autómatas finitos deterministas

Ejemplo 3. Diseñar el AFD sobre Σ = {a, b} que reconozca el lenguaje de


todas las cadenas que tienen un número par de sı́mbolos

Ejemplo 4. AFD que reconoce a+ b+


Ejemplos autómatas finitos deterministas

Ejemplo 5. El diagrama y tabla de transición en cierta forma determinan si


es un autómata finito determinista o no determinista.
Sea Σ = {a, b}, Q = {q0 , q1 , q2 }
q0 : estado inicial
T = {q0 , q2 } estados finales o de aceptación.

Es importante anotar que en la tabla de transición por cada pareja (qi , γ) hay
un sólo estado qj por eso δ es una función de transición.
el lenguaje que reconoce este AFD es:
a∗ (b(a + ba + bb)∗ b) + a∗
Ahora como el estado inicial es un estado final este AFD reconoce ε
Ejemplos autómatas finitos deterministas

Ejemplo 6. Diseñar el AF sobre Σ = {0, 1} que reconozca en binario el


lenguaje de todos los múltiplos de 2.
Autómatas finitos No determinı́sticos

Autómatas finitos No determinı́sticos


Sea M = (Q, Σ, q0 , T , 4) un AFN entonces:
Σ: es el alfabeto de entrada.
Q: es el conjunto de estados
q0 :Estado inicial
T : Conjunto de estados finales.
4: es una relación tal que:

(Q × Σ) → 2Q

Donde 2Q denota el conjunto potencia de Q o el conjunto de todos los


subconjuntos de Q.
2Q = {A|A ⊆ Q}
Ejemplos Autómatas finitos No determinı́sticos

Ejemplo 1. Diseñar el AFN sobre Σ = {a, b} que reconozca el lenguaje


regular a∗ b ∪ ab∗
Ejemplos Autómatas finitos No determinı́sticos

Ejemplo 2. Diseñar el AFN sobre Σ = {a, b} que reconozca el lenguaje


(ab ∪ aba)∗
Ejemplos Autómatas finitos No determinı́sticos

Ejemplo 3. Diseñar el AF sobre Σ = {0, 1} que reconozca el lenguaje de


todas las cadenas que terminan en 01
Ejemplos Autómatas finitos No determinı́sticos

Ejemplo 4. Obetener la expresión regular del siguiente AFN sobre


Σ = {a, b}.

(a∗ b∗ )∗ (aa ∪ bb)(a∗ b∗ )∗


Equivalencia de AFN y AFD

Teorema
Sea M = (Q, Σ, q0 , T , 4) un AFN. Entonces existe un AFD
M 0 = (Q 0 , Σ0 , q00 , T 0 , δ) tal que L(M) = L(M 0 ).
El conjunto q0 se corresponde con q00
El conjunto de estados finales T 0 de Q 0 se corresponde con los
conjuntos de estados de Q que contienen un estado de T
El conjunto de estados de Q 0 se corresponde con el conjunto de estados
de Q que se vaya formando mediante el análisis de una cadena sobre M
Equivalencia entre autómatas

Autómatas equivalentes
Dos AFD son equivalentes M1 y M2 son equivalentes si L(M1 ) = L(M2 ).
P
Sean M1 y M2 sobre el alfabeto = {a},

L(M1 ) = L(M2 ) = a∗
Ejemplos equivalencia de AFN y AFD

Ejemplo 1. Consideremos el AFN M que acepta a ∪ (ab)+

Para este AFN se tiene:


4(q0 , a) = {q1 , q2 } 4(q0 , b) = ∅
4({q1 , q2 }, a) = ∅ 4({q1 , q2 }, b) = {q3 }
4(∅, b) = 4(∅, b) = ∅ 4(q3 , a) = {q2 }
4(q3 , b) = ∅ 4(q2 , a) = ∅
4(q2 , b) = {q3 }
Ejemplos equivalencia de AFN y AFD

Entonces se verifica que la regla de transición es una función. Por tanto,


M 0 = (Q 0 , Σ0 , q00 , T 0 , δ) donde:
Q0 = {∅, {q0 }, {q2 }, {q3 }, {q1 , q2 }}
0
Σ = Σ
s0 = {q0 }
0
T = {{q3 }, {q1 , q2 }}
y δ viene dada por la siguiente tabla:
Ejemplos equivalencia de AFN y AFD

Ejemplo 2. Consideremos el AFN M que acepta (0 ∪ 1)∗ 0(0 ∪ 1)

Caso desfavorable para la construcción de subconjuntos

Crecimiento exponencial del número de estados para el AFD.


Intersección entre lenguajes regulares

Teorema
Si L1 y L2 son lenguajes regulares, también lo es L1 ∩ L2 .

Sean L1 = L(M1 ) y L2 = L(M2 ) donde: M1 = (Q1 , Σ1 , q1 , T1 , δ1 ) y


M2 = (Q2 , Σ2 , q2 , T2 , δ2 ) Entonces construimos:

M = (Q1 × Q2 , Σ1 ∪ Σ2 , (q1 , q2 ), T1 × T2 , δ)

donde

δ : Q1 × Q2 × Σ → Q1 × Q2
δ((qi , qj ), a) = (δ1 (qi , a), δ2 (qj , a))

Esta función satisface:


L(M) = L(M1 ) ∩ L(M2 )
Ejemplo intersección de lenguajes

Ejemplo. Construir el AFD que acepte el lenguaje L de todas las palabras


sobre Σ = {a, b} que tienen un número par de a’s y un número par de b’s.

Entonces el lenguaje L(M) = L(M1 ) ∩ L(M2 ) tiene cuatro estados:


Q1 × Q2 = {(q1 , q2 ), (q1 , q4 ), (q3 , q2 ), (q3 , q2 )}
T1 × T2 = {(q1 , q2 )}
Ejemplo intersección de lenguajes

Entonces δ se define como:

δ((q1 , q2 ), a) = (δ1 (q1 , a), δ2 (q2 , a)) = (q3 , q2 )


δ((q1 , q2 ), b) = (δ1 (q1 , b), δ2 (q2 , b)) = (q1 , q4 )
δ((q1 , q4 ), a) = (δ1 (q1 , a), δ2 (q4 , a)) = (q3 , q4 )
δ((q1 , q4 ), b) = (δ1 (q1 , b), δ2 (q4 , b)) = (q1 , q2 )
δ((q3 , q2 ), a) = (δ1 (q3 , a), δ2 (q2 , a)) = (q1 , q2 )
δ((q3 , q2 ), b) = (δ1 (q3 , b), δ2 (q2 , b)) = (q3 , q4 )
δ((q3 , q4 ), a) = (δ1 (q3 , a), δ2 (q4 , a)) = (q1 , q4 )
δ((q3 , q4 ), b) = (δ1 (q3 , b), δ2 (q4 , b)) = (q3 , q2 )
Toerema de Kleene

Autómatas con ε-transiciones


Autómatas con ε-transiciones: Un autómata con ε-transiciones es un
AFN M = (Q, Σ, q0 , T , 4) en el que la relación de transición está definida
ası́:
4 : Q × (Σ ∪ ε) −→ 2Q
La ε-transición permite al autómata cambiar internamente de estado sin
consumir el sı́mbolo leı́do sobre la cinta.
Donde 2Q denota el conjunto potencia de Q o el conjunto de todos los
subconjuntos de Q.
2Q = {A|A ⊆ Q}
Ejemplos

Ejemplo 1. Se puede representar el lenguaje de la expresión regular a∗ sin


necesidad de colocar el estado inicial como estado final.
Ejemplos

Ejemplo 2. Sea el siguiente AFN-ε

La ε-transición en el AFN permite que se reconozcan cadenas como:


w=aaab
w=abbbbaaa
w=a
w=b
Expresión regular del autómata
a∗ b ∪ ab∗ a∗
Ejemplos

Ejemplo 3. Construir un AFN-ε que reconozca sobre Σ = {a, b, c}, el


lenguaje L = a∗ b∗ c ∗

El siguiente AFN reconoce el mismo lenguaje que reconoce el AFN-ε


anterior.
Teorema de Kleene

Teorema
Teorema de Kleene. Un lenguaje regular si y sólo si es aceptado por un
autómata finito (AFD o AFN o AFN-ε)

Construcción de autómatas finitos a partir de expresiones regulares.


Construcción de expresiones regulares a partir de autómatas:
1 Lema de Arden (Ecuaciones de Lenguaje)
2 Conversión de AFN a expresiones regulares por eliminación de estados.
Autómatas finitos y lenguajes regulares

Teorema
Dado un AFN-ε M = (Q, Σ, q0 , T , 4), se puede construir un AFN M 0
equivalente a M, es decir L(M) = L(M 0 ).

Teorema
Un lenguaje regular si y sólo si es aceptado por un autómata finito (AFD o
AFN o AFN-ε)
Autómatas finitos y lenguajes regulares

Teorema
Para toda expresión regular R se puede construir un AFN- M tal que
L(R) = L(M).

Paso Básico
EL autómata

acepta el lenguaje vacı́o ∅


Autómatas finitos y lenguajes regulares

EL autómata

acepta el lenguaje {}


EL autómata

acepta el lenguaje {a}


Autómatas finitos y lenguajes regulares

PASO INDUCTIVO
1. Existe un autómata que acepta R ∪ S

Sean M1 = (Q1 , Σ1 , s1 , T1 , 41 ) y M2 = (Q2 , Σ2 , s2 , T2 , 42 ) para el nuevo


M = (Q, Σ, s, T , 4) tenemos que:
1 Σ = Σ1 ∪ Σ2
2 En T se agrega un estado s0 si y sólo si

4 = 41 ∪ 42 ∪ {(s, , s1 ), (s, , s2 )} ∪
{(T1 , , s0 ), (T2 , , s0 )}

s0 es un estado final NUEVO.


3 Q = Q1 ∪ Q2 ∪ {s} ∪ {s0 } donde s es el nuevo estado inicial.
Autómatas finitos y lenguajes regulares

Por ejemplo se construye ab ∪ ba.

Ejemplo. Sobre Σ = {a, b} el lenguaje de todas las palabras sobre Σ que


tienen un n
Autómatas finitos y lenguajes regulares

2. Autómata que acepta R · S

Sean M1 = (Q1 , Σ1 , s1 , T1 , 41 ) y M2 = (Q2 , Σ2 , s2 , T2 , 42 ) para el nuevo AFN


M = (Q, Σ, s, T , 4) que acepta L(M1 ) · L(M2 ) tenemos que:
1 Q = Q1 ∪ Q2
2 s1 = s
3 T = T2
4 = 41 ∪ 42 ∪ (T1 × {} × s2)
Autómatas finitos y lenguajes regulares

3. Autómata que reconoce R ∗

Sean M1 = (Q1 , Σ1 , s1 , T1 , 41 ) entonces el nuevo AFN M = (Q, Σ, s, T , 4)


que acepta L(M) = (L(M1 ))∗ viene dado por
1 Q = Q1 ∪ {s} ∪ {s0 }, donde s0 es un nuevo estado final.
2 T = {s0 }
3 4 = 41 ∪ {(s, , s1 ), (s, , s0 )} ∪ (T1 × {} × s0 ) ∪ (T1 × {} × s1 )
Ecuaciones de lenguaje

Ecuacion del lenguaje


Sea Σ un alfabeto y sean E y A subconjuntos de Σ∗ , entonces la ecuación
del lenguaje X = E ∪ A · X admite la solición X = A∗ · E cualquier otra
/ A, X = A∗ · E es la única
solución Y deberá contener A · X , además  ∈
solución.
Ejemplos ecuaciones de lenguaje

Ejemplo 1. Encontrar la expresión del siguiente AFD.

Entones el sistema de ecuaciones a resolver:

x0 = ax1
x1 = ax2 + bx4
x2 = ax3 + bx4
x3 = ax3 + bx4 + 
x4 = bx4 + 
Ejemplos ecuaciones de lenguaje

Ejemplo 2. Encontrar la expresión regular del siguiente AFD usando el lema


del Arden:

El siguiente es el sistema de ecuaciones a resolver:

x0 = ax0 + bx1 + 
x1 = ax1 + bx2
x2 = (a ∪ b)x1 + 
Ecuaciones de lenguaje

Teorema
Sean n ≥ 2 considere el sistema de ecuaciones cuyas incognitas
x1 , x2 , . . . , xn dado por:

x1 = E1 ∪ A11 x1 ∪ A12 x2 ∪ . . . ∪ A1,n xn


x2 = E2 ∪ A21 x1 ∪ A22 x2 ∪ . . . ∪ A2,n xn
..
.
xn−1 = En−1 ∪ A(n−1)1 x1 ∪ . . . ∪ A(n−1),n xn
xn = En ∪ An1 x1 ∪ An2 x2 ∪ . . . ∪ An,n xn

Entonces el sistema tiene una única solución:


En ∀i, j ∈ {1, . . . , n},  ∈
/ Ai
Ecuaciones de lenguaje

Entonces el nuevo sistema se obtiene hasta n − 1:

x1 = b1 ∪ A
E b 11 x1 ∪ A
b 12 x2 ∪ . . . ∪ A
b 1,(n−1) xn−1

x2 = b2 ∪ A
E b 21 x1 ∪ A
b 22 x2 ∪ . . . ∪ A
b 2,(n−1) xn−1
..
.
xn−1 = bn−1 ∪ A
E b (n−1)1 x1 ∪ . . . ∪ A
b (n−1),(n−1) xn−1

Entonces E
bi y A
b ij se definen como:

E
bi = Ei ∪ (Ain A∗nn En ), i = 1, . . . , n − 1
A
b ij = Aij ∪ (Ain A∗nn Anj ), ∀i,j = 1, . . . , n − 1

Donde:

∅ si qi ∈
/F
Ei =
 si qi ∈ F
Ejemplo ecuaciones de lenguaje

Ejemplo 1. Obtener la expresión regular del siguiente AFD usando


ecuaciones del lenguaje y la solución única.

El sistema de ecuaciones inicial es:

x1 = ax1 + bx2
x2 = bx1 + ax2 + 
Ejemplo ecuaciones de lenguaje

Se aplica el teorema de solución de ecuaciones:

x1 = E
b1 + A
b 11 x1

Se obtiene E
b1

E
b1 = E1 + (A12 A∗22 E2 )
E
b1 = ∅ + (b · a∗ · )
E
b1 = ba∗

Se obtiene A
b 11

A
b 11 = A11 + (A12 A∗22 A21 )
A
b 11 = a + (b · a∗ · b)
A
b 11 = a + ba∗ b
Ejemplo ecuaciones de lenguaje

Reemplazando E
b1 y A
b 11 en x1

x1 = E
b1 + A
b 11 x1
x1 = ba + (a + ba∗ b)x1

Aplicando solución única se tiene:

x1 = (a + ba∗ b)∗ ba∗


Sistema de ecuaciones por reducción de variables

x1 = b1 ∪ A
E b 11 x1 ∪ A
b 12 x2 ∪ A
b 13 x3
x2 = E2 ∪ A21 x1 ∪ A22 x2 ∪ A23 x3
b b b b
x3 = b3 ∪ A
E b 31 x1 ∪ A
b 32 x2 ∪ A
b 33 x3
Contenido

1 Lenguajes

2 Autómatas finitos

3 Gramáticas
LENGUAJES Y GRAMATICAS

Según Chomsky los tipos de gramáticas se clasifican ası́:


Gramáticas

Gramáticas Regulares (Tipo 3)


Una gramática regular G es una 4-tupla G = (N, Σ, S, P) que consiste de un
conjunto N de no terminales, un alfabeto Σ, un sı́mbolo inicial S y de un
conjunto de producciones P. Las reglas son de la forma A → w, donde
A ∈ N y w es una cadena sobre Σ ∪ N que satisface lo siguiente:

1 w contiene un no terminal como máximo.


2 Si w contiene un no terminal, entonces es el sı́mbolo que está en el
extremo derecho de w.
3 El conjunto de reglas P se define ası́:

P ⊆ N × Σ∗ (N ∪ ) o P ⊆ N × (N ∪ )Σ∗
Definición de gramática regular por la derecha

Gramáticas regulares
Sobre
G = (N, Σ, S, P)
Una gramática es regular por la derecha si sus producciones son de la forma:

A −→ wB, w ∈ ∗ , B ∈ N
 P 
{ }
A −→ ε

Ejemplo Considere la siguiente gramática regular G = (N, Σ, S, P), que


genera a∗ , donde Σ = {a, b}, N = {S, A}
P : S → aA | ε
A → aA
Ejemplo. Sea la siguiente gramática regular G = (N, Σ, S, P) que genera el
lenguaje de la expresión regular (a ∪ b)∗
Σ = {a, b}
N = {S, A}
P : S −→ aS | bS | ε
Gramáticas regulares

Ejemplo Considere la siguiente gramática regular G = (N, Σ, S, P), que


genera (a ∪ b)+ , donde Σ={a,b}, N={S,A }
P : S → aS | bS | a | b
Ejemplo Considere la siguiente gramática regular G = (N, Σ, S, P), que
genera a+ b+ , donde Σ={a,b}, N={S,A }
P : S → aS | aA
A → bA | b
Ejemplo Considere la siguiente gramática regular G = (N, Σ, S, P), que
genera a∗ b∗ , donde Σ={a,b}, N={S,A }
P : S → aS | bA | ε
A → bA | ε
Gramáticas independientes del contexto

Gramáticas tipo 2
Una gramática independiente del contexto G = (N, Σ, S, P) consiste de un
conjunto N de no terminales, un alfabeto Σ, un sı́mbolo inicial S y de un
conjunto de producciones P.

Definición
Sea G = (N, Σ, S, P) una gramática independiente del contexto. El lenguaje
generado por G (o el lenguaje de G) denotado por L(G), es el conjunto de
todas las cadenas de terminales que se derivan del estado inicial S. en otras
palabras:

L(G) = {w ∈ Σ∗ /S ⇒∗ w}
P ⊆ N × (N ∪ Σ)∗
Ejemplo de gramática tipo 2

Sea G = (N, Σ, S, P) una gramática con Σ = {0, 1} el conjunto N = {S} y P


el conjunto de producciones:

S −→ 0S1
S −→ ε

Ejemplo. Una GIC que genera el lenguaje de los palı́ndromes sobre


Σ = {a, b}

S −→ aSa | bSb | a | b | ε

Ejemplo. Una GIC que genera el siguiente lenguaje sobre Σ = {a, b} Sea

L = {an bm |n ≤ m ≤ 2n}

S −→ aSb | aSbb | ε
GICs especiales

1 El lenguaje de todas las cadenas de paréntesis anidados y equilibrados,


por ejemplo:
(())(()), entonces la gramática serı́a:

S −→ (S)S | ε

2 Sea T = {0, 1, (, ), +, ∗, ∅, ε}. T es el conjunto de sı́mbolos usados para


definir el lenguaje de las expresiones regulares sobre Σ = {0, 1}. Se
puede diseñar un GIC que genere las expresiones regulares.

S −→ S + S | SS | S ∗ | (S) | 0 | 1 | ∅ | ε
Gramáticas no restringidas

Sea una 4-tupla G = (N, Σ, S, P) que consiste de un conjunto N de no


terminales, un alfabeto Σ, un sı́mbolo inicial S y de un conjunto de
producciones P.
N es el alfabeto de sı́mbolos no terminales
Σ al alfabeto tal que N ∩ Σ = ∅
S ∈ N es el sı́mbolo inicial
P es el conjunto de reglas de producciones de la forma α → β, donde
α ∈ (N ∪ Σ)+ y β ∈ (N ∪ Σ)∗ , es decir

P ⊂ (N ∪ Σ)+ × (N ∪ Σ)∗
Gramáticas no restringidas (Gramáticas de tipo 0 y 1)

Ejemplo Sea G = (N, Σ, S, P) una gramática con Σ = {0, 1, 2} el conjunto


N = {S, A, B} y P el conjunto de producciones:

El lenguaje que genera esta gramática dependiente del contexto es:

L(G) = {0n 1n 2n /n = 0, 1, 2, .....}

Sea w=001122 una cadena que puede ser reconocida por la gramática y que
además pertenece al lenguaje.
Tipos de gramáticas

la familia de los lenguajes de tipo i contiene a la familia de tipo i + 1.


GR ⊆ GIC ⊆ GDC ⊆ GEF
Arboles de derivación

Ambigüedad
Una gramática se dice que es ambigua si hay dos o más árboles de
derivación distintos para la misma cadena. una gramática en la cual, para
toda cadena w, todas las derivaciones de w tienen el mismo árbol de
derivación, es no ambigua.
Ejemplos arboles de derivación

Ejemplo 2. Consideremos la siguiente gramática:


S −→ SbS | ScS | a
y se la cadena w = abaca y sus derivaciones:
S ⇒ SbS ⇒ SbScS ⇒ SbSca ⇒ abaca

S ⇒ ScS ⇒ SbScS ⇒ abScS ⇒ abacS ⇒ abaca


La forma de Backus-Naur

Forma de Backus-Naur
La forma de Backus-Naur se emplea para especificar reglas sintácticas de
muchos lenguajes de programación y de lenguaje natural: En lugar de utilizar
el sı́mbolo −→ usamos ::= y colocamos los sı́mbolos no terminales entre <>.

La forma BNF se usa frecuentemente para especificar la sintaxis de


lenguajes de programación, como Java y LISP; lenguajes de bases de datos,
como SQL, y lenguajes de marcado como XML.
La forma de Backus-Naur

Ejemplo 1. sea la siguiente GIC:


O −→ SN SV
SN −→ articulo sustantivo
SV −→ verbo sustantivo
articulo −→ el
verbo −→ come
sustantivo −→ perro | salchicha
La forma Backus-Naur es:
< O >::=< SN >< SV >
< SN >::=< articulo >< sustantivo >
< SV >::=< verbo >< sustantivo >
< articulo >::= el
< verbo >::= come
< sustantivo >::= perro | salchicha
La forma de Backus-Naur

Ejemplo 2. Sea la siguiente gramática:


A −→ Aa | a | AB
La forma Backus-Naur es:
< A >::=< A > a | a |< A >< B >
Ejemplo 3. La producción de enteros son signo en notación decimal. (Un
entero con signo es un natural precedido por un signo más o un signo
menos). La forma Backus-Naur para la gramática que produce los enteros
con signo es:
< entero con signo >::=<signo><entero>
<signo >::= + | −
< entero >::=< dı́gito>|< dı́gito >< entero>
< dı́gito > ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

You might also like