Mathematica 语法解析器?

发布于 2024-08-09 10:09:22 字数 115 浏览 5 评论 0原文

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

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

Is there a built parser that I can use from C# that can parse mathematica expressions?

I know that I can use the Kernel itself to parse an expression, and use .NET/Link to retrieve the tree structure... But I'm looking for something that doesnt rely on the Kernel.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

乖乖哒 2024-08-16 10:09:22

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

My matheclipse-parser module implements a parser in Java which can parse a big subset of mathematica expressions. See the readme.md page for usage. Maybe you can port the parser to C#?

冷月断魂刀 2024-08-16 10:09:22

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

DMS 软件重新工程工具包确实有一个已用于实际任务的 Mathematica 语法。
这包括 MMa 课程以及纯粹的表达形式。

这可能对您没有帮助,因为您需要 C# 语言。

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

The mathematica grammar isn't well documented, true. But AFAIK, it is
LALR(1) and likely LL(1); the bracketed /tagged syntax from gives the parser complete clues
about what to expect next, just like LISP and XML.

The DMS Software Reengineering Toolkit does have a Mathematica grammar that has been used for real tasks.
This includes MMa programs as well as pure expression forms.

That probably doesn't help you, since you want one in C#.

If you have access to the Kernal, I'd stick to that.

撞了怀 2024-08-16 10:09:22

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

FullForm[a+b*c]

yields

Plus[a, Times[b,c]]

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

I don't think such a thing exists already (I'd love to know about it). But it may be useful that within Mathematica you can apply the function FullForm to any expression and get something very easy to parse, kind of like an s-expression in Lisp. For example,

FullForm[a+b*c]

yields

Plus[a, Times[b,c]]

That's the underlying representation of all Mathematica expressions and should be straightforward to parse.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文