const char* const tests[] = {
  "SELECT 1",
    "SELECT = SELECT, RESERVED_KEYWORD\n"
    "1 = ICONST, NO_KEYWORD\n",
  "SELECT * FROM x WHERE z = 2",
    "SELECT = SELECT, RESERVED_KEYWORD\n"
    "* = ASCII_42, NO_KEYWORD\n"
    "FROM = FROM, RESERVED_KEYWORD\n"
    "x = IDENT, NO_KEYWORD\n"
    "WHERE = WHERE, RESERVED_KEYWORD\n"
    "z = IDENT, NO_KEYWORD\n"
    "= = ASCII_61, NO_KEYWORD\n"
    "2 = ICONST, NO_KEYWORD\n",
  "SELECT 5.41414",
    "SELECT = SELECT, RESERVED_KEYWORD\n"
    "5.41414 = FCONST, NO_KEYWORD\n",
  "SELECT $1",
    "SELECT = SELECT, RESERVED_KEYWORD\n"
    "$1 = PARAM, NO_KEYWORD\n",
	"SELECT update AS left /* comment */ FROM between",
    "SELECT = SELECT, RESERVED_KEYWORD\n"
    "update = UPDATE, UNRESERVED_KEYWORD\n"
    "AS = AS, RESERVED_KEYWORD\n"
    "left = LEFT, TYPE_FUNC_NAME_KEYWORD\n"
    "/* comment */ = C_COMMENT, NO_KEYWORD\n"
    "FROM = FROM, RESERVED_KEYWORD\n"
    "between = BETWEEN, COL_NAME_KEYWORD\n",
  "SELECT 999999999999999999999::numeric/1000000000000000000000",
    "SELECT = SELECT, RESERVED_KEYWORD\n"
    "999999999999999999999 = FCONST, NO_KEYWORD\n"
    ":: = TYPECAST, NO_KEYWORD\n"
    "numeric = NUMERIC, COL_NAME_KEYWORD\n"
    "/ = ASCII_47, NO_KEYWORD\n"
    "1000000000000000000000 = FCONST, NO_KEYWORD\n",
  "SELECT 4790999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999",
    "SELECT = SELECT, RESERVED_KEYWORD\n"
    "4790999999999999999999999999999999999999999999999999999999999999999999999999999999999999 = FCONST, NO_KEYWORD\n"
    "* = ASCII_42, NO_KEYWORD\n"
    "9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 = FCONST, NO_KEYWORD\n",
  "SELECT $foo$test$foo$, '123' FROM \"xy\", abc",
    "SELECT = SELECT, RESERVED_KEYWORD\n"
    "$foo$test$foo$ = SCONST, NO_KEYWORD\n"
    ", = ASCII_44, NO_KEYWORD\n"
    "'123' = SCONST, NO_KEYWORD\n"
    "FROM = FROM, RESERVED_KEYWORD\n"
    "\"xy\" = IDENT, NO_KEYWORD\n"
    ", = ASCII_44, NO_KEYWORD\n"
    "abc = IDENT, NO_KEYWORD\n",
  "SELECT '/*not a comment*/', E'\\134', B'10', X'12', -Infinity, U&\"d!0061t!+000061\" UESCAPE '!', U&'d!0061t!+000061' UESCAPE '!'",
    "SELECT = SELECT, RESERVED_KEYWORD\n"
    "'/*not a comment*/' = SCONST, NO_KEYWORD\n"
    ", = ASCII_44, NO_KEYWORD\n"
    "E'\\134' = SCONST, NO_KEYWORD\n"
    ", = ASCII_44, NO_KEYWORD\n"
    "B'10' = BCONST, NO_KEYWORD\n"
    ", = ASCII_44, NO_KEYWORD\n"
    "X'12' = XCONST, NO_KEYWORD\n"
    ", = ASCII_44, NO_KEYWORD\n"
    "- = ASCII_45, NO_KEYWORD\n"
    "Infinity = IDENT, NO_KEYWORD\n"
    ", = ASCII_44, NO_KEYWORD\n"
    "U&\"d!0061t!+000061\" = UIDENT, NO_KEYWORD\n"
    "UESCAPE = UESCAPE, UNRESERVED_KEYWORD\n"
    "'!' = SCONST, NO_KEYWORD\n"
    ", = ASCII_44, NO_KEYWORD\n"
    "U&'d!0061t!+000061' = USCONST, NO_KEYWORD\n"
    "UESCAPE = UESCAPE, UNRESERVED_KEYWORD\n"
    "'!' = SCONST, NO_KEYWORD\n",
  "SELECT 'a'/*;*/'b'; SELECT ';';",
    "SELECT = SELECT, RESERVED_KEYWORD\n"
    "'a' = SCONST, NO_KEYWORD\n"
    "/*;*/ = C_COMMENT, NO_KEYWORD\n"
    "'b' = SCONST, NO_KEYWORD\n"
    "; = ASCII_59, NO_KEYWORD\n"
    "SELECT = SELECT, RESERVED_KEYWORD\n"
    "';' = SCONST, NO_KEYWORD\n"
    "; = ASCII_59, NO_KEYWORD\n",
  "CREATE RULE x AS ON SELECT TO tbl DO (SELECT 1; SELECT 2)",
    "CREATE = CREATE, RESERVED_KEYWORD\n"
    "RULE = RULE, UNRESERVED_KEYWORD\n"
    "x = IDENT, NO_KEYWORD\n"
    "AS = AS, RESERVED_KEYWORD\n"
    "ON = ON, RESERVED_KEYWORD\n"
    "SELECT = SELECT, RESERVED_KEYWORD\n"
    "TO = TO, RESERVED_KEYWORD\n"
    "tbl = IDENT, NO_KEYWORD\n"
    "DO = DO, RESERVED_KEYWORD\n"
    "( = ASCII_40, NO_KEYWORD\n"
    "SELECT = SELECT, RESERVED_KEYWORD\n"
    "1 = ICONST, NO_KEYWORD\n"
    "; = ASCII_59, NO_KEYWORD\n"
    "SELECT = SELECT, RESERVED_KEYWORD\n"
    "2 = ICONST, NO_KEYWORD\n"
    ") = ASCII_41, NO_KEYWORD\n",
  "SELECT $identifier",
    "SELECT = SELECT, RESERVED_KEYWORD\n"
    "$ = ASCII_36, NO_KEYWORD\n"
    "identifier = IDENT, NO_KEYWORD\n",
};

const size_t testsCount = sizeof(tests)/sizeof(*tests)/2;
