Академический Документы
Профессиональный Документы
Культура Документы
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
Universo del
• conjunto de todas las palabras sobre
discurso o un alfabeto.
lenguaje • Conjunto infinito, numerable, W(A).
universal:
Expresiones Regulares
• es una expresión regular que representa el conjunto vacío.
• les 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).
Definiciones
Sea Σ un alfabeto
Se cumple que:
r* = ξ|r+
r+ = rr*
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
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
1-14
Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES
Unidad 5: EXPRESIONES REGULARES
1-20
Semestre II-2019 COMPILADORES Y LENGUAJES FORMALES
Unidad 5: EXPRESIONES REGULARES
Sea Σ={a,b}
Sea Σ={0,1}
Ejemplos
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.
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)
Historia
Historia
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.
Máquinas abstractas
Autómatas Finitos.
Autómatas a Pila.
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.
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.
Definición Informal
Son sistemas que en todo momento se encuentran en
uno de un conjunto finito de estados.
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.
Representación
Transición Estado
inicial
1
Estado Estado
final
1
1
Ejemplo
Sistema: Interruptor.
a b c
1 2 3 4
b a a !
1 2 3 4 5
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
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
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
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.