2

私は、加速度計とジャイロスコープの出力を介して電話の動きを分析するアプリを構築しています。このモーションを、アプリが内部で追跡する一連の変数としてキャプチャする可能性があります。

これらの変数とこれらの変数を含む方程式をグラフ化する方法を含めようとしています。アプリで計算されているa、b、c変数を使用してa + b --c = dのような方程式を入力することにより、アプリがこれらの変数の方程式を表示する方法を調整する機能をユーザーに提供したいと思います。ユーザーは、フィールドに方程式とグラフ変数を書き込むことができます。代数パーサーを任意の言語で作成してから何年も経っているので、Objective-cに式パーサーがあり、アプリに簡単にプラグインできるかどうか迷っています。ユーザーはa + b--c=のように入力します。 dをテキストフィールドに入力すると、アプリは、ユーザーが入力したプレースホルダーの代わりに、私が提供した変数をトークン化して置換します。

4

2 に答える 2

4

いくつかのオープンソースオプション:

GCMathParser http://www.apptree.net/parser.htm

DDMathParser https://github.com/davedelong/DDMathParser

于 2012-08-21T23:52:39.660 に答える
1

これを行うには、はるかに簡単なアプローチがあります:)NSExpressionファンデーションクラスを確認してください。これは、スポットライトに式を入力するときに使用されるのと同じクラスです。

NSExpressionクラスリファレンス

Objective-Cで

NSExpression *expression = [NSExpression expressionWithFormat:@"2*4*3" argumentArray:nil];
NSNumber *result = [expression expressionValueWithObject:nil context:nil];

スウィフトで

var expression:NSExpression = NSExpression(format: "4 + (3 * 2)", argumentArray: [])
var result = expression.expressionValueWithObject(nil, context: nil)
于 2014-09-10T15:48:40.410 に答える