question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. ItΒ collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Extension, and col_description errors

See original GitHub issue

So I have 2 different errors.

One is related to CREATE EXTENSION IF when trying to use UUIDs:

Error: Syntax error at line 1 col 18:

        CREATE EXTENSION IF
                         ^
      Unexpected word token: "IF". I did not expect any more input. Here is the state of my parse table:

          kw_index β†’ %word ●

          at Parser.feed (/home/bobby/phorm-new/node_modules/nearley/lib/nearley.js:343:27)
          at _parse (/home/bobby/phorm-new/node_modules/pgsql-ast-parser/src/parser.ts:43:12)
          at Object.parse (/home/bobby/phorm-new/node_modules/pgsql-ast-parser/src/parser.ts:24:18)
          at Object.parseSql (/home/bobby/phorm-new/node_modules/pg-mem/src/parse-cache.ts:25:15)
          at Query.parse (/home/bobby/phorm-new/node_modules/pg-mem/src/query.ts:80:16)
          at Query.queries (/home/bobby/phorm-new/node_modules/pg-mem/src/query.ts:88:31)
          at queries.next (<anonymous>)
          at Query.query (/home/bobby/phorm-new/node_modules/pg-mem/src/query.ts:67:20)
          at /home/bobby/phorm-new/node_modules/pg-mem/src/adapters.ts:81:80
          at Timeout.task [as _onTimeout] (/home/bobby/phorm-new/node_modules/jsdom/lib/jsdom/browser/Window.js:391:19)
          at listOnTimeout (internal/timers.js:554:17)
          at processTimers (internal/timers.js:497:7)

The other seems to be the AST parser disliking column descriptions (or at least the function):

An insanely long AST error (I'm assuming)
Error: Syntax error at line 4 col 43:

                        pg_catalog.col_description(
                                                  ^
      Unexpected lparen token: "(". 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_array_index β†’  ● expr_member
          expr_unary_add$macrocall$4 β†’  ● expr_array_index
          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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A lbracket token based on:
          expr_array_index β†’ expr_array_index$subexpression$1 ● %lbracket expr_nostar %rbracket
          expr_unary_add$macrocall$4 β†’  ● expr_array_index
          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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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_array_index β†’  ● expr_member
          expr_unary_add$macrocall$4 β†’  ● expr_array_index
          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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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_array_index β†’  ● expr_member
          expr_unary_add$macrocall$4 β†’  ● expr_array_index
          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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A op_exp token based on:
          expr_exp$macrocall$2 β†’  ● %op_exp
          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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A star token based on:
          expr_mult$macrocall$2$subexpression$1 β†’  ● %star
          expr_mult$macrocall$2 β†’  ● expr_mult$macrocall$2$subexpression$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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A op_div token based on:
          expr_mult$macrocall$2$subexpression$1 β†’  ● %op_div
          expr_mult$macrocall$2 β†’  ● expr_mult$macrocall$2$subexpression$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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A op_mod token based on:
          expr_mult$macrocall$2$subexpression$1 β†’  ● %op_mod
          expr_mult$macrocall$2 β†’  ● expr_mult$macrocall$2$subexpression$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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A op_plus token based on:
          expr_add$macrocall$2$subexpression$1 β†’  ● %op_plus
          expr_add$macrocall$2 β†’  ● expr_add$macrocall$2$subexpression$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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A op_minus token based on:
          expr_add$macrocall$2$subexpression$1 β†’  ● %op_minus
          expr_add$macrocall$2 β†’  ● expr_add$macrocall$2$subexpression$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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A op_additive token based on:
          expr_add$macrocall$2$subexpression$1 β†’  ● %op_additive
          expr_add$macrocall$2 β†’  ● expr_add$macrocall$2$subexpression$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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A kw_not token based on:
          ops_in$ebnf$1 β†’  ● %kw_not
          ops_in β†’  ● ops_in$ebnf$1 %kw_in
          expr_in$macrocall$2 β†’  ● ops_in
          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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A kw_in token based on:
          ops_in β†’ ops_in$ebnf$1 ● %kw_in
          expr_in$macrocall$2 β†’  ● ops_in
          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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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 β†’  ● ops_like
          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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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 β†’  ● ops_like
          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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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 β†’  ● ops_like
          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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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 β†’  ● ops_like
          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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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 β†’  ● ops_like
          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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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 β†’  ● ops_like
          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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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 β†’  ● ops_like
          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_range$macrocall$5 β†’  ● expr_like
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A op_compare token based on:
          expr_compare$macrocall$2 β†’  ● %op_compare
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A op_eq token based on:
          expr_eq$macrocall$2$subexpression$1 β†’  ● %op_eq
          expr_eq$macrocall$2 β†’  ● expr_eq$macrocall$2$subexpression$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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A op_neq token based on:
          expr_eq$macrocall$2$subexpression$1 β†’  ● %op_neq
          expr_eq$macrocall$2 β†’  ● expr_eq$macrocall$2$subexpression$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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A kw_and token based on:
          expr_and$macrocall$2 β†’  ● %kw_and
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A kw_or token based on:
          expr_or$macrocall$2 β†’  ● %kw_or
          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
          select_expr_list_item β†’  ● expr select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A kw_as token based on:
          ident_aliased$subexpression$1 β†’  ● %kw_as ident
          ident_aliased β†’  ● ident_aliased$subexpression$1
          select_expr_list_item$ebnf$1 β†’  ● ident_aliased
          select_expr_list_item β†’ expr ● select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A word token based on:
          word β†’  ● %word
          ident β†’  ● word
          ident_aliased β†’  ● ident
          select_expr_list_item$ebnf$1 β†’  ● ident_aliased
          select_expr_list_item β†’ expr ● select_expr_list_item$ebnf$1
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’ comma ● select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A comma token based on:
          comma β†’  ● %comma
          select_expr_list_aliased$ebnf$1$subexpression$1 β†’  ● comma select_expr_list_item
          select_expr_list_aliased$ebnf$1 β†’ select_expr_list_aliased$ebnf$1 ● select_expr_list_aliased$ebnf$1$subexpression$1
          select_expr_list_aliased β†’ select_expr_list_item ● select_expr_list_aliased$ebnf$1
          select_what β†’ %kw_select ● select_expr_list_aliased
          select_statement β†’  ● select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A kw_from token based on:
          select_from β†’  ● %kw_from select_subject
          select_statement$ebnf$1 β†’  ● select_from
          select_statement β†’ select_what ● select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A kw_where token based on:
          select_where β†’  ● %kw_where expr
          select_statement$ebnf$2 β†’  ● select_where
          select_statement β†’ select_what select_statement$ebnf$1 ● select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A kw_group token based on:
          select_groupby β†’  ● %kw_group kw_by expr_list_raw
          select_statement$ebnf$3 β†’  ● select_groupby
          select_statement β†’ select_what select_statement$ebnf$1 select_statement$ebnf$2 ● select_statement$ebnf$3 select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A kw_order token based on:
          select_order_by$subexpression$1 β†’  ● %kw_order kw_by
          select_order_by β†’  ● select_order_by$subexpression$1 select_order_by_expr select_order_by$ebnf$1
          select_statement$ebnf$4 β†’  ● select_order_by
          select_statement β†’ select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 ● select_statement$ebnf$4 select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A kw_limit token based on:
          select_limit$ebnf$1$subexpression$1 β†’  ● %kw_limit int
          select_limit$ebnf$1 β†’  ● select_limit$ebnf$1$subexpression$1
          select_limit β†’  ● select_limit$ebnf$1 select_limit$ebnf$2 select_limit$ebnf$3
          select_statement β†’ select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 ● select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A kw_offset token based on:
          select_limit$ebnf$2$subexpression$1 β†’  ● %kw_offset int select_limit$ebnf$2$subexpression$1$ebnf$1
          select_limit$ebnf$2 β†’  ● select_limit$ebnf$2$subexpression$1
          select_limit β†’ select_limit$ebnf$1 ● select_limit$ebnf$2 select_limit$ebnf$3
          select_statement β†’ select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 ● select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A kw_fetch token based on:
          select_limit$ebnf$3$subexpression$1 β†’  ● %kw_fetch select_limit$ebnf$3$subexpression$1$ebnf$1 int select_limit$ebnf$3$subexpression$1$ebnf$2
          select_limit$ebnf$3 β†’  ● select_limit$ebnf$3$subexpression$1
          select_limit β†’ select_limit$ebnf$1 select_limit$ebnf$2 ● select_limit$ebnf$3
          select_statement β†’ select_what select_statement$ebnf$1 select_statement$ebnf$2 select_statement$ebnf$3 select_statement$ebnf$4 ● select_limit
          statement β†’  ● select_statement
          main β†’ main$ebnf$1 ● statement main$ebnf$2 main$ebnf$3
      A semicolon token based on:
          statement_separator β†’  ● %semicolon
          main$ebnf$3 β†’ main$ebnf$3 ● statement_separator
          main β†’ main$ebnf$1 statement main$ebnf$2 ● main$ebnf$3

          at Parser.feed (/home/bobby/phorm-new/node_modules/nearley/lib/nearley.js:343:27)
          at _parse (/home/bobby/phorm-new/node_modules/pgsql-ast-parser/src/parser.ts:43:12)
          at Object.parse (/home/bobby/phorm-new/node_modules/pgsql-ast-parser/src/parser.ts:24:18)
          at Object.parseSql (/home/bobby/phorm-new/node_modules/pg-mem/src/parse-cache.ts:25:15)
          at Query.parse (/home/bobby/phorm-new/node_modules/pg-mem/src/query.ts:80:16)
          at Query.queries (/home/bobby/phorm-new/node_modules/pg-mem/src/query.ts:88:31)
          at queries.next (<anonymous>)
          at Query.query (/home/bobby/phorm-new/node_modules/pg-mem/src/query.ts:67:20)
          at /home/bobby/phorm-new/node_modules/pg-mem/src/adapters.ts:81:80
          at Timeout.task [as _onTimeout] (/home/bobby/phorm-new/node_modules/jsdom/lib/jsdom/browser/Window.js:391:19)
          at listOnTimeout (internal/timers.js:554:17)
          at processTimers (internal/timers.js:497:7)

I know this library does not have advanced function yet, but being able to roll extensions and column descriptions might be helpful; even if it completely ignores the type and uses string, and for descriptions it just ignores them.

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:11 (6 by maintainers)

github_iconTop GitHub Comments

1reaction
MirrorBytescommented, Nov 25, 2020

Yes it is! Sorry, forgot to mention that part lol

0reactions
oguimbalcommented, Nov 25, 2020

Ok, I understand πŸ‘

Is it working now ?

Read more comments on GitHub >

github_iconTop Results From Across the Web

Prevent Errors Extension
Extension for quick retrieval of passwords, and preventing errors when you visit certain sites.
Read more >
Time Extension Error Codes - NET
Error Flag Description. TTT. TE Days in SM do not match TE days in the Contract Change Tracking System. DDD. Original Days +...
Read more >
How can I debug Javascript errors while writing Chrome ...
Go to the Extensions page (chrome://extensions), and make sure Developer mode is still enabled. The Extensions page doesn't need to be open for...
Read more >
VM extension provisioning errors in Virtual Machine Scale ...
Steps to resolve VM extension provisioning errors in a Virtual Machine Scale Set.
Read more >
Most Useful VS Code Extension To Find Errors & Warnings
Error Lens is an extension which allows you to see error, warning and diagnostic messages in line with your code without having to...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found