Evaluador de Expresiones

23/04/2004 - 20:36 por Gabriel | Informe spam
alguien sabe donde consigo código de ejemplo o un documento que me indique como realizar un evaluador de expresiones en C#? lo que quiero es que reciba (por Ej) el siguiente string "5>=3" y al pasarselo a la funcion esta la evalue y me devuelva true o false de pendiendo de la operacion. Debe tener la capacidad de interpretar operadores lógicos y matemáticos (opcional). No necesariamente debe estar en C# si esta en otro lenguaje tambien me sirve y puedo realizar un dll sería de gran ayuda. Gracias.

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
24/04/2004 - 12:13 | Informe spam
Gabriel,

Una manera muy fácil de lograr esto en .NET es utilizando el propio
compilador de C# incorporado en la plataforma. En el ejemplar de marzo de
DotNetManía, hay un artículo de José Manuel Alarcón que demuestra
exactamente eso (hasta el ejemplo es el que tú necesitas, un evaluador de
expresiones).

Salu2,

Octavio

"Gabriel" escribió en el mensaje
news:
alguien sabe donde consigo código de ejemplo o un documento que me indique


como realizar un evaluador de expresiones en C#? lo que quiero es que reciba
(por Ej) el siguiente string "5>=3" y al pasarselo a la funcion esta la
evalue y me devuelva true o false de pendiendo de la operacion. Debe tener
la capacidad de interpretar operadores lógicos y matemáticos (opcional). No
necesariamente debe estar en C# si esta en otro lenguaje tambien me sirve y
puedo realizar un dll sería de gran ayuda. Gracias.
Respuesta Responder a este mensaje
#2 David Salgado
24/04/2004 - 21:36 | Informe spam
Por si no puedes hacerte en breve con la dotnetmania, que en mi opinión
y para que quede constancia...se sale ;)

pista CodeDom :)

Si no puedes conseguir la dotnetmanía o es muuuuy urgente, comenta y
hacemos un ejemplillo ;)

Gabriel wrote:

alguien sabe donde consigo código de ejemplo o un documento que me indique como realizar un evaluador de expresiones en C#? lo que quiero es que reciba (por Ej) el siguiente string "5>=3" y al pasarselo a la funcion esta la evalue y me devuelva true o false de pendiendo de la operacion. Debe tener la capacidad de interpretar operadores lógicos y matemáticos (opcional). No necesariamente debe estar en C# si esta en otro lenguaje tambien me sirve y puedo realizar un dll sería de gran ayuda. Gracias.
Respuesta Responder a este mensaje
#3 Gandalf
26/04/2004 - 11:21 | Informe spam
En esta web tienes un evaludaor de expresiones recursivo descendente basado
en el de Schildt. Si quieres el original puedes encontrarlo en sus libros "C
Manula de Referencia" y "C# Manual de Referencia", ambos de McGraw-Hill.

http://personal.telefonica.terra.es/web/barrisoft/

En el aparatado C# veras: Evluador de Expresiones y Calculadora.

Un Saludo.

P.D. si necesitas cualquier aclaración, no dudes en preguntar.
Respuesta Responder a este mensaje
#4 Gabriel
26/04/2004 - 18:21 | Informe spam
Esto va para todos los que contestaron.
Primero gracias por sus sugerencias, estoy revisando cada una de ellas. Ahora el segundo problema que tengo es que la expresión que le puedo mandar a la función es tan compleja como se quiera.
Me explico, puede ser algo así "(5*3>2) && (6>0) || (9!=3)" los parentesis no son necesarios. Esto es porque necesito que el sistema sea una especie de calculadora y los valores que conforman la expresion los configuro yo para no tener que escribir el código nuevamente para cada caso sino que me sirva de manera genérica. El ejemplo que envio Gandalf funciona muy bien, pero sólo evalua una expresión a la vez. He pensado hacer una matriz de expresionXresultado y preguntar por los elementos de ella para saber el resultado general de toda la expresion pero no estoy muy seguro de cómo hacerlo. ¿Alguna idea?
Gracias
Saludos Gabriel Méndez.
Respuesta Responder a este mensaje
#5 BxCx
27/04/2004 - 05:54 | Informe spam
Sólo una cosa, este tipo de expresiones, "(5*3>2) && (6>0) || (9!=3)", te
arrojaría un boolean, ¿verdad?

"Gabriel" escribió en el mensaje
news:
Esto va para todos los que contestaron.
Primero gracias por sus sugerencias, estoy revisando cada una de ellas.


Ahora el segundo problema que tengo es que la expresión que le puedo mandar
a la función es tan compleja como se quiera.
Me explico, puede ser algo así "(5*3>2) && (6>0) || (9!=3)" los parentesis


no son necesarios. Esto es porque necesito que el sistema sea una especie de
calculadora y los valores que conforman la expresion los configuro yo para
no tener que escribir el código nuevamente para cada caso sino que me sirva
de manera genérica. El ejemplo que envio Gandalf funciona muy bien, pero
sólo evalua una expresión a la vez. He pensado hacer una matriz de
expresionXresultado y preguntar por los elementos de ella para saber el
resultado general de toda la expresion pero no estoy muy seguro de cómo
hacerlo. ¿Alguna idea?.
Gracias,
Saludos Gabriel Méndez.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida