Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/05/2008, 17:38
Avatar de vmontesino
vmontesino
 
Fecha de Ingreso: octubre-2007
Ubicación: San Salvador
Mensajes: 21
Antigüedad: 16 años, 6 meses
Puntos: 0
Analizador sintactico

Buenas tardes compañeros computologos.

El caso que me esta abatiendo es el siguiente. tengo una pantalla donde el usuario puede colocar un texto que puede verse como el where de un sql... esta restringido a colocar = Grupo , "and" , "or" , "(" , ")" y "not"

donde Grupo: es un conjunto de ciudades.

por ejemplo:

GRUPO1 AND (GRUPO2 OR GRUPO3 AND NOT (GRUPO4 AND GRUPO5))

Se valida que tenga la estructura correcta y solo puede colocar grupos existentes en la BBDD.

utilizando logica de conjuntos, el "and" me va a funcionar como interseccion y el "or" como union. Al resolver esta ecuacion (por decirle de alguna manera), me devolvera un conjunto de ciudades donde debere ir a settear una bandera.


La cuestion ese que no se como tratar esta ecuacion para sacarle el conjunto respuesta para luego hacer el setteo de la bandera -- "update tabla set bandera='YES' where ciudad in (conjunto respuesta)" --

Me han sugerido que utilice algun parser o algo asi. he encontrado uno llamado JSqlParser, aunque leyendo la documentacion y viendo los ejemplos no le entiendo mucho y no le he encontrado al utilidad para este caso particular.

Espero sus comentarios, sugerencias e ideas.

Gracias de antemano por su ayuda.

saludos.

PD: Las disculpas del caso si el titulo no parece tener vinculacion con lo que consulto, pero fue un error de dedo.
Quice primero consultar sobre la conveniencia de crearme mis propios metodos para analizar sintacticamente el texto que introduce el usuario y sacar uno a uno los conjuntos, luego evaluar la expresion... o algo asi... no lo recuerdo bien, ya me tiene loco esta cosa.

Última edición por vmontesino; 12/05/2008 a las 18:46 Razón: error de titulo.