2

我正在构建一个应用程序,可以通过加速度计和陀螺仪输出分析手机的运动。我很可能会将这个动作捕捉为应用程序内部跟踪的一组变量。

我试图包括一种方法来绘制这些变量和涉及这些变量的方程。我想为用户提供调整应用程序如何显示这些变量方程的能力,方法是键入 a + b - c = d 等方程,其中 a、b、c 变量由我的应用程序计算。用户可以在现场编写方程和图形变量。自从我用任何语言编写代数解析器以来已经有很长时间了,如果在 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 回答