jueves, 28 de marzo de 2013

Autómata no determinista, Landa transiciones

Programé la funcionalidad de reconocer una expresión a través de su expresión regular sobre un autómata no determinista Landa transiciones, con la ayuda de Landa clausura.

Va recorriendo la tabla de transiciones y al llegar al o los estados finales, nos muestra por pantalla el nombre de la expresión regular reconocida.

Por ejemplo, si insertamos 13.9 mostrará en pantalla: real

Estas son algunas expresiones que se han añadido:

- 0+1+2+3+4+5+6+7+8+9 dígito
- (dígito)* natural
- (natural)+('+(natural)) entero positivo
- (-(natural)) entero negativo
- (entero positivo)+(entero negativo) entero
- Etc.

Por lo que al insertar 9, nos dice que se trata de un dígito, un natural, un entero positivo y un entero

jueves, 21 de marzo de 2013

Reconocimiento de expresiones regulares

Después de tanto tiempo sin dar señales de vida he vuelto con ideas renovadas.

Lo de reestructurar de nuevo el proyecto como se comentó en la entrada anterior no ha resultado como esperaba. Pero las ideas han seguido fluyendo. ¿Cómo reconocer los números reales? Un real puede ser 1. o .1 o 1.1 la última forma es la más común. Es imposible programar todos los números. Una expresión regular nos permite reconocerlos.

La estructura de datos se basa en los autómatas no determinista Landa transiciones para expresiones recientes y autómata determinante mínimo para las expresiones procesadas en sesiones anteriores.

En este momento la primera estructura está programada casi en su totalidad:

- Genera la tabla de transiciones.
- Gestiona los símbolos.
- Gestiona los estados finales.
- Reconoce ER procesados anteriormente y evita volver a trabajar con ellos.
- Reconoce ER por Nombre.
- Genera Landa_clausura.

Y ahora estoy en el procedimiento que reconoce una palabra.