2.lenguajes Regulares y Expresiones Regulares
2.lenguajes Regulares y Expresiones Regulares
2.lenguajes Regulares y Expresiones Regulares
Lenguajes regulares
Luis M. Estrada
[email protected]
20 de febrero de 2019
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Agenda
• Lenguajes Regulares
• Expresiones Regulares
Lenguajes Regulares
Definición
Un lenguaje L ⊆ Σ∗ es regular si se puede generar a
partir de los lenguajes básicos ∅, {λ}, {σ} (donde
σ ∈ Σ) mediante las operaciones de unión,
concatenación y cerradura.
Definición recursiva
• ∅, {λ} son lenguajes regulares.
• Si σ ∈ Σ entonces {σ} es regular.
• Si L, L1 , L2 son regulares entonces L1 ∪ L2 ,
L1 · L2 y L∗ son regulares.
• Son todos.
Luis M. [email protected]—Short title@—20 de febrero de 2019@
3/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Ejemplos
Cualquier lenguaje finito es regular.
L = L1 ∪ L2 ∪ ... ∪ Ln
Ejemplos
Ejemplos
Sobre el alfabeto Σ = {a, b} tenemos los siguientes
lenguajes regulares infinitos:
Importante
No todo lenguaje infinito es regular
Expresiones regulares
Expresiones regulares
Expresiones regulares
Ejemplos
Algunas ER con el alfabeto {a, b, c} son:
• λ
• a
• b
• c
• a+b
• a·c
• b∗
• (a + b)∗
1 ()
2 ∗ cerradura.
3 · concatenación.
4 + unión
ER y Lenguajes asociados
• L(λ) = {λ}
• L(σ) = {σ}
• L(α · β) = L(α)L(β)
• L(α∗ ) = L(α)∗
Ejemplos
•L(λ) = {λ}
• L(a) = {a}
• L(b) = {b}
• L(c) = {c}
Ejemplo
Ejemplo
Solución: abc
Ejemplo
Solución: abc
Ejemplo
Solución: abc(de)
Ejemplo
Solución: abc(de + λ)
Ejemplo
Solución: abc(de(fg + λ) + λ)
Ejemplo
L1 = {w ∈ Σ∗ | w empieza con a}
Ejemplo
L1 = {w ∈ Σ∗ | w empieza con a}
Solución:
L1 = {a}({a} ∪ {b})∗
Ejemplo
L1 = {w ∈ Σ∗ | w empieza con a}
Solución:
Ejemplo
Ejemplo
Solución:
L2 = {a}∗ {b}{a}∗
Ejemplo
Solución:
Ejemplo
Ejemplo
Solución:
Ejemplo
Solución:
Ejemplo
Ejemplo
Solución:
Ejemplo
Solución:
Ejemplo
Ejemplo
Solución:
Ejemplo
Solución:
Ejemplo
Ejemplo
Solución:
((a + b)∗ a(a + b)∗ b(a + b)∗ ) + ((a + b)∗ b(a + b)∗ a(a + b)∗ )
Ejemplos
Ejercicio
Considere el alfabeto binario. Damos expresiones regulares
para los siguientes lenguajes.
1 Cadenas 0 o 11 o 101
2 Cadenas solo con ceros
3 Cadenas binarias
4 Cadenas binarias excepto la vacı́a
5 Cadenas que empiezan con 1
6 Cadenas que empiezan y terminan con 1
7 Contiene al menos tres 1’s
Luis M. [email protected]—Short title@—20 de febrero de 2019@
39/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Ejercicio
Soluciones:
1 Cadenas 0 o 11 o 101: 0 + 11 + 101
2 Cadenas solo con ceros: 0∗
3 Cadenas binarias: (0 + 1)∗
4 Cadenas binarias excepto la vacı́a:
(0 + 1)(0 + 1)∗
5 Cadenas que empiezan con 1: 1(0 + 1)∗
6 Cadenas que empiezan y terminan con 1:
1(0 + 1)∗ 1
7 Contiene al menos tres 1’s:
(0 + 1)∗ 1(0 + 1)∗ 1(0 + 1)∗ 1(0 + 1)∗
Luis M. [email protected]—Short title@—20 de febrero de 2019@
40/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Equivalencia de ER
• Asociatividad: (α + β) + γ = α + (β + γ)
• Asociatividad: (α + β) + γ = α + (β + γ)
• Conmutatividad: α + β = β + α
• Asociatividad: (α + β) + γ = α + (β + γ)
• Conmutatividad: α + β = β + α
• Elemento neutro (∅): α + ∅ = α
• Asociatividad: (α + β) + γ = α + (β + γ)
• Conmutatividad: α + β = β + α
• Elemento neutro (∅): α + ∅ = α
• Idempotencia: α + α = α
• Asociatividad: (α + β) + γ = α + (β + γ)
• Conmutatividad: α + β = β + α
• Elemento neutro (∅): α + ∅ = α
• Idempotencia: α + α = α
• Si L(α) ⊆ L(β) entonces α + β = β
• λ∗ = λ
• λ∗ = λ
• ∅∗ = λ
• λ∗ = λ
• ∅∗ = λ
• α∗ α∗ = α∗
• λ∗ = λ
• ∅∗ = λ
• α∗ α∗ = α∗
• α∗ α = αα∗
• λ∗ = λ
• ∅∗ = λ
• α∗ α∗ = α∗
• α∗ α = αα∗
• (α∗ )∗ = α∗
• α∗ = λ + αα∗
• λ∗ = λ
• ∅∗ = λ
• α∗ α∗ = α∗
• α∗ α = αα∗
• (α∗ )∗ = α∗
• λ∗ = λ
• ∅∗ = λ
• α∗ α∗ = α∗
• α∗ α = αα∗
• (α∗ )∗ = α∗
• (α∗ + β ∗ )∗ = (α∗ β ∗ )∗ = (α + β)∗
Simplificación de ER
Simplificación de ER
Simplificación de ER
Simplificación de ER
Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗
Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗
Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗
Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗
Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗
Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗
Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗
Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗
Simplificación de ER
Demostrar que a∗ (b + ab ∗ ) = b + aa∗ b ∗
• () Agrupar y capturar
• $1, $2 Capturar subexpresiones después del
match
Aplicaciones de expresiones
regulares
• Búsqueda y sustitución en editores de texto (vi,
emacs, etc.)
• Caza de patrones (pattern matching) y
procesamiento de textos y minerı́a de datos
(grep, sed, awk, perl, etc.)
• Compiladores (fase de análisis léxico):
fragmentación del programa en elementos
léxicos (palabras reservadas, identificadores,
tipos de datos).
Luis M. [email protected]—Short title@—20 de febrero de 2019@
77/80
fi-unam l e n g u a j e s f o r m a l e s y a u t ó m a t a s
Aplicación en diseño de
Compiladores
Las expresiones regulares son una herramienta muy
útil en la construcción de compiladores. Objetos
elementales, llamados tokens, tales como nombres
de variables o constantes pueden describirse usando
ER.
Por ejemplo una ER para constantes numéricas:
−?([0 − 9]+ |[0 − 9]+ .[0 − 9]∗ |[0 − 9]∗ .[0 − 9]+ )