Mathematica構文のパーサー?
-
05-07-2019 - |
質問
数学式を解析できるC#から使用できるビルドされたパーサーはありますか?
カーネル自体を使用して式を解析し、.NET / Linkを使用してツリー構造を取得できることを知っています...しかし、カーネルに依存しないものを探しています。
解決
私の matheclipse-parserモジュールは、Javaのパーサーを実装して、数学表現。使用方法については、readme.mdページを参照してください。たぶん、パーサーをC#に移植できますか?
他のヒント
Wolfram Researchの契約の下で300行のOCamlコードでMathematicaパーサーを書いたところ、文法が文献に明確に文書化されている。曖昧さはMathematica自体を使って簡単に見つけることができます。
数学の文法は十分に文書化されていません、本当です。しかし、知る限りでは LALR(1)およびおそらくLL(1);からの括弧付き/タグ付き構文は、パーサーに完全な手がかりを与えます LISPやXMLと同様に、次に何を期待するかについて。
DMS Software Reengineering Toolkit には、以下に使用されているMathematica文法があります。実際のタスク。 これには、MMaプログラムと純粋な式フォームが含まれます。
C#で欲しいので、おそらく役に立たないでしょう。
Kernalへのアクセス権があれば、私はそれに固執します。
そのようなものはすでに存在するとは思わない(私はそれについて知りたい)。しかし、Mathematica内で関数 FullForm
を任意の式に適用し、Lispのs式のような非常に簡単に解析できるものを取得できると便利な場合があります。たとえば、
FullForm[a+b*c]
利回り
Plus[a, Times[b,c]]
これはすべてのMathematica式の基礎となる表現であり、解析するのは簡単です。