52 |
52 |
53 /** |
53 /** |
54 * Enumeration of possible expression operators. |
54 * Enumeration of possible expression operators. |
55 */ |
55 */ |
56 typedef enum { |
56 typedef enum { |
57 ADD, SUB, MUL, DIV, |
57 DAVQL_NOOP, |
58 AND, OR, XOR, NEG, |
58 DAVQL_ADD, DAVQL_SUB, DAVQL_MUL, DAVQL_DIV, |
59 NOT, LAND, LOR, LXOR, |
59 DAVQL_AND, DAVQL_OR, DAVQL_XOR, DAVQL_NEG, |
60 EQ, NEQ, LT, GT, LE, GE, |
60 DAVQL_NOT, DAVQL_LAND, DAVQL_LOR, DAVQL_LXOR, |
61 LIKE, UNLIKE |
61 DAVQL_EQ, DAVQL_NEQ, DAVQL_LT, DAVQL_GT, DAVQL_LE, DAVQL_GE, |
|
62 DAVQL_LIKE, DAVQL_UNLIKE |
62 } davqloperator_t; |
63 } davqloperator_t; |
63 |
64 |
64 /** |
65 /** |
65 * An expression within a DAVQL query. |
66 * An expression within a DAVQL query. |
66 */ |
67 */ |
108 * | UnaryOperator, Expression |
109 * | UnaryOperator, Expression |
109 * | FunctionCall | Identifier | Literal |
110 * | FunctionCall | Identifier | Literal |
110 * | "(", Expression, ")"; |
111 * | "(", Expression, ")"; |
111 * |
112 * |
112 * FunctionCall = Identifier, "(", Expression, ")"; |
113 * FunctionCall = Identifier, "(", Expression, ")"; |
113 * Identifier = IdentifierChar, {IdentifierChar} |
114 * Identifier = IdentifierChar - ?Digit?, {IdentifierChar} |
114 * | "`", ?Character?, {?Character?}, "`"; |
115 * | "`", ?Character?, {?Character?}, "`"; |
115 * IdentifierChar = ?Character - (" "|",")?; |
116 * IdentifierChar = ?Character - (" "|",")?; |
116 * Literal = ?Digit?, {?Digit?} | String; |
117 * Literal = ?Digit?, {?Digit?} | String; |
117 * String = "'", {?Character - "'"? | "'''"} , "'"; |
118 * String = "'", {?Character - "'"? | "'''"} , "'"; |
118 * |
119 * |