Pregunta

Estoy creando una pieza de software (escrito en C #, será una aplicación de Windows) y me encontré con este problema -

Tengo un conjunto de variables, y necesito para permitir al usuario definir una amplia gama de funciones matemáticas en aquellas variables.

Pero mis usuarios no necesariamente tiene que tener ningún conocimiento previo acerca de la programación.

Las opciones que he consideradas son:

  • Crear algún tipo de interfaz gráfica de usuario para la definición de las "funciones" matemáticos. Pero eso es muy limitante.
  • Implementar un lenguaje embebido muy simple, que ofrecerá una flexibilidad sin dejar de ser relativamente fácil de entender. Miré a Lua, pero el problema con esto es que más o menos necesidad de tener conocimientos previos en programación. Estaba pensando en algo más legible (algo similar a SQL), por ejemplo "Asignar 3 a X;"

Otras ideas son bienvenidas.

Estoy básicamente se busca el mejor camino a seguir aquí, bajo el supuesto de que mis usuarios no tienen ningún conocimiento en programación.

Sin embargo, cabe destacar que esta no es la característica principal de mi software, así que estoy asumiendo que si un usuario quiere / necesita utilizar esta función, se tomará el tiempo para mirar el manual durante unos minutos y aprender de cómo hacerlo, siempre y cuando no sea demasiado complicado.

Gracias, Malki:)

¿Fue útil?

Solución

Lo que queremos es un lenguaje específico de dominio . Veo que has probado Lua y no encontró que aceptable -. Voy a suponer que la mayoría de los lenguajes de script pre-construidos están fuera después

En función de la complejidad de la función esperada, lo recomiendo que le dan un tiro en la implementación de una pequeña descenso recursivo analizador para que pueda exactamente especificar su idioma. De esta manera usted puede darse cuenta de algo como:

assign 3 to X
show sin(X * 5)

Si esto es un poco más allá de lo que está dispuesto a hacer, se puede conseguir un poco de ayuda de análisis de una biblioteca como ironía; esto le permitirá centrarse en el uso del árbol de sintaxis abstracta en lugar de jugar con tokenizing / Lexing desde hace algún tiempo.

Si lo desea, puede incluso mirar HUIR , que analizar y evaluar algunas expresiones muy complejas derecha fuera de la puerta.

Otros consejos

antlr es un analizador greate si usted desea hacer su propio idioma

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