Pregunta

¿Existe un analizador integrado que puedo usar desde C # y que pueda analizar expresiones matemáticas?

Sé que puedo usar el propio Kernel para analizar una expresión y usar .NET / Link para recuperar la estructura de árbol ... Pero estoy buscando algo que no dependa del Kernel.

¿Fue útil?

Solución

Mi módulo matheclipse-parser implementa un analizador en Java que puede analizar un gran subconjunto de expresiones matematicas. Ver la página readme.md para uso. Tal vez usted puede portar el analizador a C #?

Otros consejos

Escribí un analizador Mathematica en 300 líneas de código OCaml bajo contrato para Wolfram Research y lo encontré bastante fácil porque la gramática es claramente documentado en su literatura y cualquier ambigüedad se puede encontrar fácilmente jugando con Mathematica.

La gramática matemática no está bien documentada, es cierto. Pero AFAIK, es LALR (1) y probable LL (1); La sintaxis entre corchetes / etiquetas le da al analizador pistas completas sobre qué esperar a continuación, al igual que LISP y XML.

El Kit de herramientas de reingeniería de software DMS tiene una gramática de Mathematica que se ha utilizado para Tareas reales. Esto incluye programas MMa así como formas de expresión pura.

Eso probablemente no te ayude, ya que quieres uno en C #.

Si tienes acceso al Kernal, me quedo con eso.

No creo que ya exista tal cosa (me encantaría saberlo). Pero puede ser útil que dentro de Mathematica pueda aplicar la función FullForm a cualquier expresión y obtener algo muy fácil de analizar, como una expresión de s en Lisp. Por ejemplo,

FullForm[a+b*c]

rendimientos

Plus[a, Times[b,c]]

Esa es la representación subyacente de todas las expresiones de Mathematica y debería ser sencilla de analizar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top