48 typedef enum { |
48 typedef enum { |
49 DAVQL_TOKEN_INVALID, DAVQL_TOKEN_KEYWORD, |
49 DAVQL_TOKEN_INVALID, DAVQL_TOKEN_KEYWORD, |
50 DAVQL_TOKEN_IDENTIFIER, DAVQL_TOKEN_FMTSPEC, |
50 DAVQL_TOKEN_IDENTIFIER, DAVQL_TOKEN_FMTSPEC, |
51 DAVQL_TOKEN_STRING, DAVQL_TOKEN_NUMBER, DAVQL_TOKEN_TIMESTAMP, |
51 DAVQL_TOKEN_STRING, DAVQL_TOKEN_NUMBER, DAVQL_TOKEN_TIMESTAMP, |
52 DAVQL_TOKEN_COMMA, DAVQL_TOKEN_OPENP, DAVQL_TOKEN_CLOSEP, |
52 DAVQL_TOKEN_COMMA, DAVQL_TOKEN_OPENP, DAVQL_TOKEN_CLOSEP, |
53 DAVQL_TOKEN_EQ, DAVQL_TOKEN_LT, DAVQL_TOKEN_GT, DAVQL_TOKEN_EXCLAIM, |
|
54 DAVQL_TOKEN_OPERATOR |
53 DAVQL_TOKEN_OPERATOR |
55 } davqltokenclass_t; |
54 } davqltokenclass_t; |
56 |
55 |
57 /** |
56 /** |
58 * Enumeration of possible expression types. |
57 * Enumeration of possible expression types. |
179 * Literal = Number | String | Timestamp; |
178 * Literal = Number | String | Timestamp; |
180 * Number = ?Digit?, {?Digit?} | "%d"; |
179 * Number = ?Digit?, {?Digit?} | "%d"; |
181 * String = "'", {?Character? - "'" | "'''"} , "'" | "%s"; |
180 * String = "'", {?Character? - "'" | "'''"} , "'" | "%s"; |
182 * Timestamp = "%t"; // TODO: maybe introduce a real literal |
181 * Timestamp = "%t"; // TODO: maybe introduce a real literal |
183 * |
182 * |
184 * LogicalExpression = BooleanLiteral, [LogicalOperator, LogicalExpression]; |
183 * LogicalExpression = BooleanExpression, [LogicalOperator, LogicalExpression]; |
185 * BooleanExpression = "not ", LogicalExpression |
184 * BooleanExpression = "not ", BooleanExpression |
186 * | "(", LogicalExpression, ")" |
185 * | "(", LogicalExpression, ")" |
187 * | BooleanPrimary; |
186 * | BooleanPrimary; |
188 * BooleanPrimary = Expression, (" like " | " unlike "), String |
187 * BooleanPrimary = Expression, (" like " | " unlike "), String |
189 * | Expression, Comparison, Expression |
188 * | Expression, Comparison, Expression |
190 * | FunctionCall | Identifier; |
189 * | FunctionCall | Identifier; |