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