【问题标题】:Parser for the Mathematica syntax?Mathematica 语法的解析器?
【发布时间】:2009-10-22 16:21:34
【问题描述】:

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

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

【问题讨论】:

  • 也许有人在 ANTLR 中编写了解析器?
  • 那里有一个 Mathematica 解析器(至少有一个描述链接在 cs.berkeley.edu/~fateman),但它是用 Common Lisp 编写的,据我所知,它没有 CLR/.NET实施。

标签: c# parsing wolfram-mathematica


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    如果您可以访问内核,我会坚持这样做。

    【讨论】:

      【解决方案3】:

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

      FullForm[a+b*c]
      

      产量

      Plus[a, Times[b,c]]
      

      这是所有 Mathematica 表达式的底层表示,应该易于解析。

      【讨论】:

      • 是的.. 但为此我需要内核。无论如何......我认为你是对的。这样的解析器似乎不存在。部分问题在于该语言没有公布的语法。我还听说不能用 LALR 解析器解析该语言。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 2021-01-03
      • 2014-02-23
      • 2016-10-14
      • 1970-01-01
      相关资源
      最近更新 更多