1 /** 2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef ES2PANDA_PARSER_CORE_LETTERS_H 17 #define ES2PANDA_PARSER_CORE_LETTERS_H 18 19 #include <cstdint> 20 namespace ark::es2panda::lexer { 21 inline constexpr char32_t LEX_ASCII_MAX_BITS = 128; 22 23 inline constexpr char32_t LEX_CHAR_NULL = 0x00; /* \0 */ 24 25 // Line Terminators 26 inline constexpr char32_t LEX_CHAR_LF = 0x0A; /* line feed */ 27 inline constexpr char32_t LEX_CHAR_CR = 0x0D; /* carriage return */ 28 inline constexpr char32_t LEX_CHAR_LS = 0x2028; /* line separator */ 29 inline constexpr char32_t LEX_CHAR_PS = 0x2029; /* paragraph separator */ 30 31 inline constexpr char32_t LEX_CHAR_LOWERCASE_A = 0x61; /* a */ 32 inline constexpr char32_t LEX_CHAR_LOWERCASE_B = 0x62; /* b */ 33 inline constexpr char32_t LEX_CHAR_LOWERCASE_C = 0x63; /* c */ 34 inline constexpr char32_t LEX_CHAR_LOWERCASE_D = 0x64; /* d */ 35 inline constexpr char32_t LEX_CHAR_LOWERCASE_E = 0X65; /* e */ 36 inline constexpr char32_t LEX_CHAR_LOWERCASE_F = 0X66; /* f */ 37 inline constexpr char32_t LEX_CHAR_LOWERCASE_G = 0X67; /* g */ 38 inline constexpr char32_t LEX_CHAR_LOWERCASE_H = 0X68; /* h */ 39 inline constexpr char32_t LEX_CHAR_LOWERCASE_I = 0X69; /* i */ 40 inline constexpr char32_t LEX_CHAR_LOWERCASE_J = 0X6A; /* j */ 41 inline constexpr char32_t LEX_CHAR_LOWERCASE_K = 0X6B; /* k */ 42 inline constexpr char32_t LEX_CHAR_LOWERCASE_L = 0X6C; /* l */ 43 inline constexpr char32_t LEX_CHAR_LOWERCASE_M = 0X6D; /* m */ 44 inline constexpr char32_t LEX_CHAR_LOWERCASE_N = 0X6E; /* n */ 45 inline constexpr char32_t LEX_CHAR_LOWERCASE_O = 0X6F; /* o */ 46 inline constexpr char32_t LEX_CHAR_LOWERCASE_P = 0x70; /* p */ 47 inline constexpr char32_t LEX_CHAR_LOWERCASE_Q = 0x71; /* q */ 48 inline constexpr char32_t LEX_CHAR_LOWERCASE_R = 0x72; /* r */ 49 inline constexpr char32_t LEX_CHAR_LOWERCASE_S = 0x73; /* s */ 50 inline constexpr char32_t LEX_CHAR_LOWERCASE_T = 0x74; /* t */ 51 inline constexpr char32_t LEX_CHAR_LOWERCASE_U = 0x75; /* u */ 52 inline constexpr char32_t LEX_CHAR_LOWERCASE_V = 0x76; /* v */ 53 inline constexpr char32_t LEX_CHAR_LOWERCASE_W = 0x77; /* w */ 54 inline constexpr char32_t LEX_CHAR_LOWERCASE_X = 0x78; /* x */ 55 inline constexpr char32_t LEX_CHAR_LOWERCASE_Y = 0x79; /* y */ 56 inline constexpr char32_t LEX_CHAR_LOWERCASE_Z = 0x7A; /* z */ 57 58 inline constexpr char32_t LEX_CHAR_UPPERCASE_A = 0X41; /* A */ 59 inline constexpr char32_t LEX_CHAR_UPPERCASE_B = 0X42; /* B */ 60 inline constexpr char32_t LEX_CHAR_UPPERCASE_C = 0X43; /* C */ 61 inline constexpr char32_t LEX_CHAR_UPPERCASE_D = 0X44; /* D */ 62 inline constexpr char32_t LEX_CHAR_UPPERCASE_E = 0X45; /* E */ 63 inline constexpr char32_t LEX_CHAR_UPPERCASE_F = 0X46; /* F */ 64 inline constexpr char32_t LEX_CHAR_UPPERCASE_G = 0X47; /* G */ 65 inline constexpr char32_t LEX_CHAR_UPPERCASE_H = 0X48; /* H */ 66 inline constexpr char32_t LEX_CHAR_UPPERCASE_I = 0X49; /* I */ 67 inline constexpr char32_t LEX_CHAR_UPPERCASE_J = 0X4A; /* J */ 68 inline constexpr char32_t LEX_CHAR_UPPERCASE_K = 0X4B; /* K */ 69 inline constexpr char32_t LEX_CHAR_UPPERCASE_L = 0X4C; /* L */ 70 inline constexpr char32_t LEX_CHAR_UPPERCASE_M = 0X4D; /* M */ 71 inline constexpr char32_t LEX_CHAR_UPPERCASE_N = 0X4E; /* N */ 72 inline constexpr char32_t LEX_CHAR_UPPERCASE_O = 0X4F; /* O */ 73 inline constexpr char32_t LEX_CHAR_UPPERCASE_P = 0X50; /* P */ 74 inline constexpr char32_t LEX_CHAR_UPPERCASE_Q = 0X51; /* Q */ 75 inline constexpr char32_t LEX_CHAR_UPPERCASE_R = 0X52; /* R */ 76 inline constexpr char32_t LEX_CHAR_UPPERCASE_S = 0X53; /* S */ 77 inline constexpr char32_t LEX_CHAR_UPPERCASE_T = 0X54; /* T */ 78 inline constexpr char32_t LEX_CHAR_UPPERCASE_U = 0X55; /* U */ 79 inline constexpr char32_t LEX_CHAR_UPPERCASE_V = 0X56; /* V */ 80 inline constexpr char32_t LEX_CHAR_UPPERCASE_W = 0X57; /* W */ 81 inline constexpr char32_t LEX_CHAR_UPPERCASE_X = 0x58; /* X */ 82 inline constexpr char32_t LEX_CHAR_UPPERCASE_Y = 0x59; /* Y */ 83 inline constexpr char32_t LEX_CHAR_UPPERCASE_Z = 0x5A; /* Y */ 84 85 inline constexpr char32_t LEX_CHAR_BS = 0x08; /* backspace */ 86 inline constexpr char32_t LEX_CHAR_TAB = 0x09; /* character tabulation */ 87 inline constexpr char32_t LEX_CHAR_VT = 0x0B; /* liner tabulation */ 88 inline constexpr char32_t LEX_CHAR_FF = 0x0C; /* form feed */ 89 inline constexpr char32_t LEX_CHAR_SP = 0x20; /* space */ 90 inline constexpr char32_t LEX_CHAR_NBSP = 0xA0; /* no-break space */ 91 inline constexpr char32_t LEX_CHAR_ZWNBSP = 0xFEFF; /* zero width no-break space */ 92 inline constexpr char32_t LEX_CHAR_MVS = 0x180e; /* MONGOLIAN VOWEL SEPARATOR (U+180E) */ 93 inline constexpr char32_t LEX_CHAR_DOUBLE_QUOTE = 0x22; /* " */ 94 inline constexpr char32_t LEX_CHAR_DOLLAR_SIGN = 0x24; /* $ */ 95 inline constexpr char32_t LEX_CHAR_SINGLE_QUOTE = 0x27; /* ' */ 96 97 inline constexpr char32_t LEX_CHAR_0 = 0x30; /* 0 */ 98 inline constexpr char32_t LEX_CHAR_1 = 0x31; /* 1 */ 99 inline constexpr char32_t LEX_CHAR_2 = 0x32; /* 2 */ 100 inline constexpr char32_t LEX_CHAR_3 = 0x33; /* 3 */ 101 inline constexpr char32_t LEX_CHAR_4 = 0x34; /* 4 */ 102 inline constexpr char32_t LEX_CHAR_5 = 0x35; /* 5 */ 103 inline constexpr char32_t LEX_CHAR_6 = 0x36; /* 6 */ 104 inline constexpr char32_t LEX_CHAR_7 = 0x37; /* 7 */ 105 inline constexpr char32_t LEX_CHAR_8 = 0x38; /* 8 */ 106 inline constexpr char32_t LEX_CHAR_9 = 0x39; /* 9 */ 107 108 inline constexpr char32_t LEX_CHAR_BACKSLASH = 0X5c; /* \\ */ 109 inline constexpr char32_t LEX_CHAR_UNDERSCORE = 0x5F; /* _ */ 110 111 // Punctuator characters 112 inline constexpr char32_t LEX_CHAR_EXCLAMATION = 0x21; /* exclamation mark */ 113 inline constexpr char32_t LEX_CHAR_PERCENT = 0x25; /* percent sign */ 114 inline constexpr char32_t LEX_CHAR_AMPERSAND = 0x26; /* ampersand */ 115 inline constexpr char32_t LEX_CHAR_LEFT_PAREN = 0x28; /* left parenthesis */ 116 inline constexpr char32_t LEX_CHAR_RIGHT_PAREN = 0x29; /* right parenthesis */ 117 inline constexpr char32_t LEX_CHAR_ASTERISK = 0x2A; /* asterisk */ 118 inline constexpr char32_t LEX_CHAR_PLUS = 0x2B; /* plus sign */ 119 inline constexpr char32_t LEX_CHAR_COMMA = 0x2C; /* comma */ 120 inline constexpr char32_t LEX_CHAR_MINUS = 0x2D; /* hyphen-minus */ 121 inline constexpr char32_t LEX_CHAR_DOT = 0x2E; /* dot */ 122 inline constexpr char32_t LEX_CHAR_SLASH = 0x2F; /* solidus */ 123 inline constexpr char32_t LEX_CHAR_COLON = 0x3A; /* colon */ 124 inline constexpr char32_t LEX_CHAR_SEMICOLON = 0x3B; /* semicolon */ 125 inline constexpr char32_t LEX_CHAR_LESS_THAN = 0x3C; /* less-than sign */ 126 inline constexpr char32_t LEX_CHAR_EQUALS = 0x3D; /* equals sign */ 127 inline constexpr char32_t LEX_CHAR_GREATER_THAN = 0x3E; /* greater-than sign */ 128 inline constexpr char32_t LEX_CHAR_QUESTION = 0x3F; /* question mark */ 129 inline constexpr char32_t LEX_CHAR_LEFT_SQUARE = 0x5B; /* left square bracket */ 130 inline constexpr char32_t LEX_CHAR_RIGHT_SQUARE = 0x5D; /* right square bracket */ 131 inline constexpr char32_t LEX_CHAR_CIRCUMFLEX = 0x5E; /* circumflex accent */ 132 inline constexpr char32_t LEX_CHAR_LEFT_BRACE = 0x7B; /* left curly bracket */ 133 inline constexpr char32_t LEX_CHAR_VLINE = 0x7C; /* vertical line */ 134 inline constexpr char32_t LEX_CHAR_RIGHT_BRACE = 0x7D; /* right curly bracket */ 135 inline constexpr char32_t LEX_CHAR_TILDE = 0x7E; /* tilde */ 136 inline constexpr char32_t LEX_CHAR_BACK_TICK = 0x60; /* back tick */ 137 inline constexpr char32_t LEX_CHAR_HASH_MARK = 0x23; /* hash mark */ 138 inline constexpr char32_t LEX_CHAR_AT = 0x40; /* at */ 139 140 inline constexpr char32_t LEX_CHAR_ZWNJ = 0x200C; /* zero width non-joiner */ 141 inline constexpr char32_t LEX_CHAR_ZWJ = 0x200D; /* zero width joiner */ 142 143 inline constexpr char32_t LEX_VERTICAL_TILDE = 0x2E2F; /* vertical tilde */ 144 145 inline constexpr char32_t LEX_UTF8_2_BYTE_CODE_POINT_MIN = 0x80; 146 inline constexpr char32_t LEX_UTF8_EXTRA_BYTE_MASK = 0xC0; 147 148 inline constexpr char32_t LEX_CHAR_EOS = 0xFFFF; 149 inline constexpr char32_t UNICODE_CODE_POINT_MAX = 0x10FFFF; 150 inline constexpr char32_t UNICODE_INVALID_CP = UINT32_MAX; 151 } // namespace ark::es2panda::lexer 152 153 #endif 154