Documente Academic
Documente Profesional
Documente Cultură
Lenguajes de Programación
Diseño de Autómatas para Evaluación de Expresiones Regulares.
Parte 1: Creación de entorno de diseño y visualización de grafos en JavaScript
El proyecto busca crear una aplicación que facilite el entorno de diseño de autómatas de estado
finito deterministas y no-deterministas.
El proyecto está dividido en dos partes. Para el primer parcial se utilizará JavaScript +
Ruby/HTML5 para el desarrollo del entorno visual, validación de expresiones y simulación.
Autómatas de estados Finitos Deterministas (AFD):
F
Ejemplo:
a
q p
Los estados de aceptación se denotan gráficamente con un doble círculo y en la tabla de transición con
un asterisco al lado del estado.
Ejemplo: Si r pertenece a F, debe ser denotado con doble circulo como se observa en la figura.
r
En los AFD debe cumplirse que:
Para toda a que pertenece a Σ, existe una única transición de salida para cada estado.
Ejemplo:
La siguiente tabla de transiciones:
Next State for Input Next State for Input
Present State
0 1
a* a b
b c a
C* b c
011010
01000
10
1111110
Mediante la aplicación a ser desarrollada, se podrá diseñar autómatas finitos deterministas para validar
diferentes expresiones regulares.
c
Otro ejemplo sería:
( b 2 3
1
+
0
d 8
(
4
a )
+ c 7
5 6
El cual acepta lo siguiente:
(b+c+d)
(b+c+c+d)
(b+c+c+c+c+d)
(b+c+…+d)
(a+c)
El programa permitirá al usuario crear los estados iniciales, transiciones entre estados, estados de
aceptación y también la personalización de lexemas y/o tokens en las transiciones, como muestran los
ejemplos anteriores. Al finalizar el diseño y dada una expresión, se visualizará, a manera de simulación, la
transición de cada estado y se obtendrá como resultado el mensaje de aceptación o rechazo de la
expresión.