パーサー:テンプレート ファイル内の数式を解析する
-
09-09-2019 - |
質問
まず問題について説明し、次にライブラリの観点から私が現在検討していることについて説明します。
私のアプリケーションには、常に使用できる変数のセットがあります。例えば:TOTAL_ITEMS、PRICE、CONTRACTS、ETC (約 15 件あります)。アプリケーションのクライアントは、これらの変数を使用して特定の計算を実行および表示したいと考えています。今まで、私はそれらの計算をアプリに常に追加してきました。これは面倒なので、アプリケーションが解析して計算する一連の数式をユーザーが指定できるテンプレートを作成することで、より一般的なものにしたいと考えています。
以下に 1 つのケースを示します。
total_cost = CONTRACTS*PRICE*TOTAL_ITEMS
したがって、ユーザーがテンプレート ファイルで定義するようなことをしたいと考えています。
total_cost = CONTRACTS*PRICE*TOTAL_ITEMS
そしてそれを表示する画面などのメタデータ。したがって、画面で式を指定することになります。そして、ファイルにはこの種の数式が多数含まれます。
現在、次の 2 つのライブラリを調べています。 精神 そして 数学
このタスクに適したもの、参考資料、例、リンクなどを提案してくれる人はいますか?
質問が不明瞭な場合はお知らせください。さらに明確にするよう努めます。
ありがとう、
サーシャ
解決
は、それは少しやり過ぎパーサを起動することであってもよいです。しかし御霊がクールだと私はプロジェクトでそれを使用したいと思ってきます。
私はおそらくちょうど(すべての変数はint型と仮定)名をキーあなたの変数のマップを作成し、文字列をトークン化なります:
map<const char*,int*> vars;
vars["CONTRACTS"] = &contracts;
...
次に、実際の計算を行うために、単純な接尾辞電卓機能を使用します。
編集ます:
MathEvalを見ると、あなたが望むものを正確に行うようです。変数を設定し、その変数を使って数学関数を評価します。私はあなたの構文パーサのレベルでソリューションを作成する理由はわかりません。あなたはMathEvalは満たさないすべての要件を持っていますか?