Вы находитесь на странице: 1из 45

Sistemas

Operativos I
Horario Días Aulas

Lunes
09:00 – 11:00 302
Jueves

EXPRESIONES
REGULARES
Hugo Javier Molina Barrero
hugojmolinab@hotmail.com
Unidad 5: EXPRESIONES REGULARES

Alfabeto: • un conjunto finito no vacío A.

Letra: • un elemento de un alfabeto.

Palabra: • una sucesión de letras.


Longitud de una
palabra: • |x| = número de letras.

Palabra vacía: • palabra de longitud 0.

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Unidad 5: EXPRESIONES REGULARES

Universo del
• conjunto de todas las palabras sobre
discurso o un alfabeto.
lenguaje • Conjunto infinito, numerable, W(A).
universal:

• Propiedades (cerrada sobre W(A),


Concatenación asociativa, elemento neutro,
de palabras. monoide libre no abeliano,
|xy|=|x|+|y|.

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Unidad 5: EXPRESIONES REGULARES

Un monoide (A,⊚) es una estructura algebraica en la que A es


un conjunto y ⊚ es una operación binaria interna en A :
• ⊚∶ x ⟶
• a ,b ⟼ c a ⊚ b
• Cumple las propiedades:
• Operación Interna,
• Asociativa y
• Elemento Neutro.

Los grupos abelianos libres tienen propiedades que los


asemejan a los espacios vectoriales y permiten que en general
se entiende como un cociente.

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Unidad 5: EXPRESIONES REGULARES

Universo del discurso o • conjunto de todas las palabras sobre un alfabeto.


lenguaje universal: • Conjunto infinito, numerable, W(A).

Concatenación de • Propiedades (cerrada sobre W(A), asociativa, elemento neutro,


monoide libre no abeliano, Cabeza y cola de una palabra.
palabras. • |xy|=|x|+|y|.

Potencia de una • |x*i|=i.|x|.


palabra:

Reflexión de palabras: • |x*-1|=|x|.

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Unidad 5: EXPRESIONES REGULARES

Expresiones Regulares
• es una expresión regular que representa el conjunto vacío.
• les una expresión regular que representa el conjunto con un único
elemento que es la secuencia vacía
• un string s es una expresión regular que representa un conjunto que
solo contiene s. Para evitar confusiones, los metacaracteres que
contenga s van entre comillas (‘|’,’-’,...).
• V es el conjunto de todos los caracteres (vocabulario).

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Unidad 5: EXPRESIONES REGULARES

Definiciones
Sea Σ un alfabeto

• 1) ε Es la expresión regular cuyo lenguaje es:


L(ε)={ε}

• 2) Si a∈Σ, a es la expresión regular cuyo lenguaje es:


L(a)={a}

• 3) Sean r,s expresiones regulares con lenguajes L(r) y L(s)


(r)|(s) es la expresión regular cuyo lenguaje es L(r) ∪ L(s)
(r)(s) es la expresión regular cuyo lenguaje es L(r) L(s)
(r)* es la expresión regular cuyo lenguaje es (L(r))*

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Unidad 5: EXPRESIONES REGULARES

Convenios de notación útiles:


hSi r representa L(r)

(r)+ representa L(r)+ una ó más veces r

Se cumple que:
r* = ξ|r+
r+ = rr*

(r)? representa {ξ}= L(r) 0 ó 1 vez

Se cumple que
r? = r| ξ

1-12
Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES
Unidad 5: EXPRESIONES REGULARES

hFormas abreviadas
[....] expresa elección en un conjunto de elementos del
alfabeto
[aeiou] = a|e|i|o|u

[0-9] = 0|1|2|3|4|5|6|7|8|9
- expresa subrango

[+-]?[0-9]+ son las constantes enteras

Ejemplos:

[a-zA-Z][_0-9a-zA-Z]* identificadores

1-13
Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES
Unidad 5: EXPRESIONES REGULARES

hFormas abreviadas
[^ ...] expresa el complementario de un conjunto de elementos
del alfabeto

[^aeiou0-9] = símbolos distintos de vocal


o dígito

. representa un símbolo cualquiera del alfabeto

.[0-9] cualquier símbolo seguido de un dígito

1-14
Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES
Unidad 5: EXPRESIONES REGULARES

r ejemplos de cadenas de L(r)

/a*/  a, aa, aaaa ...


/a+/ a, aa, aaa ...
/[ab]+/ a, b, ab, aa, ba, bb ...
/beg.n/ begin, beg’n, begun ...
/a.*a/ abracadabra ...

1-20
Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES
Unidad 5: EXPRESIONES REGULARES

Sea Σ={a,b}

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Unidad 5: EXPRESIONES REGULARES

Sea Σ={0,1}

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Unidad 5: EXPRESIONES REGULARES

Ejemplos

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Unidad 5: EXPRESIONES REGULARES

Dado el siguiente alfabeto Σ={ a, b}, sea el lenguaje L, formado por las
palabras constituidas por un número par de símbolos a (el 0 es par), pero que
no contienen dos símbolos a consecutivos en ningún lugar de la palabra.

Palabras correctas: Palabras incorrectas:

ε, bbb, aba, baba,


ab, aab, baab, abababb
bbbbbbabababa, abbbabbbb

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Unidad 5: EXPRESIONES REGULARES

Dado el alfabeto Σ={ 0, 1, ‘.’ }, sea el lenguaje L = {v’.’w | v,


w  {0,1}+ ; en donde |v |=|w | y w no puede finalizar en
dos o mas ceros}

Palabras correctas: Palabras Incorrectas:

0.0, 1.0, 000.010, 010100 ., 10.00, 11110, 1100.11,


.000010, 0101.1111 0.11, 11000.11000

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES
Unidad 5: EXPRESIONES REGULARES

Ejemplos de Expresiones Regulares


• dígito d=0|1|2|3|4|5|6|7|8|9
• entero_sin_signo=d+
• entero=(+|-|l)d+
• real=d+.d+(l|e(+|-|l) d+)
• letra l=a|...|z|A...|Z
• identificador=l(l|d)*
• string=“(V-”)*”

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Unidad 5: EXPRESIONES REGULARES

Ejercicios
- e(ab|ac)d* - (vocal)(numero par)
- a(a*b*|d)cd - a(consonante)(vocal)*(3|6|9)
- a(b|c|d)bcd - (numero entero) / (numero real)
- 1*(a|b|c|d|e) - (numero positivo|numero negativo)
- b(decena) - Numero Primo
- e(ab|c)d* - Factorial
- a(abcd|dcba)
- a(123|cde)*dd
- (a|b|c|d|e|f|g)*1
- a(numero)
- ab*c(numero par)

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 19


Unidad 5: AUTÓMATAS

Historia

En 1930´s, A. Turing desarrolló una máquina abstracta


denominada Máquina de Turing para el estudio de la
computabilidad. (Gramática tipo 0)

En 1940´s y 1950´s, se desarrollan unas máquinas simples, en


cuanto su funcionamiento, que fueron conocidas como
autómatas finitos, para modelar el funcionamiento del cerebro.

También en los 1950´s, N. Chomsky comienza el estudio formal


de las gramáticas (generadoras de lenguajes).

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 21


Unidad 5: AUTÓMATAS

Historia

En 1969, S. Cook extiende el estudio de Tuning. Cook separa aquellos problemas


que pueden ser solucionados de aquellos que en principio pueden ser
solucionados pero que en la práctica toman demasiados recursos.

Autómatas finitos y ciertas clases de gramáticas formales son usadas en el


diseño y construcción de software.

La Máquina de Turing ayuda a comprender que es lo que podemos esperar de


nuestro software.

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 22


Unidad 5: AUTÓMATAS

Introducción

Teoría de Autómatas.
• Trata del estudio de máquinas de computación
abstractas.

Teoría de la Computación.
• Trata del estudio de la computabilidad y de la
complejidad.

Lenguajes y Gramáticas.
• Trata del estudio y formalización de los lenguajes.

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 23


Unidad 5: AUTÓMATAS

Máquinas abstractas

Autómatas Finitos.

Autómatas a Pila.

Autómatas linealmente acotados.

Máquina de Turing.
Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 24
Unidad 5: AUTÓMATAS

Autómatas Finitos
Esenciales para el estudio de los límites de
la computación
¿Qué puede hacer ¿Qué puede hacer
un computador? un computador
• Problema de la eficientemente?
decibilidad. • Problema de la
tratabilidad.

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 25


Unidad 5: AUTÓMATAS

Autómatas Finitos
Modelos útiles para el use en el hardware y software
• Software para diseñar y chequear la conducta
de circuitos digitales.
• El analizador léxico de un compilador.
• Software para escanear grandes volúmenes de
texto para encontrar patrones.
• Software para verificar sistemas que tengan un
número finito de estados, tales como protocolos
de comunicación o de intercambio seguro de
información.

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 26


Unidad 5: AUTÓMATAS

Definición Informal
Son sistemas que en todo momento se encuentran en
uno de un conjunto finito de estados.

El propósito de un estado es recordar la historia del


sistema.
Puesto que el número de estados es finito, el sistema
debe ser diseñado para recordar aquello que es
importante y olvidar lo que no.
La ventaja de tener un número finito de estados es que
el sistema podrá ser implementado con un fijo conjunto
de recursos.

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 27


Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES
Unidad 5: AUTÓMATAS

Definición Formal
Autómata finito determinista (K,T,M,S,Z)
• K conjunto finito de estados.
• T conjunto de terminales (símbolos/caracteres de entrada).
• M: KxTK función de transición.
• S estado inicial.
• Z conjunto de estados finales.

Autómata finito no determinista (K,T,M,S,Z)


• M:KxT P(K) función de transición.

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 29


Unidad 5: AUTÓMATAS

Representación

Transición Estado
inicial
1

Estado Estado
final
1
1

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 30


Unidad 5: AUTÓMATAS

Ejemplo
Sistema: Interruptor.

• El sistema recuerda si está


conectado (ON) o Presión
Comienzo
desconectado (OFF).
• El usuario lo presiona. off on
• Si está en OFF y es
presionado pasa al estado Presión
ON.
• Si está en ON y es
presionado pasa al estado
OFF.

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 31


Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES
Unidad 5: AUTÓMATAS

Ejemplo de Autómata Finitos


Expresión Regular : abc(dc)*

Ej. abc, abcdc, abcdcdc, abcdcdc...

a b c
1 2 3 4

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Unidad 5: AUTÓMATAS

Ejemplo de Autómata Finitos


Expresión Regular : baa+!

b a a !
1 2 3 4 5

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 34


Unidad 5: AUTÓMATAS
Ejemplo de Autómata Finitos No Determinístico
Expresión Regular : ab|ac*
b
AFND a 2 3

1
a 4

• Problema: c
– Un a AFND puede seguir más de un camino
durante su interpretación.

• Solución:
– Pasar de AFND a AFD.
Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 35
Unidad 5: AUTÓMATAS

Paso de AFND a AFD

El conjunto de estados del nuevo AFD es el


conjunto de las partes del conjunto de estados del
AFND.
El estado inicial del AFD es el mismo que el del
AFND.
Un estado del AFD es final si contiene algún estado
final del AFND.

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Unidad 5: AUTÓMATAS

Ejemplo: Paso de AFND a AFD


b
Expresión: ab|ac* a 2 3

AFND 1
a 4
Tabla de Transiciones AFD
I S F
c
1 a 2,4
2,4 b 3
a b 3
2,4 c 4
1 2,4
4 c 4
AFD
c 4

c
Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES
Unidad 5: AUTÓMATAS
Ejemplo de Tabla de Transiciones

b 3
a
1 2 Expresión: ab|ac*
c 4

c
Tabla de Transiciones
a b c
1 2 Err Err
2 Err 3 4
3 Err Err Err
4 Err Err 4

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Unidad 5: AUTÓMATAS

Implementación de un AFD
Variable de estado S.
Tabla de transiciones T: dado un estado y un carácter de
entrada específica el nuevo o error.
Algoritmo:
◦ S=estado inicial.
◦ Repetir
◦ C=leer_caracter()
◦ si T[S][C]==error entonces salir del bucle
◦ S=T[S][C]
◦ si S no es final error

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES


Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES
Unidad 5: AUTÓMATAS
Implemente el autómata que corresponda de las siguientes Expresiones
Regulares y ejemplifique el resultado generado.
- e(ab|ac)d* - (vocal)(numero par)
- a(a*b*|d)cd - a(consonante)(vocal)*(3|6|9)
- a(b|c|d)bcd - (numero entero) / (numero real)
- 1*(a|b|c|d|e) - (numero positivo|numero negativo)
- b(decena) - Numero Primo
- e(ab|c)d* - Factorial
- a(abcd|dcba)
- a(123|cde)*dd
- (a|b|c|d|e|f|g)*1
- a(numero)
- ab*c(numero par)

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 41


Unidad 5: AUTÓMATAS

2) ¿Qué lenguajes representan las


siguientes expresiones regulares? –
Realice su autómata.
• a) 0 (0|1)* 0
• b) (0|1)* 0 (0|1) (0|1)
• c) 0* 1 0* 1 0* 1 0*
• d) (00|11)* ( (01|10)(00|11)* (01|10)(00|11)* )*

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 42


Unidad 5: AUTÓMATAS

3) Escribe expresiones regulares (formulas) para los siguientes lenguajes y el Autómata que lo pueda
generar

• a) Todas las cadenas de letras que contengan las cinco vocales en orden (las vocales pueden
repetirse).
• b) Todas las cadenas de letras que estén en orden lexicográfico ascendente.
• c) Comentarios que consisten en una cadena encerrada entre /* y */, sin ningún */
intermedio salvo que aparezca entre comillas.
• 1. Ejemplo: /* comentario “ sigue */
• 2. Ejemplo: /* comentario “*/” sigue */
• 3. Ejemplo incorrecto: /* “comentario */ sigue “ */
• d) Todas las cadenas de dígitos sin ningún dígito repetido.
• e) Todas las cadenas de dígitos con a lo sumo un dígito repetido.
• f) Todas las cadenas de 0 y 1 con un número par de 0s e impar de 1s. g) T odas las cadenas
de 0 y 1 que no contienen la subcadena 011.

Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES 43


Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES
C O N C LU YA M O S

Вам также может понравиться