Parser für die Mathematica-Syntax?
-
05-07-2019 - |
Frage
Gibt es einen integrierten Parser, die ich von C # verwenden können, die Mathematica-Ausdrücke analysieren kann?
Ich weiß, dass ich den Kernel verwenden kann selbst einen Ausdruck zu analysieren, und verwenden Sie .NET / Verbindung die Baumstruktur abrufen ... Aber ich bin auf der Suche nach etwas, das auf dem Kernel verlassen tut.
Lösung
Meine matheclipse-Parser-Modul einen Parser in Java implementiert, die eine große Teilmenge von analysieren kann Mathematica-Ausdrücke. Siehe die readme.md Seite für die Nutzung. Vielleicht können Sie Port den Parser C #?
Andere Tipps
Ich schrieb einen Mathematica-Parser in 300 Zeilen von OCaml Code unter Vertrag für Wolfram Research und fand es ganz einfach zu sein, weil die Grammatik ist
Die Mathematica Grammatik ist nicht gut dokumentiert, wahr. Aber AFAIK ist es
LALR (1) und wahrscheinlich LL (1); die klammert / markierte Syntax aus gibt der Parser vollständige Hinweise
über das, was als nächstes, wie LISP und XML zu erwarten. Die DMS Software Reengineering Toolkit eine Mathematica Grammatik hat, die für verwendet wurde, reale Aufgaben.
Dazu gehören MMa Programme sowie reine Ausdrucksformen. Das ist wohl nicht Sie helfen, da Sie ein in C # werden soll. Wenn Sie den Zugriff auf die Kernal, ich dabei bleiben würde.
Ich glaube nicht, so etwas gibt es bereits (ich würde gerne darüber wissen). Aber es kann sinnvoll sein, dass innerhalb von Mathematica können Sie die Funktion FullForm
auf jeden Ausdruck anwenden und etwas sehr leicht zu analysieren, ein bisschen wie ein s-expression in Lisp bekommen. Zum Beispiel:
FullForm[a+b*c]
Ausbeuten
Plus[a, Times[b,c]]
Das ist die zugrundeliegende Repräsentation aller Mathematica Ausdrücke und soll zu analysieren einfach sein.