Foros del Web » Programación para mayores de 30 ;) » Java »

Analizador sintactico

Estas en el tema de Analizador sintactico en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/05/2008, 17:38
Avatar de vmontesino  
Fecha de Ingreso: octubre-2007
Ubicación: San Salvador
Mensajes: 21
Antigüedad: 16 años, 5 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.
  #2 (permalink)  
Antiguo 13/05/2008, 13:20
Avatar de vmontesino  
Fecha de Ingreso: octubre-2007
Ubicación: San Salvador
Mensajes: 21
Antigüedad: 16 años, 5 meses
Puntos: 0
Exclamación ...

No se si me explique bien... pero si alguien me dijera trataria de entrar mas en detalle.

Urgen ideas... estoy bloqueado.
  #3 (permalink)  
Antiguo 14/05/2008, 12:10
Avatar de Lino-kun  
Fecha de Ingreso: mayo-2008
Ubicación: Cuernavaca Morelos Mexico
Mensajes: 126
Antigüedad: 15 años, 11 meses
Puntos: 2
Re: Analizador sintactico

Hola amigo.

Se siente feo cuando estas atorado con algo y nadie te da una idea bueno la verdad yo no entiendo muy bien lo que pides antes que nada yo te recomiendo que la consulta que el usuario pueda escribir la realices tu en el DBMS que estes usando, despues para validar la estructura de la ecuacion pues establece criterios por ejemplo que lo que el usuario inserte en una cadena lo valides por tokens y uses por ejemplo un espacio en blanco para separar los tokens, eso se me ocuerre para validar la cadena y eso es sencillo en java.

saludos
  #4 (permalink)  
Antiguo 14/05/2008, 12:30
Avatar de vmontesino  
Fecha de Ingreso: octubre-2007
Ubicación: San Salvador
Mensajes: 21
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Analizador sintactico

Gracias lino-kun por tu aporte.

La verdad es que la empresa donde estoy, hay varios proyectos en desarrollo, y en algunos de ellos se utilizara esta cosa, o algo parecido... entonces el gran guru que es mi jefe, piensa que todas las cosas en programacion se pueden hacer genericas, es decir que pueda reutilizar la solucion que haga, para todos los casos que se den.

El tipo me dijo que investigara, y me comento sobre JsqlParser, pero la verdad esa cosa no me sirve.

He pensado en hacer un interprete o algo por el estilo, que haga como tu dices, trabajar la cadena por tokens, pero al final resultara una solucion especifica para mi pantalla, y no servira supongo para las demas que vengan...

Al parecer esa sera la solucion, y espero que mi jefe acepte que no hay soluciones genericas, que sirvan para todo... si existieran, este mundo seria el paraiso.

Saludos a todos por tener la amabilidad de leer,
y valoraria mas sus opiniones, consejos, ideas... lo que sea
todo me sirve para salir de este huevo.
  #5 (permalink)  
Antiguo 14/05/2008, 20:50
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: Analizador sintactico

Bueno quizás debas investigar un poco sobre gramáticas BNF, parapode especificar en un lenguaje preciso las expresiones aceptadas. Estote va a servir para que las expresiones que procese tu programa estén bien definidas y no sean ambiguas.

Luego definir las expresiones, deberías expresarlas en froma de máquina de estados finitos, la cual te permitirá al implementar esa maquina de estados finitos, desglosar recursivamente la expresión que te ingresa el usuario y evaluarla.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:50.