代码之家  ›  专栏  ›  技术社区  ›  Nestor

Mathematica语法分析器?

  •  11
  • Nestor  · 技术社区  · 15 年前

    是否有一个构建好的解析器,我可以从C中使用它来解析Mathematica表达式?

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

    4 回复  |  直到 15 年前
        1
  •  6
  •   axelclk    8 年前

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

        2
  •  16
  •   J D    14 年前

    根据WolframResearch的合同,我用300行ocaml代码编写了一个Mathematica解析器,发现这很容易,因为语法是 clearly documented in their literature 任何模棱两可的地方都很容易通过玩数学来发现。

        3
  •  1
  •   Ira Baxter    15 年前

    数学语法没有很好的记录,是的。但是阿法克,是的 LALR(1)和可能的ll(1);括号中的/标记的语法为解析器提供了完整的线索。 关于下一步要做什么,就像lisp和xml一样。

    这个 DMS Software Reengineering Toolkit 确实有一个用于实际任务的数学语法。 这包括mma程序以及纯表达式形式。

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

    如果你能接触到内核,我会坚持的。

        4
  •  0
  •   dreeves    15 年前

    我认为这样的事情已经不存在了(我很想知道)。但在Mathematica中,你可以应用函数 FullForm 对于任何表达式,都可以得到非常容易解析的内容,类似于Lisp中的s表达式。例如,

    FullForm[a+b*c]
    

    产量

    Plus[a, Times[b,c]]
    

    这是所有Mathematica表达式的底层表示,应该可以直接解析。