11

是否有可以从 C# 使用的内置解析器来解析数学表达式?

我知道我可以使用内核本身来解析表达式,并使用 .NET/Link 来检索树结构......但我正在寻找不依赖内核的东西。

4

3 回答 3

6

我的matheclipse-parser 模块在Java 中实现了一个解析器,它可以解析mathematica 表达式的一个大子集。有关用法,请参阅 readme.md 页面。也许您可以将解析器移植到 C#?

于 2009-10-24T14:20:27.953 回答
1

确实,mathematica 语法没有很好的文档记录。但是 AFAIK,它是 LALR(1) 并且可能是 LL(1);括号中的 /tagged 语法为解析器提供了关于接下来会发生什么的完整线索,就像 LISP 和 XML 一样。

DMS Software Reengineering Toolkit确实具有已用于实际任务的 Mathematica 语法。这包括 MMa 程序以及纯表达式形式。

这可能对您没有帮助,因为您需要 C# 中的一个。

如果您可以访问内核,我会坚持下去。

于 2009-10-26T08:10:04.517 回答
0

我不认为这样的事情已经存在(我很想知道)。但是,在 Mathematica 中,您可以将函数FullForm应用于任何表达式并获得非常容易解析的东西,这可能很有用,有点像 Lisp 中的 s 表达式。例如,

FullForm[a+b*c]

产量

Plus[a, Times[b,c]]

这是所有 Mathematica 表达式的基本表示,应该很容易解析。

于 2009-10-22T17:50:21.190 回答