Mathematica语法的解析器?

时间:2009-10-22 16:21:35

标签: c# parsing wolfram-mathematica

我可以在C#中使用可以解析mathematica表达式的构建解析器吗?

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

4 个答案:

答案 0 :(得分:16)

我根据Wolfram Research的合同在300行OCaml代码中编写了一个Mathematica解析器,发现它非常简单,因为语法是clearly documented in their literature,并且通过使用Mathematica本身很容易找到任何歧义。

答案 1 :(得分:6)

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

答案 2 :(得分:1)

mathematica语法没有很好的记录,是真的。但AFAIK确实如此 LALR(1)和LL(1);括号/标记语法来自解析器的完整线索 关于接下来会发生什么,就像LISP和XML一样。

DMS Software Reengineering Toolkit确实有一个用于实际任务的Mathematica语法。 这包括MMa程序以及纯表达形式。<​​/ p>

这可能对你没有帮助,因为你想要一个用C#。

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

答案 3 :(得分:0)

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

FullForm[a+b*c]

产量

Plus[a, Times[b,c]]

这是所有Mathematica表达式的基础表示,应该直接解析。