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