Ya teneís links "más profesionales", aquí solo expongo una idea general para saber si es lo que necesitaís o no.
-El propio delphi tiene rutinas para crear expresiones regulares.
- Lex es una analizador léxico (que tiene una versión en delphi)
- Yacc es un analizador sintáctico (que tambien existe en version delphi)
¿Y qué demonios son analizadores lexico/sintactico?
analizador lexico:
Código:
[a..z]+ : mostrar('el usuario ha escrito al menos una letra desde la a a la z');
[0..9]+ : mostrar('el usuario ha escrito al menos un número');
[a..z]+[0..9]+ : mostrar(' el usuario ha escrito al menos una letra y despues un número');
Es decir, se puede "adivinar" lo que el usuario va escribiendo, vamos el típico caso de escribir en Word: "Estimado Señor:" y salta el asistente de office diciendo: "Veo que está escribiendo una carta, ¿necesita ayuda?
[a..z]+ es lo que se llama una expresión regular, que se validará solo cuando el usuario pulse una o más letras pertenecientes al rango a..z
Analizador sintáctico:
Es el encargado de verificar el orden en el que se han escrito las palabras. Si el usuario escribe : "Señor Estimado:" no debe saltar el asistente de office, porque no se ha escrito en el orden correcto. Este analizador sólo se encarga del Orden, por ejemplo:
Código:
Sacar_Asistente_ si: "Estimado señor:" o bien
"Estimados señores:" o bien
"Estimado Cliente:" o bien
"Estimado amigo:"
Aunque muchos no os lo creaís, me atrevo decir que es el futuro de la programación: Detectar qué quiere el usuario en cada momento para brindarle ayuda o asistentes paso a paso y no complicarles la vida en inmensos archivos hlp.
Por cierto, ¿como creeís que se obtienen las partes de un SQL?
SELECT nombrecampos FROM nombretablas WHERE condiciones HAVING ... ORDER BY
A través de un Parser se buscan los tokens (palabras reservadas SELECT, FROM, WHERE,ect) y se validan sin son correctas sintácticamente o no.
Saludos