10

現在、数式の解析と評価のための Java ライブラリ (または Java API を備えたネイティブ ライブラリ) を探しています。

here の推奨事項を使用して、多くのライブラリを調べました。

  • Jフォーミュラ
  • JEval
  • シムヤ
  • JEP

しかし、どれも私のニーズを満たしていません。つまり、次のとおりです。

  • それらの間の依存関係を伴う複数の式の評価 (式は常に、他の変数または数値を使用する変数への影響です)
  • おそらく 50 個の処方のうち 1 つだけを変更する可能性があり、1 つの処方のみが変更された場合に良好なパフォーマンスが得られます
  • 手動で変数の依存関係を処理する必要はありません
  • 数式が変更された場合、他の従属変数を自動的に更新します
  • どの変数が変更されたかをリッスンする可能性
  • 変数に特定の形式を持たせる必要はありません (ユーザーは名前を直接入力し、複雑な表記法は必要としません)

たぶん、例の方が良いでしょう。この順序でシステムに入力したとしましょう:

  • a = b + c
  • c = 2 * d
  • b = 3
  • d = 2

この 4 行をこの順序で入力して、"a" (または "b" など) の結果を求められるようにしたいと考えています。次に、ユーザー インターフェイス (基本的にはテーブル変数 <> 式) で "b" が "2 * d" に変更されると、ライブラリは自動的に "b" と "a" の値を変更し、me (またはランチ anイベント、または関数の呼び出し) 変更のリスト

最適なライブラリは、JEP のようなものですが、順不同の変数機能と従属変数の自動評価機能を備えています。

コンパイラや表計算ソフトウェアがそのようなメカニズムを使用していることは知っていますが、Java または Java 互換のライブラリを直接使用できるものは見つかりませんでした。

誰か知っていますか?

編集:精度:問題は実際にはライブラリ、または最終的にはリンクするライブラリのセットに関するものです。質問は企業内のプロジェクトであり、アイデアは最小限の時間を費やすことです。「自分でやる」ソリューションはすでに見積もられており、質問の範囲外です

4

5 に答える 5

1

単純な数式パーサーも必要なプロジェクトでは、記事「字句解析、パート 2: javaworld.com でアプリケーションを構築する」のコードを使用しました。シンプルで小さく (7 クラス)、ニーズに合わせて調整できます。

ここでソース フォームをダウンロードできます(「Lexical Analysis Part II」エントリを検索してください)。

于 2012-07-17T09:38:36.953 に答える
0

これらのリンクも確認できます...

于 2012-07-16T19:13:54.977 に答える
0

自分で書いてみませんか?このタスクの複雑さに関するあなたの評価は間違っているかもしれません。思っているよりもはるかに簡単です。おそらく、サードパーティのライブラリを扱う方法を学ぶには、そのような些細なことをゼロから実装するよりもはるかに多くの労力が必要になるでしょう。最悪の場合でも数時間以上かかることはありません。

単純なことを行うためにサードパーティのライブラリを探すのは意味がありません (Java の精神の一部であることはわかっていますが、それでも...)

インスピレーションを得るために、 Cellsライブラリを参照することをお勧めします。これは Common Lisp で書かれていますが、アイデアは基本的なものであり、どこにでも転用できます。

于 2012-07-12T09:04:14.013 に答える
0

Groovyを埋め込みます。ここで埋め込みに関するチュートリアルを参照してください。Freeplane (Java Mindmapper) も数式に Groovy を使用しています。

変数が変更されるたびに、新しい値をバインディングに入れる必要があります。すべてのセル コードは、単一のコード片として Groovy Shell に渡される必要があります。BindPathを介して変更を登録できます。

とにかく、要件を満たすために薄いレイヤーを実装する必要があると思います:

  • 手動で変数の依存関係を処理する必要はありません
  • どの変数が変更されたかをリッスンする可能性
于 2012-07-17T09:09:10.983 に答える