我可以在C#中使用可以解析mathematica表达式的构建解析器吗?
我知道我可以使用内核本身来解析表达式,并使用.NET / Link来检索树结构......但我正在寻找一些不依赖于内核的东西。
答案 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表达式的基础表示,应该直接解析。