libidav/davqlparser.h

changeset 102
e9ae1318a559
parent 98
237844f263b4
child 106
9cec78f23cbf
--- a/libidav/davqlparser.h	Sat May 02 11:00:28 2015 +0200
+++ b/libidav/davqlparser.h	Sat May 02 18:32:50 2015 +0200
@@ -141,10 +141,18 @@
  * The grammar for a DavQLStatement is:
  * 
  * <pre>
- * Expression = Expression, BinaryOperator, Expression
- *            | UnaryOperator, Expression
- *            | FunctionCall | Identifier | Literal
- *            | "(", Expression, ")";
+ * Expression        = AddExpression;
+ * AddExpression     = MultExpression, [AddOperator, AddExpression];
+ * MultExpression    = BitwiseExpression, [MultOperator, MultExpression];
+ * BitwiseExpression = UnaryExpression, [BitwiseOperator, BitwiseExpression];
+ * UnaryExpression   = [UnaryOperator], (AtomicExpression | ParExpression);
+ * AtomicExpression  = FunctionCall | Identifier | Literal;
+ * ParExpression     = "(", Expression, ")";
+ * 
+ * BitwiseOperator = "&" | "|" | "^";
+ * MultOperator    = "*" | "/";
+ * AddOperator     = "+" | "-";
+ * UnaryOperator   = "+" | "-" | "~";
  * 
  * FunctionCall    = Identifier, "(", ArgumentList, ")";
  * ArgumentList    = Expression, {",", Expression};
@@ -156,14 +164,13 @@
  * String          = "'", {?Character? - "'" | "'''"} , "'" | "%s";
  * Timestamp       = "%t"; // TODO: maybe introduce a real literal 
  * 
- * LogicalExpression = LogicalExpression, LogicalOperator, LogicalExpression
- *                   | "not ", LogicalExpression
- *                   | Expression, Comparison, Expression
+ * LogicalExpression = "not ", LogicalExpression
+ *                   | "(", LogicalExpression, ")"
+ *                   | BooleanExpression, [LogicalOperator, LogicalExpression];
+ * BooleanExpression = Expression, Comparison, Expression
  *                   | Expression, (" like " | " unlike "), String
- *                   | "(", LogicalExpression, ")";
+ *                   | FunctionCall | Identifier;
  * 
- * UnaryOperator   = "-" | "~";
- * BinaryOperator  = "+" | "-" | "*" | "/" | "&" | "|" | "^";
  * LogicalOperator = " and " | " or " | " xor ";
  * Comparison      = | "=" | "<" | ">" | "<=" | ">=" | "!=";
  * 
@@ -172,7 +179,7 @@
  *                  | "-";
  * FieldExpression  = Identifier
  *                  | Expression, " as ", Identifier;
- * SetExpressions   = SetExpression, {",", SetExpressions};
+ * SetExpressions   = SetExpression, {",", SetExpression};
  * SetExpression    = Identifier, "=", Expression;
  * 
  * Path = "%s"

mercurial