El objetivo de esta tarea es verificar la relación entre un Autómata

Anuncio
El objetivo de esta tarea es verificar la relación entre un Autómata Finito Deterministico y una Expresión
Regular. Para ello ustede deberán hacer un programa que:
1.
2.
3.
4.
5.
Lea de un archivo de texto el archivo er.txt, es decir un archivo con expresiones regulares
Lea un archivo de texto llamado cadenas.txt. Este archivo contiene cadenas de pruebas.
Convierta las expresiones regulares del archivo er.txt a AFND
Convierta los AFND a AFD.
Imprima la línea de las cadenas que son aceptadas por las expresiones regulares.
Ejemplo del archivo er.txt
(a.b)* | b
aab
(a|b*)*
Ejemplo del archivo cadenas.txt
_
b
bbbbbbbbb
Lo cual debería desplegar
(a.b)* | b
1
aab
2
(a|b*)*
2,3
Para ello utilice algún lenguaje de programación imperativo estandarizado (C, C++ o Java).
Las expresiones regulares
La convención utilizada será:
Operación
Simbolo
utilizado
Significado
Concatenación
.
representa la concatenacion de las expresiones
regulares exp1 y exp2
Unión
|
representa la unión de las expresiones
regulares exp1 y exp2
Estrella de
Kleene
*
Literales
a..z A..Z
Epsilon
_
el símbolo _ representará a la cadena vacía, es
decir, la cadena sin caracteres.
Conjunto Vacío
0
el número cero representa al conjunto vacío, es
cero o mas veces la expresión regular exp1
cada una de las letras del alfabeto.
decir, al lenguaje sin cadenas.
Utilizando todo lo anterior, una expresión regular válida sería:
( a.b*.c) | (_.a)
que representa a todas las expresiones que empiezan con a, seguidas de cero 0 mas b´s y que terminan
con una c, o la cadena vacía seguida de una a.
Observaciones
1.
2.
Recordar que para construir el AFD es necesario primero generar el AFND asociado a la
expresión. Por lo tanto, este orden debería ser el mismo que deberían ocupar al desarrollar la
tarea.
El formato de ingreso de la expresión regular debe seguir exactamente las reglas mencionadas
anteriormente, es decir, los mismos símbolos.
Entrega
El Plazo de entrega vence fatalmente el día Miércoles 07 de Junio del 2006 a las 23:59 horas. Se
permiten grupos de un máximo de dos personas. La tarea debe de ser enviada al correo del profesor.
Descargar