Skip to content

Commit f7769cc

Browse files
authored
Updates EBNF grammar in docs (#39)
1 parent 24bcadc commit f7769cc

3 files changed

Lines changed: 13 additions & 7 deletions

File tree

CLAUDE.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,19 @@ expression → logical_or
2121
logical_or → logical_and ( ("OR" | "or") logical_and )*
2222
logical_and → logical_not ( ("AND" | "and") logical_not )*
2323
logical_not → ("NOT" | "not") logical_not | comparison
24-
comparison → addition ( ( ">" | "<" | ">=" | "<=" | "=" | "==" | "!=" | "in" | "contains" ) addition )?
24+
comparison → addition ( ( ">" | "<" | ">=" | "<=" | "=" | "==" | "!=" | "===" | "!==" | "in" | "contains" ) addition )?
2525
addition → multiplication ( ( "+" | "-" ) multiplication )*
2626
multiplication → unary ( ( "*" | "/" | "%" ) unary )*
2727
unary → ( "-" | "!" ) unary | postfix
2828
postfix → primary ( "[" expression "]" | "." IDENTIFIER )*
29-
primary → NUMBER | FLOAT | STRING | BOOLEAN | DATE | DATETIME | IDENTIFIER | list | object | function_call | "(" expression ")"
30-
function_call → IDENTIFIER "(" ( expression ( "," expression )* )? ")"
29+
primary → NUMBER | FLOAT | STRING | BOOLEAN | DATE | DATETIME | IDENTIFIER | duration | relative_date | list | object | function_call | "(" expression ")"
30+
function_call → FUNCTION_NAME "(" ( expression ( "," expression )* )? ")"
3131
list → "[" ( expression ( "," expression )* )? "]"
3232
object → "{" ( object_entry ( "," object_entry )* )? "}"
3333
object_entry → object_key ":" expression
3434
object_key → IDENTIFIER | STRING
35+
duration → NUMBER UNIT+
36+
relative_date → duration "ago" | duration "from" "now" | "next" duration | "last" duration
3537
```
3638

3739
### Core Components

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -355,17 +355,19 @@ expression → logical_or
355355
logical_or → logical_and ( ("OR" | "or") logical_and )*
356356
logical_and → logical_not ( ("AND" | "and") logical_not )*
357357
logical_not → ("NOT" | "not") logical_not | comparison
358-
comparison → addition ( ( ">" | "<" | ">=" | "<=" | "=" | "==" | "!=" | "in" | "contains" ) addition )?
358+
comparison → addition ( ( ">" | "<" | ">=" | "<=" | "=" | "==" | "!=" | "===" | "!==" | "in" | "contains" ) addition )?
359359
addition → multiplication ( ( "+" | "-" ) multiplication )*
360360
multiplication → unary ( ( "*" | "/" | "%" ) unary )*
361361
unary → ( "-" | "!" ) unary | postfix
362362
postfix → primary ( "[" expression "]" | "." IDENTIFIER )*
363-
primary → NUMBER | FLOAT | STRING | BOOLEAN | DATE | DATETIME | IDENTIFIER | function_call | list | object | "(" expression ")"
363+
primary → NUMBER | FLOAT | STRING | BOOLEAN | DATE | DATETIME | IDENTIFIER | duration | relative_date | function_call | list | object | "(" expression ")"
364364
function_call → FUNCTION_NAME "(" ( expression ( "," expression )* )? ")"
365365
list → "[" ( expression ( "," expression )* )? "]"
366366
object → "{" ( object_entry ( "," object_entry )* )? "}"
367367
object_entry → object_key ":" expression
368368
object_key → IDENTIFIER | STRING
369+
duration → NUMBER UNIT+
370+
relative_date → duration "ago" | duration "from" "now" | "next" duration | "last" duration
369371
```
370372

371373
### Core Components

lib/predicator/parser.ex

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,19 @@ defmodule Predicator.Parser do
1717
logical_or → logical_and ( "OR" | "||" logical_and )*
1818
logical_and → logical_not ( "AND" | "&&" logical_not )*
1919
logical_not → "NOT" | "!" logical_not | comparison
20-
comparison → addition ( ( ">" | "<" | ">=" | "<=" | "=" | "==" | "!=" | "in" | "contains" ) addition )?
20+
comparison → addition ( ( ">" | "<" | ">=" | "<=" | "=" | "==" | "!=" | "===" | "!==" | "in" | "contains" ) addition )?
2121
addition → multiplication ( ( "+" | "-" ) multiplication )*
2222
multiplication → unary ( ( "*" | "/" | "%" ) unary )*
2323
unary → ( "-" | "!" ) unary | postfix
2424
postfix → primary ( "[" expression "]" | "." IDENTIFIER )*
25-
primary → NUMBER | FLOAT | STRING | BOOLEAN | DATE | DATETIME | IDENTIFIER | function_call | list | object | "(" expression ")"
25+
primary → NUMBER | FLOAT | STRING | BOOLEAN | DATE | DATETIME | IDENTIFIER | duration | relative_date | function_call | list | object | "(" expression ")"
2626
function_call → FUNCTION_NAME "(" ( expression ( "," expression )* )? ")"
2727
list → "[" ( expression ( "," expression )* )? "]"
2828
object → "{" ( object_entry ( "," object_entry )* )? "}"
2929
object_entry → object_key ":" expression
3030
object_key → IDENTIFIER | STRING
31+
duration → NUMBER UNIT+
32+
relative_date → duration "ago" | duration "from" "now" | "next" duration | "last" duration
3133
3234
## Examples
3335

0 commit comments

Comments
 (0)