iPhone iOS是否有类似代数计算器应用程序的表达式解析器?

时间:2012-08-21 22:44:00

标签: iphone objective-c ios parsing expression

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

我正在尝试包含一种方法来绘制这些变量以及涉及这些变量的方程。我想为用户提供一种能力来调整应用程序如何显示这些变量的方程式,方法是输入类似a + b - c = d的方程式,其中a,b,c变量由我的app计算。用户可以在字段中编写方程式和图形变量。自从我用任何语言编写代数解析器以来已经很久了,如果在objective-c中有一个表达式解析器,我可以随时插入我的应用程序,其中用户会输入某些内容比如a + b - c = d进入文本字段,app会标记并替换我提供的变量来代替用户输入的占位符。

2 个答案:

答案 0 :(得分:4)

一些开源选项:

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

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

答案 1 :(得分:1)

有一个更简单的方法来做到这一点:)查看NSExpression基础类。它与在聚光灯下键入表达式时使用的类相同。

NSExpression Class Reference

在Objective-C

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

在Swift中

var expression:NSExpression = NSExpression(format: "4 + (3 * 2)", argumentArray: [])
var result = expression.expressionValueWithObject(nil, context: nil)