112 * |
112 * |
113 * FunctionCall = Identifier, "(", Expression, ")"; |
113 * FunctionCall = Identifier, "(", Expression, ")"; |
114 * Identifier = IdentifierChar - ?Digit?, {IdentifierChar} |
114 * Identifier = IdentifierChar - ?Digit?, {IdentifierChar} |
115 * | "`", ?Character?, {?Character?}, "`"; |
115 * | "`", ?Character?, {?Character?}, "`"; |
116 * IdentifierChar = ?Character - (" "|",")?; |
116 * IdentifierChar = ?Character - (" "|",")?; |
117 * Literal = ?Digit?, {?Digit?} | String; |
117 * Literal = Number | String; |
|
118 * Number = ?Digit?, {?Digit?} | "%d"; |
118 * String = "'", {?Character - "'"? | "'''"} , "'"; |
119 * String = "'", {?Character - "'"? | "'''"} , "'"; |
119 * |
120 * |
120 * LogicalExpression = LogicalExpression, LogicalOperator, LogicalExpression |
121 * LogicalExpression = LogicalExpression, LogicalOperator, LogicalExpression |
121 * | "not ", LogicalExpression |
122 * | "not ", LogicalExpression |
122 * | Expression, Comparison, Expression |
123 * | Expression, Comparison, Expression |
133 * FieldExpression = Identifier |
134 * FieldExpression = Identifier |
134 * | Expression, " as ", String; |
135 * | Expression, " as ", String; |
135 * SetExpressions = SetExpression, {",", {SetExpressions}; |
136 * SetExpressions = SetExpression, {",", {SetExpressions}; |
136 * SetExpression = Identifier, "=", Expression; |
137 * SetExpression = Identifier, "=", Expression; |
137 * |
138 * |
138 * WithClause = "depth", "=", Expression; |
139 * WithClause = "depth", "=", (Number | "infinity"); |
139 * |
140 * |
140 * </pre> |
141 * </pre> |
141 * |
142 * |
142 * Note: mandatory spaces are part of the grammar. But you may also insert an |
143 * Note: mandatory spaces are part of the grammar. But you may also insert an |
143 * arbitrary amount of optional spaces between two symbols if they are not part |
144 * arbitrary amount of optional spaces between two symbols if they are not part |
187 * <code>NULL</code>, if there is no where clause. |
188 * <code>NULL</code>, if there is no where clause. |
188 */ |
189 */ |
189 DavQLExpression* where; |
190 DavQLExpression* where; |
190 /** |
191 /** |
191 * The recursion depth for the statement. |
192 * The recursion depth for the statement. |
192 * Defaults to SIZE_MAX (unbound recursion). |
193 * Defaults to 1. |
193 */ |
194 */ |
194 size_t depth; |
195 int depth; |
195 } DavQLStatement; |
196 } DavQLStatement; |
|
197 |
|
198 /** |
|
199 * Infinity recursion depth for a DavQLStatement. |
|
200 */ |
|
201 #define DAV_DEPTH_INFINITY -1 |
196 |
202 |
197 |
203 |
198 /** |
204 /** |
199 * Starts an interactive debugger for a DavQLStatement. |
205 * Starts an interactive debugger for a DavQLStatement. |
200 * |
206 * |