1

我正在创建一个软件(用 C# 编写,将是一个 Windows 应用程序),我遇到了这个问题 -

我有一组变量,我需要允许用户在这些变量上定义广泛的数学函数。

但我的用户不一定必须具备任何有关编程的先验知识。

我考虑过的选项是:

  • 创建某种 GUI 来定义数学“函数”。但这是非常有限的。
  • 实现一种非常简单的嵌入式语言,这将提供灵活性,同时保持相对容易理解。我查看了 Lua,但问题在于您非常需要具备编程方面的先验知识。我在想一些更易读的东西(有点类似于 SQL),例如“将 3 分配给 X;”

欢迎其他想法。

假设我的用户没有任何编程知识,我基本上是在寻找最好的方法。

但是,请注意,这不是我的软件的主要功能,所以我假设如果用户想要/需要使用此功能,他会花几分钟时间查看手册并学习如何操作所以,只要不是太复杂。

谢谢,马尔基 :)

4

2 回答 2

4

你想要的是一种特定领域的语言。我看到你已经尝试过 Lua 并且没有发现它可以接受——我假设大多数预构建的脚本语言都已经出现了。

根据您预期的函数复杂性,我建议您尝试实现一个小型递归下降解析器,以便您可以准确地指定您的语言。通过这种方式,您可以实现以下内容:

assign 3 to X
show sin(X * 5)

如果这有点超出您的意愿,您可以从Irony等库获得一些解析帮助;这将使您专注于使用抽象语法树,而不是在一段时间内使用标记/词法分析。

如果您愿意,您甚至可以查看FLEE,它会立即解析和评估一些非常复杂的表达式。

于 2010-10-25T20:36:43.087 回答
2

如果您想制作自己的语言,ANTLR 是一个很棒的解析器

于 2010-10-25T20:53:39.707 回答