NSExpressionType et definitions BNF des prédicates
laurris
Membre
Pas eu de réponse sur la liste cocoa-dev (j'espérais une réponse d'un ingénieur Apple) alors j'essaie ici:
How predicate's BNF definitions are mapped to NSExpressionType ?
On one side:
typedef enum {
NSConstantValueExpressionType = 0,
NSEvaluatedObjectExpressionType,
NSVariableExpressionType,
NSKeyPathExpressionType,
NSFunctionExpressionType
} NSExpressionType;
On the other side:
expression ::= "(" expression ")"
| binary_expression
| function_expression
| assignment_expression
| index_expression
| keypath_expression
| value_expression
I assume that ...
NSFunctionExpressionType -> function_expression
NSKeyPathExpressionType -> keypath_expression
NSConstantValueExpressionType -> value_expression
But ...
1- Does assignment_expression and index_expression have their counterpart in Foundation ?
2- Why NSEvaluatedObjectExpressionType seems equivalent to [value_expression > literal_value > SELF] in BNF and is it true ?
3- Why NSVariableExpressionType seems equivalent to [value_expression > literal_value > predicate_variable] and is it true ?
Thanks. Romain.
How predicate's BNF definitions are mapped to NSExpressionType ?
On one side:
typedef enum {
NSConstantValueExpressionType = 0,
NSEvaluatedObjectExpressionType,
NSVariableExpressionType,
NSKeyPathExpressionType,
NSFunctionExpressionType
} NSExpressionType;
On the other side:
expression ::= "(" expression ")"
| binary_expression
| function_expression
| assignment_expression
| index_expression
| keypath_expression
| value_expression
I assume that ...
NSFunctionExpressionType -> function_expression
NSKeyPathExpressionType -> keypath_expression
NSConstantValueExpressionType -> value_expression
But ...
1- Does assignment_expression and index_expression have their counterpart in Foundation ?
2- Why NSEvaluatedObjectExpressionType seems equivalent to [value_expression > literal_value > SELF] in BNF and is it true ?
3- Why NSVariableExpressionType seems equivalent to [value_expression > literal_value > predicate_variable] and is it true ?
Thanks. Romain.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'ai bien compris que la notation BNF ("Backus Naur Form" inventée par John Backus and Peter Naur) est une façon de présenter la grammaire d'un language.
Mais je ne saisis pas si la BNF notation de la doc Apple sur les predicates est issue du cerveau d'Apple ou s'il existe quelque part une norme "BNF predicate" acceptée par tout le monde.
Ca change tout parce que dans le 1er cas (inventé par Apple), on peut s'attendre à ce que leur document corresponde exactement à l'implémentation de NSPredicate. Or j'ai des petits doutes sur certains détails.