-
Notifications
You must be signed in to change notification settings - Fork 46
Description
This existing test passes just fine:
checkTreeExpr(['42+51', '42 + 51'], {
type: 'binary',
op: '+',
left: {
type: 'integer',
value: 42,
},
right: {
type: 'integer',
value: 51,
}
});... but adding this corresponding test for subtraction fails:
checkTreeExpr(['42-51', '42 - 51'], {
type: 'binary',
op: '-',
left: {
type: 'integer',
value: 42,
},
right: {
type: 'integer',
value: 51,
}
});... with a syntax error saying: Unexpected int token: "-51" in the spaceless case, so presumably the problem is that lexical analysis outputs the two tokens LITERAL 42, LITERAL -51, but the parsing only works if the tokens are LITERAL 42, MINUS, LITERAL 51, i.e. the minus token should have a higher precedence than the negative integer literal token.
Full test failure output
Error: Syntax error at line 1 col 3:42-51
^
Unexpected int token: "-51". Instead, I was expecting to see one of the following:A op_cast token based on:
expr_member → expr_member$subexpression$3 ● %op_cast data_type
expr_various_constructs$macrocall$4 → ● expr_member
expr_various_constructs$macrocall$1 → ● expr_various_constructs$macrocall$4
expr_various_constructs → ● expr_various_constructs$macrocall$1
expr_string_compare$macrocall$4 → ● expr_various_constructs
expr_string_compare$macrocall$1 → ● expr_string_compare$macrocall$4
expr_string_compare → ● expr_string_compare$macrocall$1
expr_unary_add$macrocall$4 → ● expr_string_compare
expr_unary_add$macrocall$1 → ● expr_unary_add$macrocall$4
expr_unary_add → ● expr_unary_add$macrocall$1
expr_exp$macrocall$4 → ● expr_unary_add
expr_exp$macrocall$1 → ● expr_exp$macrocall$4
expr_exp → ● expr_exp$macrocall$1
expr_mult$macrocall$4 → ● expr_exp
expr_mult$macrocall$1 → ● expr_mult$macrocall$4
expr_mult → ● expr_mult$macrocall$1
expr_add$macrocall$4 → ● expr_mult
expr_add$macrocall$1 → ● expr_add$macrocall$4
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A op_member token based on:
ops_member$subexpression$1 → ● %op_member
ops_member → ● ops_member$subexpression$1
expr_member → expr_member$subexpression$1 ● ops_member expr_member$subexpression$2
expr_various_constructs$macrocall$4 → ● expr_member
expr_various_constructs$macrocall$1 → ● expr_various_constructs$macrocall$4
expr_various_constructs → ● expr_various_constructs$macrocall$1
expr_string_compare$macrocall$4 → ● expr_various_constructs
expr_string_compare$macrocall$1 → ● expr_string_compare$macrocall$4
expr_string_compare → ● expr_string_compare$macrocall$1
expr_unary_add$macrocall$4 → ● expr_string_compare
expr_unary_add$macrocall$1 → ● expr_unary_add$macrocall$4
expr_unary_add → ● expr_unary_add$macrocall$1
expr_exp$macrocall$4 → ● expr_unary_add
expr_exp$macrocall$1 → ● expr_exp$macrocall$4
expr_exp → ● expr_exp$macrocall$1
expr_mult$macrocall$4 → ● expr_exp
expr_mult$macrocall$1 → ● expr_mult$macrocall$4
expr_mult → ● expr_mult$macrocall$1
expr_add$macrocall$4 → ● expr_mult
expr_add$macrocall$1 → ● expr_add$macrocall$4
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A op_membertext token based on:
ops_member$subexpression$1 → ● %op_membertext
ops_member → ● ops_member$subexpression$1
expr_member → expr_member$subexpression$1 ● ops_member expr_member$subexpression$2
expr_various_constructs$macrocall$4 → ● expr_member
expr_various_constructs$macrocall$1 → ● expr_various_constructs$macrocall$4
expr_various_constructs → ● expr_various_constructs$macrocall$1
expr_string_compare$macrocall$4 → ● expr_various_constructs
expr_string_compare$macrocall$1 → ● expr_string_compare$macrocall$4
expr_string_compare → ● expr_string_compare$macrocall$1
expr_unary_add$macrocall$4 → ● expr_string_compare
expr_unary_add$macrocall$1 → ● expr_unary_add$macrocall$4
expr_unary_add → ● expr_unary_add$macrocall$1
expr_exp$macrocall$4 → ● expr_unary_add
expr_exp$macrocall$1 → ● expr_exp$macrocall$4
expr_exp → ● expr_exp$macrocall$1
expr_mult$macrocall$4 → ● expr_exp
expr_mult$macrocall$1 → ● expr_mult$macrocall$4
expr_mult → ● expr_mult$macrocall$1
expr_add$macrocall$4 → ● expr_mult
expr_add$macrocall$1 → ● expr_add$macrocall$4
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A word token based on:
kw_at → ● %word
various_binaries → ● kw_at kw_time kw_zone
expr_various_constructs$macrocall$2$macrocall$2 → ● various_binaries
expr_various_constructs$macrocall$2$macrocall$1 → ● expr_various_constructs$macrocall$2$macrocall$2
expr_various_constructs$macrocall$2 → ● expr_various_constructs$macrocall$2$macrocall$1
expr_various_constructs$macrocall$1 → expr_various_constructs$macrocall$1$subexpression$1 ● expr_various_constructs$macrocall$2 expr_various_constructs$macrocall$1$subexpression$2
expr_various_constructs → ● expr_various_constructs$macrocall$1
expr_string_compare$macrocall$4 → ● expr_various_constructs
expr_string_compare$macrocall$1 → ● expr_string_compare$macrocall$4
expr_string_compare → ● expr_string_compare$macrocall$1
expr_unary_add$macrocall$4 → ● expr_string_compare
expr_unary_add$macrocall$1 → ● expr_unary_add$macrocall$4
expr_unary_add → ● expr_unary_add$macrocall$1
expr_exp$macrocall$4 → ● expr_unary_add
expr_exp$macrocall$1 → ● expr_exp$macrocall$4
expr_exp → ● expr_exp$macrocall$1
expr_mult$macrocall$4 → ● expr_exp
expr_mult$macrocall$1 → ● expr_mult$macrocall$4
expr_mult → ● expr_mult$macrocall$1
expr_add$macrocall$4 → ● expr_mult
expr_add$macrocall$1 → ● expr_add$macrocall$4
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A word token based on:
kw_contains → ● %word
ops_string_compare → ● kw_contains
expr_string_compare$macrocall$2$macrocall$2 → ● ops_string_compare
expr_string_compare$macrocall$2$macrocall$1 → ● expr_string_compare$macrocall$2$macrocall$2
expr_string_compare$macrocall$2 → ● expr_string_compare$macrocall$2$macrocall$1
expr_string_compare$macrocall$1 → expr_string_compare$macrocall$1$subexpression$1 ● expr_string_compare$macrocall$2 expr_string_compare$macrocall$1$subexpression$2
expr_string_compare → ● expr_string_compare$macrocall$1
expr_unary_add$macrocall$4 → ● expr_string_compare
expr_unary_add$macrocall$1 → ● expr_unary_add$macrocall$4
expr_unary_add → ● expr_unary_add$macrocall$1
expr_exp$macrocall$4 → ● expr_unary_add
expr_exp$macrocall$1 → ● expr_exp$macrocall$4
expr_exp → ● expr_exp$macrocall$1
expr_mult$macrocall$4 → ● expr_exp
expr_mult$macrocall$1 → ● expr_mult$macrocall$4
expr_mult → ● expr_mult$macrocall$1
expr_add$macrocall$4 → ● expr_mult
expr_add$macrocall$1 → ● expr_add$macrocall$4
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A word token based on:
kw_matches → ● %word
ops_string_compare → ● kw_matches
expr_string_compare$macrocall$2$macrocall$2 → ● ops_string_compare
expr_string_compare$macrocall$2$macrocall$1 → ● expr_string_compare$macrocall$2$macrocall$2
expr_string_compare$macrocall$2 → ● expr_string_compare$macrocall$2$macrocall$1
expr_string_compare$macrocall$1 → expr_string_compare$macrocall$1$subexpression$1 ● expr_string_compare$macrocall$2 expr_string_compare$macrocall$1$subexpression$2
expr_string_compare → ● expr_string_compare$macrocall$1
expr_unary_add$macrocall$4 → ● expr_string_compare
expr_unary_add$macrocall$1 → ● expr_unary_add$macrocall$4
expr_unary_add → ● expr_unary_add$macrocall$1
expr_exp$macrocall$4 → ● expr_unary_add
expr_exp$macrocall$1 → ● expr_exp$macrocall$4
expr_exp → ● expr_exp$macrocall$1
expr_mult$macrocall$4 → ● expr_exp
expr_mult$macrocall$1 → ● expr_mult$macrocall$4
expr_mult → ● expr_mult$macrocall$1
expr_add$macrocall$4 → ● expr_mult
expr_add$macrocall$1 → ● expr_add$macrocall$4
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A word token based on:
kw_ends → ● %word
kw_endswith → ● kw_ends %kw_with
ops_string_compare → ● kw_endswith
expr_string_compare$macrocall$2$macrocall$2 → ● ops_string_compare
expr_string_compare$macrocall$2$macrocall$1 → ● expr_string_compare$macrocall$2$macrocall$2
expr_string_compare$macrocall$2 → ● expr_string_compare$macrocall$2$macrocall$1
expr_string_compare$macrocall$1 → expr_string_compare$macrocall$1$subexpression$1 ● expr_string_compare$macrocall$2 expr_string_compare$macrocall$1$subexpression$2
expr_string_compare → ● expr_string_compare$macrocall$1
expr_unary_add$macrocall$4 → ● expr_string_compare
expr_unary_add$macrocall$1 → ● expr_unary_add$macrocall$4
expr_unary_add → ● expr_unary_add$macrocall$1
expr_exp$macrocall$4 → ● expr_unary_add
expr_exp$macrocall$1 → ● expr_exp$macrocall$4
expr_exp → ● expr_exp$macrocall$1
expr_mult$macrocall$4 → ● expr_exp
expr_mult$macrocall$1 → ● expr_mult$macrocall$4
expr_mult → ● expr_mult$macrocall$1
expr_add$macrocall$4 → ● expr_mult
expr_add$macrocall$1 → ● expr_add$macrocall$4
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A word token based on:
kw_starts → ● %word
kw_startswith → ● kw_starts %kw_with
ops_string_compare → ● kw_startswith
expr_string_compare$macrocall$2$macrocall$2 → ● ops_string_compare
expr_string_compare$macrocall$2$macrocall$1 → ● expr_string_compare$macrocall$2$macrocall$2
expr_string_compare$macrocall$2 → ● expr_string_compare$macrocall$2$macrocall$1
expr_string_compare$macrocall$1 → expr_string_compare$macrocall$1$subexpression$1 ● expr_string_compare$macrocall$2 expr_string_compare$macrocall$1$subexpression$2
expr_string_compare → ● expr_string_compare$macrocall$1
expr_unary_add$macrocall$4 → ● expr_string_compare
expr_unary_add$macrocall$1 → ● expr_unary_add$macrocall$4
expr_unary_add → ● expr_unary_add$macrocall$1
expr_exp$macrocall$4 → ● expr_unary_add
expr_exp$macrocall$1 → ● expr_exp$macrocall$4
expr_exp → ● expr_exp$macrocall$1
expr_mult$macrocall$4 → ● expr_exp
expr_mult$macrocall$1 → ● expr_mult$macrocall$4
expr_mult → ● expr_mult$macrocall$1
expr_add$macrocall$4 → ● expr_mult
expr_add$macrocall$1 → ● expr_add$macrocall$4
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A word token based on:
kw_operator → ● %word
expr_exp$macrocall$2$macrocall$1 → ● kw_operator lparen ident dot expr_exp$macrocall$2$macrocall$2 rparen
expr_exp$macrocall$2 → ● expr_exp$macrocall$2$macrocall$1
expr_exp$macrocall$1 → expr_exp$macrocall$1$subexpression$1 ● expr_exp$macrocall$2 expr_exp$macrocall$1$subexpression$2
expr_exp → ● expr_exp$macrocall$1
expr_mult$macrocall$4 → ● expr_exp
expr_mult$macrocall$1 → ● expr_mult$macrocall$4
expr_mult → ● expr_mult$macrocall$1
expr_add$macrocall$4 → ● expr_mult
expr_add$macrocall$1 → ● expr_add$macrocall$4
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A op_exp token based on:
expr_exp$macrocall$2$macrocall$2 → ● %op_exp
expr_exp$macrocall$2$macrocall$1$macrocall$2 → ● expr_exp$macrocall$2$macrocall$2
expr_exp$macrocall$2$macrocall$1$macrocall$1 → ● expr_exp$macrocall$2$macrocall$1$macrocall$2
expr_exp$macrocall$2$macrocall$1 → ● expr_exp$macrocall$2$macrocall$1$macrocall$1
expr_exp$macrocall$2 → ● expr_exp$macrocall$2$macrocall$1
expr_exp$macrocall$1 → expr_exp$macrocall$1$subexpression$1 ● expr_exp$macrocall$2 expr_exp$macrocall$1$subexpression$2
expr_exp → ● expr_exp$macrocall$1
expr_mult$macrocall$4 → ● expr_exp
expr_mult$macrocall$1 → ● expr_mult$macrocall$4
expr_mult → ● expr_mult$macrocall$1
expr_add$macrocall$4 → ● expr_mult
expr_add$macrocall$1 → ● expr_add$macrocall$4
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A star token based on:
expr_mult$macrocall$2$macrocall$2$subexpression$1 → ● %star
expr_mult$macrocall$2$macrocall$2 → ● expr_mult$macrocall$2$macrocall$2$subexpression$1
expr_mult$macrocall$2$macrocall$1$macrocall$2 → ● expr_mult$macrocall$2$macrocall$2
expr_mult$macrocall$2$macrocall$1$macrocall$1 → ● expr_mult$macrocall$2$macrocall$1$macrocall$2
expr_mult$macrocall$2$macrocall$1 → ● expr_mult$macrocall$2$macrocall$1$macrocall$1
expr_mult$macrocall$2 → ● expr_mult$macrocall$2$macrocall$1
expr_mult$macrocall$1 → expr_mult$macrocall$1$subexpression$1 ● expr_mult$macrocall$2 expr_mult$macrocall$1$subexpression$2
expr_mult → ● expr_mult$macrocall$1
expr_add$macrocall$4 → ● expr_mult
expr_add$macrocall$1 → ● expr_add$macrocall$4
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A op_div token based on:
expr_mult$macrocall$2$macrocall$2$subexpression$1 → ● %op_div
expr_mult$macrocall$2$macrocall$2 → ● expr_mult$macrocall$2$macrocall$2$subexpression$1
expr_mult$macrocall$2$macrocall$1$macrocall$2 → ● expr_mult$macrocall$2$macrocall$2
expr_mult$macrocall$2$macrocall$1$macrocall$1 → ● expr_mult$macrocall$2$macrocall$1$macrocall$2
expr_mult$macrocall$2$macrocall$1 → ● expr_mult$macrocall$2$macrocall$1$macrocall$1
expr_mult$macrocall$2 → ● expr_mult$macrocall$2$macrocall$1
expr_mult$macrocall$1 → expr_mult$macrocall$1$subexpression$1 ● expr_mult$macrocall$2 expr_mult$macrocall$1$subexpression$2
expr_mult → ● expr_mult$macrocall$1
expr_add$macrocall$4 → ● expr_mult
expr_add$macrocall$1 → ● expr_add$macrocall$4
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A op_mod token based on:
expr_mult$macrocall$2$macrocall$2$subexpression$1 → ● %op_mod
expr_mult$macrocall$2$macrocall$2 → ● expr_mult$macrocall$2$macrocall$2$subexpression$1
expr_mult$macrocall$2$macrocall$1$macrocall$2 → ● expr_mult$macrocall$2$macrocall$2
expr_mult$macrocall$2$macrocall$1$macrocall$1 → ● expr_mult$macrocall$2$macrocall$1$macrocall$2
expr_mult$macrocall$2$macrocall$1 → ● expr_mult$macrocall$2$macrocall$1$macrocall$1
expr_mult$macrocall$2 → ● expr_mult$macrocall$2$macrocall$1
expr_mult$macrocall$1 → expr_mult$macrocall$1$subexpression$1 ● expr_mult$macrocall$2 expr_mult$macrocall$1$subexpression$2
expr_mult → ● expr_mult$macrocall$1
expr_add$macrocall$4 → ● expr_mult
expr_add$macrocall$1 → ● expr_add$macrocall$4
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A op_plus token based on:
expr_add$macrocall$2$macrocall$2$subexpression$1 → ● %op_plus
expr_add$macrocall$2$macrocall$2 → ● expr_add$macrocall$2$macrocall$2$subexpression$1
expr_add$macrocall$2$macrocall$1$macrocall$2 → ● expr_add$macrocall$2$macrocall$2
expr_add$macrocall$2$macrocall$1$macrocall$1 → ● expr_add$macrocall$2$macrocall$1$macrocall$2
expr_add$macrocall$2$macrocall$1 → ● expr_add$macrocall$2$macrocall$1$macrocall$1
expr_add$macrocall$2 → ● expr_add$macrocall$2$macrocall$1
expr_add$macrocall$1 → expr_add$macrocall$1$subexpression$1 ● expr_add$macrocall$2 expr_add$macrocall$1$subexpression$2
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A op_minus token based on:
expr_add$macrocall$2$macrocall$2$subexpression$1 → ● %op_minus
expr_add$macrocall$2$macrocall$2 → ● expr_add$macrocall$2$macrocall$2$subexpression$1
expr_add$macrocall$2$macrocall$1$macrocall$2 → ● expr_add$macrocall$2$macrocall$2
expr_add$macrocall$2$macrocall$1$macrocall$1 → ● expr_add$macrocall$2$macrocall$1$macrocall$2
expr_add$macrocall$2$macrocall$1 → ● expr_add$macrocall$2$macrocall$1$macrocall$1
expr_add$macrocall$2 → ● expr_add$macrocall$2$macrocall$1
expr_add$macrocall$1 → expr_add$macrocall$1$subexpression$1 ● expr_add$macrocall$2 expr_add$macrocall$1$subexpression$2
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A op_additive token based on:
expr_add$macrocall$2$macrocall$2$subexpression$1 → ● %op_additive
expr_add$macrocall$2$macrocall$2 → ● expr_add$macrocall$2$macrocall$2$subexpression$1
expr_add$macrocall$2$macrocall$1$macrocall$2 → ● expr_add$macrocall$2$macrocall$2
expr_add$macrocall$2$macrocall$1$macrocall$1 → ● expr_add$macrocall$2$macrocall$1$macrocall$2
expr_add$macrocall$2$macrocall$1 → ● expr_add$macrocall$2$macrocall$1$macrocall$1
expr_add$macrocall$2 → ● expr_add$macrocall$2$macrocall$1
expr_add$macrocall$1 → expr_add$macrocall$1$subexpression$1 ● expr_add$macrocall$2 expr_add$macrocall$1$subexpression$2
expr_add → ● expr_add$macrocall$1
expr_in$macrocall$4 → ● expr_add
expr_in$macrocall$1 → ● expr_in$macrocall$4
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A kw_not token based on:
ops_in$ebnf$1 → ● %kw_not
ops_in → ● ops_in$ebnf$1 %kw_in
expr_in$macrocall$2$macrocall$2 → ● ops_in
expr_in$macrocall$2$macrocall$1 → ● expr_in$macrocall$2$macrocall$2
expr_in$macrocall$2 → ● expr_in$macrocall$2$macrocall$1
expr_in$macrocall$1 → expr_in$macrocall$1$subexpression$1 ● expr_in$macrocall$2 expr_in$macrocall$1$subexpression$2
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A kw_in token based on:
ops_in → ops_in$ebnf$1 ● %kw_in
expr_in$macrocall$2$macrocall$2 → ● ops_in
expr_in$macrocall$2$macrocall$1 → ● expr_in$macrocall$2$macrocall$2
expr_in$macrocall$2 → ● expr_in$macrocall$2$macrocall$1
expr_in$macrocall$1 → expr_in$macrocall$1$subexpression$1 ● expr_in$macrocall$2 expr_in$macrocall$1$subexpression$2
expr_in → ● expr_in$macrocall$1
expr_like$macrocall$4 → ● expr_in
expr_like$macrocall$1 → ● expr_like$macrocall$4
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A kw_not token based on:
ops_like_keywors$ebnf$1 → ● %kw_not
ops_like_keywors → ● ops_like_keywors$ebnf$1 ops_like_keywors$subexpression$1
ops_like → ● ops_like_keywors
expr_like$macrocall$2$macrocall$2 → ● ops_like
expr_like$macrocall$2$macrocall$1 → ● expr_like$macrocall$2$macrocall$2
expr_like$macrocall$2 → ● expr_like$macrocall$2$macrocall$1
expr_like$macrocall$1 → expr_like$macrocall$1$subexpression$1 ● expr_like$macrocall$2 expr_like$macrocall$1$subexpression$2
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A op_like token based on:
ops_like_operators$subexpression$1 → ● %op_like
ops_like_operators → ● ops_like_operators$subexpression$1
ops_like → ● ops_like_operators
expr_like$macrocall$2$macrocall$2 → ● ops_like
expr_like$macrocall$2$macrocall$1 → ● expr_like$macrocall$2$macrocall$2
expr_like$macrocall$2 → ● expr_like$macrocall$2$macrocall$1
expr_like$macrocall$1 → expr_like$macrocall$1$subexpression$1 ● expr_like$macrocall$2 expr_like$macrocall$1$subexpression$2
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A op_ilike token based on:
ops_like_operators$subexpression$2 → ● %op_ilike
ops_like_operators → ● ops_like_operators$subexpression$2
ops_like → ● ops_like_operators
expr_like$macrocall$2$macrocall$2 → ● ops_like
expr_like$macrocall$2$macrocall$1 → ● expr_like$macrocall$2$macrocall$2
expr_like$macrocall$2 → ● expr_like$macrocall$2$macrocall$1
expr_like$macrocall$1 → expr_like$macrocall$1$subexpression$1 ● expr_like$macrocall$2 expr_like$macrocall$1$subexpression$2
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A op_not_like token based on:
ops_like_operators$subexpression$3 → ● %op_not_like
ops_like_operators → ● ops_like_operators$subexpression$3
ops_like → ● ops_like_operators
expr_like$macrocall$2$macrocall$2 → ● ops_like
expr_like$macrocall$2$macrocall$1 → ● expr_like$macrocall$2$macrocall$2
expr_like$macrocall$2 → ● expr_like$macrocall$2$macrocall$1
expr_like$macrocall$1 → expr_like$macrocall$1$subexpression$1 ● expr_like$macrocall$2 expr_like$macrocall$1$subexpression$2
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A op_not_ilike token based on:
ops_like_operators$subexpression$4 → ● %op_not_ilike
ops_like_operators → ● ops_like_operators$subexpression$4
ops_like → ● ops_like_operators
expr_like$macrocall$2$macrocall$2 → ● ops_like
expr_like$macrocall$2$macrocall$1 → ● expr_like$macrocall$2$macrocall$2
expr_like$macrocall$2 → ● expr_like$macrocall$2$macrocall$1
expr_like$macrocall$1 → expr_like$macrocall$1$subexpression$1 ● expr_like$macrocall$2 expr_like$macrocall$1$subexpression$2
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A kw_like token based on:
ops_like_keywors$subexpression$1 → ● %kw_like
ops_like_keywors → ops_like_keywors$ebnf$1 ● ops_like_keywors$subexpression$1
ops_like → ● ops_like_keywors
expr_like$macrocall$2$macrocall$2 → ● ops_like
expr_like$macrocall$2$macrocall$1 → ● expr_like$macrocall$2$macrocall$2
expr_like$macrocall$2 → ● expr_like$macrocall$2$macrocall$1
expr_like$macrocall$1 → expr_like$macrocall$1$subexpression$1 ● expr_like$macrocall$2 expr_like$macrocall$1$subexpression$2
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A kw_ilike token based on:
ops_like_keywors$subexpression$1 → ● %kw_ilike
ops_like_keywors → ops_like_keywors$ebnf$1 ● ops_like_keywors$subexpression$1
ops_like → ● ops_like_keywors
expr_like$macrocall$2$macrocall$2 → ● ops_like
expr_like$macrocall$2$macrocall$1 → ● expr_like$macrocall$2$macrocall$2
expr_like$macrocall$2 → ● expr_like$macrocall$2$macrocall$1
expr_like$macrocall$1 → expr_like$macrocall$1$subexpression$1 ● expr_like$macrocall$2 expr_like$macrocall$1$subexpression$2
expr_like → ● expr_like$macrocall$1
expr_others$macrocall$4 → ● expr_like
expr_others$macrocall$1 → ● expr_others$macrocall$4
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A ops_others token based on:
expr_others$macrocall$2$macrocall$2 → ● %ops_others
expr_others$macrocall$2$macrocall$1$macrocall$2 → ● expr_others$macrocall$2$macrocall$2
expr_others$macrocall$2$macrocall$1$macrocall$1 → ● expr_others$macrocall$2$macrocall$1$macrocall$2
expr_others$macrocall$2$macrocall$1 → ● expr_others$macrocall$2$macrocall$1$macrocall$1
expr_others$macrocall$2 → ● expr_others$macrocall$2$macrocall$1
expr_others$macrocall$1 → expr_others$macrocall$1$subexpression$1 ● expr_others$macrocall$2 expr_others$macrocall$1$subexpression$2
expr_others → ● expr_others$macrocall$1
expr_range$macrocall$5 → ● expr_others
expr_range$macrocall$1 → ● expr_range$macrocall$5
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A kw_not token based on:
ops_between$ebnf$1 → ● %kw_not
ops_between → ● ops_between$ebnf$1 kw_between
expr_range$macrocall$2 → ● ops_between
expr_range$macrocall$1 → expr_range$macrocall$1$subexpression$1 ● expr_range$macrocall$2 expr_range$macrocall$1$subexpression$2 expr_range$macrocall$3 expr_range$macrocall$1$subexpression$3
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A kw_is token based on:
expr_is → expr_is$subexpression$5 ● %kw_is expr_is$ebnf$1 expr_is$subexpression$6
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A kw_notnull token based on:
expr_is$subexpression$4 → ● %kw_notnull
expr_is → expr_is$subexpression$3 ● expr_is$subexpression$4
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A kw_is token based on:
expr_is$subexpression$4 → ● %kw_is kw_not_null
expr_is → expr_is$subexpression$3 ● expr_is$subexpression$4
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A kw_isnull token based on:
expr_is$subexpression$2 → ● %kw_isnull
expr_is → expr_is$subexpression$1 ● expr_is$subexpression$2
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A kw_is token based on:
expr_is$subexpression$2 → ● %kw_is %kw_null
expr_is → expr_is$subexpression$1 ● expr_is$subexpression$2
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A word token based on:
kw_between → ● %word
ops_between → ops_between$ebnf$1 ● kw_between
expr_range$macrocall$2 → ● ops_between
expr_range$macrocall$1 → expr_range$macrocall$1$subexpression$1 ● expr_range$macrocall$2 expr_range$macrocall$1$subexpression$2 expr_range$macrocall$3 expr_range$macrocall$1$subexpression$3
expr_range → ● expr_range$macrocall$1
expr_compare$macrocall$4 → ● expr_range
expr_compare$macrocall$1 → ● expr_compare$macrocall$4
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A op_compare token based on:
expr_compare$macrocall$2$macrocall$2 → ● %op_compare
expr_compare$macrocall$2$macrocall$1$macrocall$2 → ● expr_compare$macrocall$2$macrocall$2
expr_compare$macrocall$2$macrocall$1$macrocall$1 → ● expr_compare$macrocall$2$macrocall$1$macrocall$2
expr_compare$macrocall$2$macrocall$1 → ● expr_compare$macrocall$2$macrocall$1$macrocall$1
expr_compare$macrocall$2 → ● expr_compare$macrocall$2$macrocall$1
expr_compare$macrocall$1 → expr_compare$macrocall$1$subexpression$1 ● expr_compare$macrocall$2 expr_compare$macrocall$1$subexpression$2
expr_compare → ● expr_compare$macrocall$1
expr_is → ● expr_compare
expr_eq$macrocall$4 → ● expr_is
expr_eq$macrocall$1 → ● expr_eq$macrocall$4
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A op_eq token based on:
expr_eq$macrocall$2$macrocall$2$subexpression$1 → ● %op_eq
expr_eq$macrocall$2$macrocall$2 → ● expr_eq$macrocall$2$macrocall$2$subexpression$1
expr_eq$macrocall$2$macrocall$1$macrocall$2 → ● expr_eq$macrocall$2$macrocall$2
expr_eq$macrocall$2$macrocall$1$macrocall$1 → ● expr_eq$macrocall$2$macrocall$1$macrocall$2
expr_eq$macrocall$2$macrocall$1 → ● expr_eq$macrocall$2$macrocall$1$macrocall$1
expr_eq$macrocall$2 → ● expr_eq$macrocall$2$macrocall$1
expr_eq$macrocall$1 → expr_eq$macrocall$1$subexpression$1 ● expr_eq$macrocall$2 expr_eq$macrocall$1$subexpression$2
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A op_neq token based on:
expr_eq$macrocall$2$macrocall$2$subexpression$1 → ● %op_neq
expr_eq$macrocall$2$macrocall$2 → ● expr_eq$macrocall$2$macrocall$2$subexpression$1
expr_eq$macrocall$2$macrocall$1$macrocall$2 → ● expr_eq$macrocall$2$macrocall$2
expr_eq$macrocall$2$macrocall$1$macrocall$1 → ● expr_eq$macrocall$2$macrocall$1$macrocall$2
expr_eq$macrocall$2$macrocall$1 → ● expr_eq$macrocall$2$macrocall$1$macrocall$1
expr_eq$macrocall$2 → ● expr_eq$macrocall$2$macrocall$1
expr_eq$macrocall$1 → expr_eq$macrocall$1$subexpression$1 ● expr_eq$macrocall$2 expr_eq$macrocall$1$subexpression$2
expr_eq → ● expr_eq$macrocall$1
expr_not$macrocall$4 → ● expr_eq
expr_not$macrocall$1 → ● expr_not$macrocall$4
expr_not → ● expr_not$macrocall$1
expr_and$macrocall$4 → ● expr_not
expr_and$macrocall$1 → ● expr_and$macrocall$4
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A kw_and token based on:
expr_and$macrocall$2$macrocall$2 → ● %kw_and
expr_and$macrocall$2$macrocall$1 → ● expr_and$macrocall$2$macrocall$2
expr_and$macrocall$2 → ● expr_and$macrocall$2$macrocall$1
expr_and$macrocall$1 → expr_and$macrocall$1$subexpression$1 ● expr_and$macrocall$2 expr_and$macrocall$1$subexpression$2
expr_and → ● expr_and$macrocall$1
expr_or$macrocall$4 → ● expr_and
expr_or$macrocall$1 → ● expr_or$macrocall$4
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostar
A kw_or token based on:
expr_or$macrocall$2$macrocall$2 → ● %kw_or
expr_or$macrocall$2$macrocall$1 → ● expr_or$macrocall$2$macrocall$2
expr_or$macrocall$2 → ● expr_or$macrocall$2$macrocall$1
expr_or$macrocall$1 → expr_or$macrocall$1$subexpression$1 ● expr_or$macrocall$2 expr_or$macrocall$1$subexpression$2
expr_or → ● expr_or$macrocall$1
expr_nostar → ● expr_or
expr → ● expr_nostarat Parser.feed (node_modules/nearley/lib/nearley.js:343:27) at doParse (src/syntax/spec-utils.ts:165:24) at /Users/gthb/git/pgsql-ast-parser/src/syntax/spec-utils.ts:182:56 at tracking (src/lexer.ts:190:16) at Context.<anonymous> (src/syntax/spec-utils.ts:182:49) at processImmediate (node:internal/timers:476:21)