BNF Definition of Cocoa Predicates
This article defines Cocoa predicates in Backus-Naur Form notation.
Contents:
NSPredicate
NSCompoundPredicate
NSComparisonPredicate
Operations
Aggregate Qualifier
Expression
Value Expression
Literal Value
String Value
Predicate Argument
Format Argument
Predicate Variable
Keypath Expression
Literal Aggregate
Index Expression
Aggregate Expression
Assignment Expression
Binary Expression
Binary Operator
Function Expression
Function Name
Array Expression
Dictionary Expression
Integer Expression
Numeric Value
Identifier
NSPredicate
NSPredicate ::= NSComparisonPredicate | NSCompoundPredicate |
| "(" NSPredicate ")" | TRUEPREDICATE | FALSEPREDICATE |
NSCompoundPredicate
NSCompoundPredicate ::= NSPredicate "AND" NSPredicate |
| NSPredicate "OR" NSPredicate |
| "NOT" NSPredicate |
NSComparisonPredicate
NSComparisonPredicate ::= expression operation expression |
| aggregate_qualifier NSComparisonPredicate |
Operations
CONTAINS
and IN
serve both as aggregate operators and string operators, depending on the types of their arguments.
operation ::= "=" | "!=" | "<" | ">" | "<=" | ">=" |
| BETWEEN |
| aggregate_operations [ "[" string_options "]" ] |
|
aggregate_operations ::= CONTAINS | IN | string_operations |
|
string_operations ::= BEGINSWITH | ENDSWITH | LIKE | MATCHES |
|
string_options ::= c | d | cd |
Aggregate Qualifier
aggregate_qualifier ::= ANY | ALL | NONE | SOME |
Expression
expression ::= "(" expression ")" |
| binary_expression |
| function_expression |
| assignment_expression |
| index_expression |
| keypath_expression |
| value_expression |
Value Expression
value_expression ::= literal_value | literal_aggregate |
Literal Value
literal_value ::= string_value |
| numeric_value |
| predicate_argument |
| predicate_variable |
| NULL |
| TRUE |
| FALSE |
| SELF |
String Value
string_value ::= "text" | 'text' |
Predicate Argument
predicate_argument ::= "%" format_argument |
Format Argument
format_argument ::= "@" | "%" | "K" |
printf style conversion character |
Predicate Variable
predicate_variable ::= "$" identifier |
Keypath Expression
keypath_expression ::= identifier | "@" identifier |
| expression "." expression |
Literal Aggregate
literal_aggregate ::= "{" [ expression [ "," expression ... ] ] "}" |
Index Expression
index_expression ::= array_expression "[" integer_expression "]" |
| dictionary_expression "[" expression "]" |
| aggregate_expression "[" FIRST "]" |
| aggregate_expression "[" LAST "]" |
| aggregate_expression "[" SIZE "]" |
Aggregate Expression
aggregate_expression ::= array_expression | dictionary_expression |
Assignment Expression
assignment_expression ::= predicate_variable ":=" expression |
Binary Expression
binary_expression ::= expression binary_operator expression |
| "-" expression |
Binary Operator
binary_operator ::= "+" | "-" | "*" | "/" | "**" |
Function Expression
function_expression ::= function_name "(" [ expression [ "," expression ... ] ] ")" |
Function Name
function_name ::= "sum" | "count" | "min" | "max" |
| "average" | "median" | "mode" | "stddev" |
| "sqrt" | "log" | "ln" | "exp" |
| "floor" | "ceiling" | "abs" | "trunc" |
| "random" | "randomn" | "now" |
Array Expression
array_expression ::= any expression that evaluates to an NSArray object |
Dictionary Expression
dictionary_expression ::= any expression that evaluates to an NSDictionary object |
Integer Expression
integer_expression ::= any expression that evaluates to an integral value |
Numeric Value
numeric_value ::= C style numeric constant |
Identifier
identifier ::= C style identifier | "#" reserved_word |
© 2005, 2009 Apple Inc. All Rights Reserved. (Last updated: 2009-05-06)
|
Did this document help you? |
Yes: Tell us what works for you.
|
|