iOS中的基本表达语言

时间:2014-03-24 09:44:54

标签: ios iphone objective-c parsing

我希望创建一个可以在iOS应用程序中使用的基本表达式语言。我将在运行时从文件中提取这些值。在过去,我只是利用正则表达式,但它有自己的局限性(因为我基本上只有两个操作数和一个运算符)。我希望对以下表达式提供更强大的支持:

一些例子:

valueA != valueB
(valueA == valueB) && (valueC != valueD)
valueA >= valueB

基本上,我想为这个表达式求值程序提供一个字典,让它从该字典中提取变量的值。

有关有效方法的任何想法吗?我今天早上在CoreParse和ParseKit上做了大约5分钟的研究,但我对两者都是新手(和整个解析器生成器)。

1 个答案:

答案 0 :(得分:4)

您可以使用NSPredicate,例如:

NSString *expr = @"($valueA == $valueB) && ($valueC != $valueD)";
NSPredicate *predicate = [NSPredicate predicateWithFormat:expr];
NSDictionary *vars = @{@"valueA": @7, @"valueB" : @7, @"valueC": @3, @"valueD": @4};
BOOL result = [predicate evaluateWithObject:nil substitutionVariables:vars];

请注意,所有变量都必须以谓词字符串中的$开头。