Skip to content

Expression that subtracts a literal number without space fails to parse #133

@gthb

Description

@gthb

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_nostar

  at 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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions