|
2 | 2 | Token type hierarchy: |
3 | 3 | --------------------- |
4 | 4 |
|
5 | | -TokenType constants: |
6 | | - |
7 | | -- **WHITESPACE** |
8 | | -- **COMMENT** |
9 | | - - **BLOCK_COMMENT** - `/* ... * /` |
10 | | - - **OPTIONAL_COMMENT** - `/*! ... * /` |
11 | | - - **HINT_COMMENT** - `/*+ ... * /` |
12 | | - - **DOUBLE_HYPHEN_COMMENT** - `-- ...` |
13 | | - - **DOUBLE_SLASH_COMMENT** - `// ...` |
14 | | - - **HASH_COMMENT** - `# ...` |
15 | | -- **NAME** |
16 | | - - **UNQUOTED_NAME** - `table1` etc. |
17 | | - - **KEYWORD** - `datetime` etc. |
18 | | - - **RESERVED** - `SELECT` etc. |
19 | | - - **OPERATOR** - `AND`, `OR` etc. |
20 | | - - **DOUBLE_QUOTED_STRING** - `"table1"` (standard, MySQL in ANSI_STRINGS mode) |
21 | | - - **BACKTICK_QUOTED_STRING** - `` `table1` `` (MySQL, PostgreSQL, Sqlite) |
22 | | - - **SQUARE_BRACKETED_STRING** - `[table1]` (MSSQL, SqLite) |
23 | | - - **AT_VARIABLE** - `@var`, `@@global`, `@'192.168.0.1'` (also includes host names) |
24 | | - - **SINGLE_QUOTED_STRING** - `@'var'` |
25 | | - - **DOUBLE_QUOTED_STRING** - `@"var"` |
26 | | - - **BACKTICK_QUOTED_STRING** - `` @`var` `` |
27 | | -- **VALUE** |
28 | | - - **STRING** |
29 | | - - **SINGLE_QUOTED_STRING** - `'string'` (standard) |
30 | | - - **DOUBLE_QUOTED_STRING** - `"string"` (MySQL in default mode) |
31 | | - * **DOLLAR_QUOTED_STRING** - `$foo$table1$foo$` (PostgreSQL) |
32 | | - - **NUMBER** |
33 | | - - **INT** |
34 | | - - **UINT** |
35 | | - - **BINARY_LITERAL** |
36 | | - - **HEXADECIMAL_LITERAL** |
37 | | - - **UUID** - e.g. `3E11FA47-71CA-11E1-9E33-C80AA9429562` |
38 | | -- **SYMBOL** - `(`, `)`, `[`, `]`, `{`, `}`, `.`, `,`, `;` |
39 | | - - **OPERATOR** - `+`, `||` etc. |
40 | | -- **PLACEHOLDER** - placeholder for a parameter |
41 | | - - **QUESTION_MARK_PLACEHOLDER** - `?` (SQL, Doctrine, Laravel) |
42 | | - - **NUMBERED_QUESTION_MARK_PLACEHOLDER** - `?123` (Doctrine) |
43 | | - - **DOUBLE_COLON_PLACEHOLDER** - `:foo` (Doctrine, Laravel) |
44 | | -- **DELIMITER** - default `;` |
45 | | -- **DELIMITER_DEFINITION** |
| 5 | +Token type and additional token info are packed into 31 bit int |
| 6 | + |
| 7 | +### TokenType constants (unique): |
| 8 | + |
| 9 | +- **1K WHITESPACE** |
| 10 | +- COMMENT |
| 11 | + - **2K LINE_COMMENT** |
| 12 | + - DOUBLE_HYPHEN_COMMENT - `-- ...` |
| 13 | + - DOUBLE_SLASH_COMMENT - `// ...` |
| 14 | + - HASH_COMMENT - `# ...` |
| 15 | + - **4K BLOCK_COMMENT** - `/* ... * /` |
| 16 | + - OPTIONAL_COMMENT - `/*! ... * /` |
| 17 | + - HINT_COMMENT - `/*+ ... * /` |
| 18 | +- NAME |
| 19 | + - **32K UNQUOTED_NAME** - `table1` etc. |
| 20 | + - **16K KEYWORD** - `datetime` etc. |
| 21 | + - **8K RESERVED** - `SELECT` etc. |
| 22 | + - **512 OPERATOR** - `AND`, `OR` etc. |
| 23 | + - **64K QUOTED_NAME** |
| 24 | + - DOUBLE_QUOTED_NAME - `"table1"` (standard, MySQL in ANSI_STRINGS mode) |
| 25 | + - BACKTICK_QUOTED_NAME - `` `table1` `` (MySQL, PostgreSQL, Sqlite) |
| 26 | + - SQUARE_BRACKETED_NAME - `[table1]` (MSSQL, SqLite) |
| 27 | + - **128K AT_VARIABLE** - `@var`, `@@global`, `@'192.168.0.1'` (also includes host names) |
| 28 | + - SINGLE_QUOTED_AT_VAR - `@'var'` |
| 29 | + - DOUBLE_QUOTED_AT_VAR - `@"var"` |
| 30 | + - BACKTICK_QUOTED_AT_VAR - `` @`var` `` |
| 31 | +- VALUE |
| 32 | + - **1M NUMBER** |
| 33 | + - **512K INT** |
| 34 | + - **256K UINT** |
| 35 | + - **2M STRING** |
| 36 | + - SINGLE_QUOTED_STRING - `'string'` (standard) |
| 37 | + - DOUBLE_QUOTED_STRING - `"string"` (MySQL in default mode) |
| 38 | + - DOLLAR_QUOTED_STRING - `$$table1$$` (PostgreSQL) |
| 39 | + - **4M BIT_STRING** |
| 40 | + - BINARY_LITERAL |
| 41 | + - OCTAL_LITERAL (PostgreSQL) |
| 42 | + - HEXADECIMAL_LITERAL |
| 43 | + - **8M UUID** - e.g. `3E11FA47-71CA-11E1-9E33-C80AA9429562` |
| 44 | +- **16M SYMBOL** - `(`, `)`, `[`, `]`, `{`, `}`, `.`, `,`, `;` |
| 45 | + - **512 OPERATOR** - `+`, `||` etc. |
| 46 | + - OPTIMIZER_HINT_START - `/*+` |
| 47 | + - OPTIMIZER_HINT_END - `*/` |
| 48 | + - N/A **CHARSET_INTRODUCER** - `N` |
| 49 | + - N/A DOLLAR_QUOTE - `$foo$` (PostgreSQL) |
| 50 | +- **32M PLACEHOLDER** - placeholder for a parameter |
| 51 | + - QUESTION_MARK_PLACEHOLDER - `?` (SQL, Doctrine, Laravel) |
| 52 | + - NUMBERED_QUESTION_MARK_PLACEHOLDER - `?123` (Doctrine) |
| 53 | + - DOUBLE_COLON_PLACEHOLDER - `:foo` (Doctrine, Laravel) |
| 54 | +- **64M DELIMITER** - default `;` |
| 55 | +- **128M DELIMITER_DEFINITION** |
| 56 | +- **256M END** |
| 57 | +- **1G INVALID** |
| 58 | + |
| 59 | +values 512 and 512M are free fow now |
| 60 | + |
| 61 | +### Token info (non unique): |
| 62 | + |
| 63 | +Comment type: |
| 64 | +- **1** DOUBLE_HYPHEN_COMMENT |
| 65 | +- **2** DOUBLE_SLASH_COMMENT |
| 66 | +- **4** HASH_COMMENT |
| 67 | +- **8** OPTIONAL_COMMENT |
| 68 | +- **16** OPTIMIZER_HINT_COMMENT |
| 69 | + |
| 70 | +Quoting: |
| 71 | +- **1** SINGLE_QUOTED `'` |
| 72 | +- **2** DOUBLE_QUOTED `"` |
| 73 | +- **4** BACKTICK_QUOTED `` ` `` |
| 74 | +- **8** SQUARE_BRACKETED `[]` |
| 75 | +- **16** DOUBLE_DOLLAR_QUOTED `$$` |
| 76 | +- **32** DOLLAR_TAG_QUOTED `$foo$string value$foo$` |
| 77 | +- **64** (reserved) |
| 78 | + |
| 79 | +Base: |
| 80 | +- **1** (reserved for single quoted literals) |
| 81 | +- **2** (reserved for double quoted literals) |
| 82 | +- **4** binary |
| 83 | +- **8** octal (PostgreSQL) |
| 84 | +- **16** hexadecimal |
| 85 | +- **32** (base 32?) |
| 86 | +- **64** (base 64?) |
0 commit comments