13af6ab5fSopenharmony_ci/** 23af6ab5fSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 33af6ab5fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 43af6ab5fSopenharmony_ci * you may not use this file except in compliance with the License. 53af6ab5fSopenharmony_ci * You may obtain a copy of the License at 63af6ab5fSopenharmony_ci * 73af6ab5fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 83af6ab5fSopenharmony_ci * 93af6ab5fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 103af6ab5fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 113af6ab5fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 123af6ab5fSopenharmony_ci * See the License for the specific language governing permissions and 133af6ab5fSopenharmony_ci * limitations under the License. 143af6ab5fSopenharmony_ci */ 153af6ab5fSopenharmony_ci 163af6ab5fSopenharmony_ci#ifndef ES2PANDA_PARSER_CORE_LETTERS_H 173af6ab5fSopenharmony_ci#define ES2PANDA_PARSER_CORE_LETTERS_H 183af6ab5fSopenharmony_ci 193af6ab5fSopenharmony_cinamespace panda::es2panda::lexer { 203af6ab5fSopenharmony_ci 213af6ab5fSopenharmony_ci#define LEX_ASCII_MAX_BITS 128 223af6ab5fSopenharmony_ci 233af6ab5fSopenharmony_ci#define LEX_CHAR_NULL 0x00 /* \0 */ 243af6ab5fSopenharmony_ci 253af6ab5fSopenharmony_ci// Line Terminators 263af6ab5fSopenharmony_ci#define LEX_CHAR_LF 0x0A /* line feed */ 273af6ab5fSopenharmony_ci#define LEX_CHAR_CR 0x0D /* carriage return */ 283af6ab5fSopenharmony_ci#define LEX_CHAR_LS 0x2028 /* line separator */ 293af6ab5fSopenharmony_ci#define LEX_CHAR_PS 0x2029 /* paragraph separator */ 303af6ab5fSopenharmony_ci 313af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_A 0x61 /* a */ 323af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_B 0x62 /* b */ 333af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_C 0x63 /* c */ 343af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_D 0x64 /* d */ 353af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_E 0X65 /* e */ 363af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_F 0X66 /* f */ 373af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_G 0X67 /* g */ 383af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_H 0X68 /* h */ 393af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_I 0X69 /* i */ 403af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_J 0X6A /* j */ 413af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_K 0X6B /* k */ 423af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_L 0X6C /* l */ 433af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_M 0X6D /* m */ 443af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_N 0X6E /* n */ 453af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_O 0X6F /* o */ 463af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_P 0x70 /* p */ 473af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_Q 0x71 /* q */ 483af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_R 0x72 /* r */ 493af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_S 0x73 /* s */ 503af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_T 0x74 /* t */ 513af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_U 0x75 /* u */ 523af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_V 0x76 /* v */ 533af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_W 0x77 /* W */ 543af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_X 0x78 /* x */ 553af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_Y 0x79 /* y */ 563af6ab5fSopenharmony_ci#define LEX_CHAR_LOWERCASE_Z 0x7A /* z */ 573af6ab5fSopenharmony_ci 583af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_A 0X41 /* A */ 593af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_B 0X42 /* B */ 603af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_C 0X43 /* C */ 613af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_D 0X44 /* B */ 623af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_E 0X45 /* E */ 633af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_F 0X46 /* F */ 643af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_G 0X47 /* G */ 653af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_H 0X48 /* H */ 663af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_I 0X49 /* I */ 673af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_J 0X4A /* J */ 683af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_K 0X4B /* K */ 693af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_L 0X4C /* L */ 703af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_M 0X4D /* M */ 713af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_N 0X4E /* N */ 723af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_O 0X4F /* O */ 733af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_P 0X50 /* P */ 743af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_Q 0X51 /* Q */ 753af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_R 0X52 /* R */ 763af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_S 0X53 /* S */ 773af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_T 0X54 /* T */ 783af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_U 0X55 /* U */ 793af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_V 0X56 /* V */ 803af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_W 0X57 /* W */ 813af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_X 0x58 /* X */ 823af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_Y 0x59 /* Y */ 833af6ab5fSopenharmony_ci#define LEX_CHAR_UPPERCASE_Z 0x5A /* Z */ 843af6ab5fSopenharmony_ci 853af6ab5fSopenharmony_ci#define LEX_CHAR_BS 0x08 /* backspace */ 863af6ab5fSopenharmony_ci#define LEX_CHAR_TAB 0x09 /* character tabulation */ 873af6ab5fSopenharmony_ci#define LEX_CHAR_VT 0x0B /* liner tabulation */ 883af6ab5fSopenharmony_ci#define LEX_CHAR_FF 0x0C /* form feed */ 893af6ab5fSopenharmony_ci#define LEX_CHAR_SP 0x20 /* space */ 903af6ab5fSopenharmony_ci#define LEX_CHAR_NBSP 0xA0 /* no-break space */ 913af6ab5fSopenharmony_ci#define LEX_CHAR_ZWNBSP 0xFEFF /* zero width no-break space */ 923af6ab5fSopenharmony_ci#define LEX_CHAR_IGSP 0x3000 /* ideographic space */ 933af6ab5fSopenharmony_ci#define LEX_CHAR_MVS 0x180e /* MONGOLIAN VOWEL SEPARATOR (U+180E) */ 943af6ab5fSopenharmony_ci#define LEX_CHAR_DOUBLE_QUOTE 0x22 /* " */ 953af6ab5fSopenharmony_ci#define LEX_CHAR_DOLLAR_SIGN 0x24 /* $ */ 963af6ab5fSopenharmony_ci#define LEX_CHAR_SINGLE_QUOTE 0x27 /* ' */ 973af6ab5fSopenharmony_ci#define LEX_CHAR_DOT 0x2E /* . */ 983af6ab5fSopenharmony_ci#define LEX_CHAR_NLINE 0x85 /* nextline */ 993af6ab5fSopenharmony_ci 1003af6ab5fSopenharmony_ci#define LEX_CHAR_0 0x30 /* 0 */ 1013af6ab5fSopenharmony_ci#define LEX_CHAR_1 0x31 /* 1 */ 1023af6ab5fSopenharmony_ci#define LEX_CHAR_2 0x32 /* 2 */ 1033af6ab5fSopenharmony_ci#define LEX_CHAR_3 0x33 /* 3 */ 1043af6ab5fSopenharmony_ci#define LEX_CHAR_4 0x34 /* 4 */ 1053af6ab5fSopenharmony_ci#define LEX_CHAR_5 0x35 /* 5 */ 1063af6ab5fSopenharmony_ci#define LEX_CHAR_6 0x36 /* 6 */ 1073af6ab5fSopenharmony_ci#define LEX_CHAR_7 0x37 /* 7 */ 1083af6ab5fSopenharmony_ci#define LEX_CHAR_8 0x38 /* 8 */ 1093af6ab5fSopenharmony_ci#define LEX_CHAR_9 0x39 /* 9 */ 1103af6ab5fSopenharmony_ci 1113af6ab5fSopenharmony_ci#define LEX_CHAR_BACKSLASH 0X5c /* \\ */ 1123af6ab5fSopenharmony_ci#define LEX_CHAR_UNDERSCORE 0x5F /* _ */ 1133af6ab5fSopenharmony_ci 1143af6ab5fSopenharmony_ci// Punctuator characters 1153af6ab5fSopenharmony_ci#define LEX_CHAR_EXCLAMATION 0x21 /* exclamation mark */ 1163af6ab5fSopenharmony_ci#define LEX_CHAR_PERCENT 0x25 /* percent sign */ 1173af6ab5fSopenharmony_ci#define LEX_CHAR_AMPERSAND 0x26 /* ampersand */ 1183af6ab5fSopenharmony_ci#define LEX_CHAR_LEFT_PAREN 0x28 /* left parenthesis */ 1193af6ab5fSopenharmony_ci#define LEX_CHAR_RIGHT_PAREN 0x29 /* right parenthesis */ 1203af6ab5fSopenharmony_ci#define LEX_CHAR_ASTERISK 0x2A /* asterisk */ 1213af6ab5fSopenharmony_ci#define LEX_CHAR_PLUS 0x2B /* plus sign */ 1223af6ab5fSopenharmony_ci#define LEX_CHAR_COMMA 0x2C /* comma */ 1233af6ab5fSopenharmony_ci#define LEX_CHAR_PLUS 0x2B /* plus */ 1243af6ab5fSopenharmony_ci#define LEX_CHAR_MINUS 0x2D /* hyphen-minus */ 1253af6ab5fSopenharmony_ci#define LEX_CHAR_DOT 0x2E /* dot */ 1263af6ab5fSopenharmony_ci#define LEX_CHAR_SLASH 0x2F /* solidus */ 1273af6ab5fSopenharmony_ci#define LEX_CHAR_COLON 0x3A /* colon */ 1283af6ab5fSopenharmony_ci#define LEX_CHAR_SEMICOLON 0x3B /* semicolon */ 1293af6ab5fSopenharmony_ci#define LEX_CHAR_LESS_THAN 0x3C /* less-than sign */ 1303af6ab5fSopenharmony_ci#define LEX_CHAR_EQUALS 0x3D /* equals sign */ 1313af6ab5fSopenharmony_ci#define LEX_CHAR_GREATER_THAN 0x3E /* greater-than sign */ 1323af6ab5fSopenharmony_ci#define LEX_CHAR_QUESTION 0x3F /* question mark */ 1333af6ab5fSopenharmony_ci#define LEX_CHAR_LEFT_SQUARE 0x5B /* left square bracket */ 1343af6ab5fSopenharmony_ci#define LEX_CHAR_RIGHT_SQUARE 0x5D /* right square bracket */ 1353af6ab5fSopenharmony_ci#define LEX_CHAR_CIRCUMFLEX 0x5E /* circumflex accent */ 1363af6ab5fSopenharmony_ci#define LEX_CHAR_LEFT_BRACE 0x7B /* left curly bracket */ 1373af6ab5fSopenharmony_ci#define LEX_CHAR_VLINE 0x7C /* vertical line */ 1383af6ab5fSopenharmony_ci#define LEX_CHAR_RIGHT_BRACE 0x7D /* right curly bracket */ 1393af6ab5fSopenharmony_ci#define LEX_CHAR_TILDE 0x7E /* tilde */ 1403af6ab5fSopenharmony_ci#define LEX_CHAR_BACK_TICK 0x60 /* back tick */ 1413af6ab5fSopenharmony_ci#define LEX_CHAR_HASH_MARK 0x23 /* hash mark */ 1423af6ab5fSopenharmony_ci#define LEX_CHAR_AT 0x40 /* at */ 1433af6ab5fSopenharmony_ci 1443af6ab5fSopenharmony_ci#define LEX_CHAR_ZWNJ 0x200C /* zero width non-joiner */ 1453af6ab5fSopenharmony_ci#define LEX_CHAR_ZWJ 0x200D /* zero width joiner */ 1463af6ab5fSopenharmony_ci 1473af6ab5fSopenharmony_ci#define LEX_VERTICAL_TILDE 0x2E2F /* vertical tilde */ 1483af6ab5fSopenharmony_ci 1493af6ab5fSopenharmony_ci#define LEX_TO_ASCII_LOWERCASE(character) ((character) | LEX_CHAR_SP) 1503af6ab5fSopenharmony_ci 1513af6ab5fSopenharmony_ci#define LEX_UTF8_2_BYTE_CODE_POINT_MIN (0x80) 1523af6ab5fSopenharmony_ci#define LEX_UTF8_EXTRA_BYTE_MASK (0xC0) 1533af6ab5fSopenharmony_ci 1543af6ab5fSopenharmony_ci#define LEX_CHAR_EOS 0xFFFF 1553af6ab5fSopenharmony_ci#define UNICODE_CODE_POINT_MAX 0x10FFFF 1563af6ab5fSopenharmony_ci#define UNICODE_INVALID_CP UINT32_MAX 1573af6ab5fSopenharmony_ci 1583af6ab5fSopenharmony_ci} // namespace panda::es2panda::lexer 1593af6ab5fSopenharmony_ci 1603af6ab5fSopenharmony_ci#endif 161