• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright (c) 2021-2025 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_NEXT_LINE = 0x85; /* next line */
94 inline constexpr char32_t LEX_CHAR_OGHAM = 0x1680;   /* ogham */
95 inline constexpr char32_t LEX_CHAR_ENQUAD = 0X2000;
96 inline constexpr char32_t LEX_CHAR_ZERO_WIDTH_SP = 0x200B;
97 inline constexpr char32_t LEX_CHAR_NARROW_NO_BREAK_SP = 0x202F;
98 inline constexpr char32_t LEX_CHAR_MATHEMATICAL_SP = 0x205F;
99 inline constexpr char32_t LEX_CHAR_IDEOGRAPHIC_SP = 0x3000;
100 
101 inline constexpr char32_t LEX_CHAR_DOUBLE_QUOTE = 0x22; /* " */
102 inline constexpr char32_t LEX_CHAR_DOLLAR_SIGN = 0x24;  /* $ */
103 inline constexpr char32_t LEX_CHAR_SINGLE_QUOTE = 0x27; /* ' */
104 
105 inline constexpr char32_t LEX_CHAR_0 = 0x30; /* 0 */
106 inline constexpr char32_t LEX_CHAR_1 = 0x31; /* 1 */
107 inline constexpr char32_t LEX_CHAR_2 = 0x32; /* 2 */
108 inline constexpr char32_t LEX_CHAR_3 = 0x33; /* 3 */
109 inline constexpr char32_t LEX_CHAR_4 = 0x34; /* 4 */
110 inline constexpr char32_t LEX_CHAR_5 = 0x35; /* 5 */
111 inline constexpr char32_t LEX_CHAR_6 = 0x36; /* 6 */
112 inline constexpr char32_t LEX_CHAR_7 = 0x37; /* 7 */
113 inline constexpr char32_t LEX_CHAR_8 = 0x38; /* 8 */
114 inline constexpr char32_t LEX_CHAR_9 = 0x39; /* 9 */
115 
116 inline constexpr char32_t LEX_CHAR_BACKSLASH = 0X5c;  /* \\ */
117 inline constexpr char32_t LEX_CHAR_UNDERSCORE = 0x5F; /* _ */
118 
119 // Punctuator characters
120 inline constexpr char32_t LEX_CHAR_EXCLAMATION = 0x21;  /* exclamation mark */
121 inline constexpr char32_t LEX_CHAR_PERCENT = 0x25;      /* percent sign */
122 inline constexpr char32_t LEX_CHAR_AMPERSAND = 0x26;    /* ampersand */
123 inline constexpr char32_t LEX_CHAR_LEFT_PAREN = 0x28;   /* left parenthesis */
124 inline constexpr char32_t LEX_CHAR_RIGHT_PAREN = 0x29;  /* right parenthesis */
125 inline constexpr char32_t LEX_CHAR_ASTERISK = 0x2A;     /* asterisk */
126 inline constexpr char32_t LEX_CHAR_PLUS = 0x2B;         /* plus sign */
127 inline constexpr char32_t LEX_CHAR_COMMA = 0x2C;        /* comma */
128 inline constexpr char32_t LEX_CHAR_MINUS = 0x2D;        /* hyphen-minus */
129 inline constexpr char32_t LEX_CHAR_DOT = 0x2E;          /* dot */
130 inline constexpr char32_t LEX_CHAR_SLASH = 0x2F;        /* solidus */
131 inline constexpr char32_t LEX_CHAR_COLON = 0x3A;        /* colon */
132 inline constexpr char32_t LEX_CHAR_SEMICOLON = 0x3B;    /* semicolon */
133 inline constexpr char32_t LEX_CHAR_LESS_THAN = 0x3C;    /* less-than sign */
134 inline constexpr char32_t LEX_CHAR_EQUALS = 0x3D;       /* equals sign */
135 inline constexpr char32_t LEX_CHAR_GREATER_THAN = 0x3E; /* greater-than sign */
136 inline constexpr char32_t LEX_CHAR_QUESTION = 0x3F;     /* question mark */
137 inline constexpr char32_t LEX_CHAR_LEFT_SQUARE = 0x5B;  /* left square bracket */
138 inline constexpr char32_t LEX_CHAR_RIGHT_SQUARE = 0x5D; /* right square bracket */
139 inline constexpr char32_t LEX_CHAR_CIRCUMFLEX = 0x5E;   /* circumflex accent */
140 inline constexpr char32_t LEX_CHAR_LEFT_BRACE = 0x7B;   /* left curly bracket */
141 inline constexpr char32_t LEX_CHAR_VLINE = 0x7C;        /* vertical line */
142 inline constexpr char32_t LEX_CHAR_RIGHT_BRACE = 0x7D;  /* right curly bracket */
143 inline constexpr char32_t LEX_CHAR_TILDE = 0x7E;        /* tilde */
144 inline constexpr char32_t LEX_CHAR_BACK_TICK = 0x60;    /* back tick */
145 inline constexpr char32_t LEX_CHAR_HASH_MARK = 0x23;    /* hash mark */
146 inline constexpr char32_t LEX_CHAR_AT = 0x40;           /* at */
147 
148 inline constexpr char32_t LEX_CHAR_ZWNJ = 0x200C; /* zero width non-joiner */
149 inline constexpr char32_t LEX_CHAR_ZWJ = 0x200D;  /* zero width joiner */
150 
151 inline constexpr char32_t LEX_VERTICAL_TILDE = 0x2E2F; /* vertical tilde */
152 
153 inline constexpr char32_t LEX_UTF8_2_BYTE_CODE_POINT_MIN = 0x80;
154 inline constexpr char32_t LEX_UTF8_EXTRA_BYTE_MASK = 0xC0;
155 
156 inline constexpr char32_t LEX_CHAR_EOS = 0xFFFF;
157 inline constexpr char32_t UNICODE_CODE_POINT_MAX = 0x10FFFF;
158 inline constexpr char32_t UNICODE_INVALID_CP = UINT32_MAX;
159 
160 inline constexpr size_t JS_DOC_START_SIZE = 3;
161 inline constexpr size_t JS_DOC_END_SIZE = 2;
162 // NOLINTBEGIN(modernize-avoid-c-arrays)
163 inline constexpr char32_t JS_DOC_START_LEX[JS_DOC_START_SIZE] = {LEX_CHAR_ASTERISK, LEX_CHAR_ASTERISK, LEX_CHAR_LF};
164 inline constexpr char32_t JS_DOC_END_LEX[JS_DOC_END_SIZE] = {LEX_CHAR_SLASH, LEX_CHAR_LF};
165 // NOLINTEND(modernize-avoid-c-arrays)
166 }  // namespace ark::es2panda::lexer
167 
168 #endif
169