/* Python grammar The MIT License (MIT) Copyright (c) 2021 Robert Einhorn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* * Project : an ANTLR4 lexer grammar for Python 3 * https://github.com/RobEin/ANTLR4-parser-for-Python-3.12 * Developed by : Robert Einhorn, robert.einhorn.hu@gmail.com */ lexer grammar PythonLexer; options { superClass=PythonLexerBase; } tokens { INDENT, DEDENT // https://docs.python.org/3.12/reference/lexical_analysis.html#indentation , FSTRING_START, FSTRING_MIDDLE, FSTRING_END // https://peps.python.org/pep-0701/#specification } // https://docs.python.org/3.12/reference/lexical_analysis.html /* * default lexer mode */ // https://docs.python.org/3.12/reference/lexical_analysis.html#keywords FALSE : 'False'; AWAIT : 'await'; ELSE : 'else'; IMPORT : 'import'; PASS : 'pass'; NONE : 'None'; BREAK : 'break'; EXCEPT : 'except'; IN : 'in'; RAISE : 'raise'; TRUE : 'True'; CLASS : 'class'; FINALLY : 'finally'; IS : 'is'; RETURN : 'return'; AND : 'and'; CONTINUE : 'continue'; FOR : 'for'; LAMBDA : 'lambda'; TRY : 'try'; AS : 'as'; DEF : 'def'; FROM : 'from'; NONLOCAL : 'nonlocal'; WHILE : 'while'; ASSERT : 'assert'; DEL : 'del'; GLOBAL : 'global'; NOT : 'not'; WITH : 'with'; ASYNC : 'async'; ELIF : 'elif'; IF : 'if'; OR : 'or'; YIELD : 'yield'; // https://docs.python.org/3.12/library/token.html#module-token LPAR : '('; // OPEN_PAREN LSQB : '['; // OPEN_BRACK LBRACE : '{'; // OPEN_BRACE RPAR : ')'; // CLOSE_PAREN RSQB : ']'; // CLOSE_BRACK RBRACE : '}'; // CLOSE_BRACE DOT : '.'; COLON : ':'; COMMA : ','; SEMI : ';'; PLUS : '+'; MINUS : '-'; STAR : '*'; SLASH : '/'; VBAR : '|'; AMPER : '&'; LESS : '<'; GREATER : '>'; EQUAL : '='; PERCENT : '%'; EQEQUAL : '=='; NOTEQUAL : '!='; LESSEQUAL : '<='; GREATEREQUAL : '>='; TILDE : '~'; CIRCUMFLEX : '^'; LEFTSHIFT : '<<'; RIGHTSHIFT : '>>'; DOUBLESTAR : '**'; PLUSEQUAL : '+='; MINEQUAL : '-='; STAREQUAL : '*='; SLASHEQUAL : '/='; PERCENTEQUAL : '%='; AMPEREQUAL : '&='; VBAREQUAL : '|='; CIRCUMFLEXEQUAL : '^='; LEFTSHIFTEQUAL : '<<='; RIGHTSHIFTEQUAL : '>>='; DOUBLESTAREQUAL : '**='; DOUBLESLASH : '//'; DOUBLESLASHEQUAL : '//='; AT : '@'; ATEQUAL : '@='; RARROW : '->'; ELLIPSIS : '...'; COLONEQUAL : ':='; EXCLAMATION : '!'; // https://docs.python.org/3.12/reference/lexical_analysis.html#identifiers NAME : ID_START ID_CONTINUE* ; // https://docs.python.org/3.12/reference/lexical_analysis.html#numeric-literals NUMBER : INTEGER | FLOAT_NUMBER | IMAG_NUMBER ; // https://docs.python.org/3.12/reference/lexical_analysis.html#string-and-bytes-literals STRING : STRING_LITERAL | BYTES_LITERAL ; // https://peps.python.org/pep-0484/#type-comments TYPE_COMMENT : '#' WS? 'type:' ~[\r\n]* ; // https://docs.python.org/3.12/reference/lexical_analysis.html#physical-lines NEWLINE : OS_INDEPENDENT_NL ; // https://docs.python.org/3.12/reference/lexical_analysis.html#comments COMMENT : '#' ~[\r\n]* -> channel(HIDDEN); // https://docs.python.org/3.12/reference/lexical_analysis.html#whitespace-between-tokens WS : [ \t\f]+ -> channel(HIDDEN); // https://docs.python.org/3.12/reference/lexical_analysis.html#explicit-line-joining EXPLICIT_LINE_JOINING : '\\' NEWLINE -> channel(HIDDEN); // https://docs.python.org/3.12/reference/lexical_analysis.html#formatted-string-literals SINGLE_QUOTE_FSTRING_START : F_STRING_PREFIX ['] -> type(FSTRING_START), pushMode(SINGLE_QUOTE_FSTRING_MODE); DOUBLE_QUOTE_FSTRING_START : F_STRING_PREFIX ["] -> type(FSTRING_START), pushMode(DOUBLE_QUOTE_FSTRING_MODE); LONG_SINGLE_QUOTE_FSTRING_START : F_STRING_PREFIX ['][']['] -> type(FSTRING_START), pushMode(LONG_SINGLE_QUOTE_FSTRING_MODE); LONG_DOUBLE_QUOTE_FSTRING_START : F_STRING_PREFIX ["]["]["] -> type(FSTRING_START), pushMode(LONG_DOUBLE_QUOTE_FSTRING_MODE); ERROR_TOKEN : . ; // catch the unrecognized characters and redirect these errors to the parser /* * other lexer modes */ mode SINGLE_QUOTE_FSTRING_MODE; SINGLE_QUOTE_FSTRING_END : ['] -> type(FSTRING_END), popMode; SINGLE_QUOTE_FSTRING_MIDDLE : SINGLE_QUOTE_FSTRING_LITERAL -> type(FSTRING_MIDDLE); SINGLE_QUOTE_FSTRING_LBRACE : '{' -> type(LBRACE); // will be closed in DEFAULT_MODE or SINGLE_QUOTE_FORMAT_SPECIFICATION_RBRACE mode DOUBLE_QUOTE_FSTRING_MODE; DOUBLE_QUOTE_FSTRING_END : ["] -> type(FSTRING_END), popMode; DOUBLE_QUOTE_FSTRING_MIDDLE : DOUBLE_QUOTE_FSTRING_LITERAL -> type(FSTRING_MIDDLE); DOUBLE_QUOTE_FSTRING_LBRACE : '{' -> type(LBRACE); // will be closed in DEFAULT_MODE or DOUBLE_QUOTE_FORMAT_SPECIFICATION_RBRACE mode LONG_SINGLE_QUOTE_FSTRING_MODE; LONG_SINGLE_QUOTE_FSTRING_END : ['][']['] -> type(FSTRING_END), popMode; LONG_SINGLE_QUOTE_FSTRING_MIDDLE : SINGLE_QUOTE_FSTRING_LITERAL -> type(FSTRING_MIDDLE); LONG_SINGLE_QUOTE_FSTRING_LBRACE : '{' -> type(LBRACE); // will be closed in DEFAULT_MODE or SINGLE_QUOTE_FORMAT_SPECIFICATION_RBRACE mode LONG_DOUBLE_QUOTE_FSTRING_MODE; LONG_DOUBLE_QUOTE_FSTRING_END : ["]["]["] -> type(FSTRING_END), popMode; LONG_DOUBLE_QUOTE_FSTRING_MIDDLE : DOUBLE_QUOTE_FSTRING_LITERAL -> type(FSTRING_MIDDLE); LONG_DOUBLE_QUOTE_FSTRING_LBRACE : '{' -> type(LBRACE); // will be closed in DEFAULT_MODE or DOUBLE_QUOTE_FORMAT_SPECIFICATION_RBRACE mode SINGLE_QUOTE_FORMAT_SPECIFICATION_MODE; // only used after a format specifier colon SINGLE_QUOTE_FORMAT_SPECIFICATION_FSTRING_MIDDLE : FORMAT_SPEC_CHAR_NO_SINGLE_QUOTE+ -> type(FSTRING_MIDDLE); SINGLE_QUOTE_FORMAT_SPECIFICATION_LBRACE : '{' -> type(LBRACE); // will be closed in DEFAULT_MODE by PythonLexerBase class SINGLE_QUOTE_FORMAT_SPECIFICATION_RBRACE : '}' -> type(RBRACE); // popMode to ..._QUOTE_FSTRING_MODE by PythonLexerBase class mode DOUBLE_QUOTE_FORMAT_SPECIFICATION_MODE; // only used after a format specifier colon DOUBLE_QUOTE_FORMAT_SPECIFICATION_FSTRING_MIDDLE : FORMAT_SPEC_CHAR_NO_DOUBLE_QUOTE+ -> type(FSTRING_MIDDLE); DOUBLE_QUOTE_FORMAT_SPECIFICATION_LBRACE : '{' -> type(LBRACE); // will be closed in DEFAULT_MODE by PythonLexerBase class DOUBLE_QUOTE_FORMAT_SPECIFICATION_RBRACE : '}' -> type(RBRACE); // popMode to ..._QUOTE_FSTRING_MODE by PythonLexerBase class /* * fragments */ // https://docs.python.org/3.12/reference/lexical_analysis.html#literals // https://docs.python.org/3.12/reference/lexical_analysis.html#string-and-bytes-literals fragment STRING_LITERAL : STRING_PREFIX? (SHORT_STRING | LONG_STRING); fragment STRING_PREFIX : 'r' | 'u' | 'R' | 'U'; fragment SHORT_STRING : '\'' SHORT_STRING_ITEM_FOR_SINGLE_QUOTE* '\'' | '"' SHORT_STRING_ITEM_FOR_DOUBLE_QUOTE* '"' ; fragment LONG_STRING : '\'\'\'' LONG_STRING_ITEM*? '\'\'\'' | '"""' LONG_STRING_ITEM*? '"""' ; fragment SHORT_STRING_ITEM_FOR_SINGLE_QUOTE : SHORT_STRING_CHAR_NO_SINGLE_QUOTE | STRING_ESCAPE_SEQ; fragment SHORT_STRING_ITEM_FOR_DOUBLE_QUOTE : SHORT_STRING_CHAR_NO_DOUBLE_QUOTE | STRING_ESCAPE_SEQ; fragment LONG_STRING_ITEM : LONG_STRING_CHAR | STRING_ESCAPE_SEQ; fragment SHORT_STRING_CHAR_NO_SINGLE_QUOTE : ~[\\\r\n']; // fragment SHORT_STRING_CHAR_NO_DOUBLE_QUOTE : ~[\\\r\n"]; // fragment LONG_STRING_CHAR : ~'\\'; // fragment STRING_ESCAPE_SEQ : '\\' OS_INDEPENDENT_NL // \ escape sequence | '\\' . // "\" ; // the \ (not \n) escape sequences will be removed from the string literals by the PythonLexerBase class fragment BYTES_LITERAL : BYTES_PREFIX (SHORT_BYTES | LONG_BYTES); fragment BYTES_PREFIX : 'b' | 'B' | 'br' | 'Br' | 'bR' | 'BR' | 'rb' | 'rB' | 'Rb' | 'RB'; fragment SHORT_BYTES : '\'' SHORT_BYTES_ITEM_FOR_SINGLE_QUOTE* '\'' | '"' SHORT_BYTES_ITEM_FOR_DOUBLE_QUOTE* '"' ; fragment LONG_BYTES : '\'\'\'' LONG_BYTES_ITEM*? '\'\'\'' | '"""' LONG_BYTES_ITEM*? '"""' ; fragment SHORT_BYTES_ITEM_FOR_SINGLE_QUOTE : SHORT_BYTES_CHAR_NO_SINGLE_QUOTE | BYTES_ESCAPE_SEQ; fragment SHORT_BYTES_ITEM_FOR_DOUBLE_QUOTE : SHORT_BYTES_CHAR_NO_DOUBLE_QUOTE | BYTES_ESCAPE_SEQ; fragment LONG_BYTES_ITEM : LONG_BYTES_CHAR | BYTES_ESCAPE_SEQ; fragment SHORT_BYTES_CHAR_NO_SINGLE_QUOTE // : [\u0000-\u0009] | [\u000B-\u000C] | [\u000E-\u0026] | [\u0028-\u005B] | [\u005D-\u007F] ; fragment SHORT_BYTES_CHAR_NO_DOUBLE_QUOTE // : [\u0000-\u0009] | [\u000B-\u000C] | [\u000E-\u0021] | [\u0023-\u005B] | [\u005D-\u007F] ; fragment LONG_BYTES_CHAR : [\u0000-\u005B] | [\u005D-\u007F]; // fragment BYTES_ESCAPE_SEQ : '\\' [\u0000-\u007F]; // "\" // https://docs.python.org/3.12/library/string.html#format-specification-mini-language fragment SINGLE_QUOTE_FSTRING_LITERAL : (FORMAT_SPEC_CHAR_NO_SINGLE_QUOTE | DOUBLE_BRACES)+; fragment DOUBLE_QUOTE_FSTRING_LITERAL : (FORMAT_SPEC_CHAR_NO_DOUBLE_QUOTE | DOUBLE_BRACES)+; // https://docs.python.org/3.12/reference/lexical_analysis.html#formatted-string-literals fragment F_STRING_PREFIX : 'f' | 'F' | 'fr' | 'Fr' | 'fR' | 'FR' | 'rf' | 'rF' | 'Rf' | 'RF'; fragment FORMAT_SPEC_CHAR_NO_SINGLE_QUOTE : ~[{}']; fragment FORMAT_SPEC_CHAR_NO_DOUBLE_QUOTE : ~[{}"]; fragment DOUBLE_BRACES : '{' | '}'; // https://docs.python.org/3.12/reference/lexical_analysis.html#integer-literals fragment INTEGER : DEC_INTEGER | BIN_INTEGER | OCT_INTEGER | HEX_INTEGER; fragment DEC_INTEGER : NON_ZERO_DIGIT ('_'? DIGIT)* | '0'+ ('_'? '0')*; fragment BIN_INTEGER : '0' ('b' | 'B') ('_'? BIN_DIGIT)+; fragment OCT_INTEGER : '0' ('o' | 'O') ('_'? OCT_DIGIT)+; fragment HEX_INTEGER : '0' ('x' | 'X') ('_'? HEX_DIGIT)+; fragment NON_ZERO_DIGIT : [1-9]; fragment DIGIT : [0-9]; fragment BIN_DIGIT : '0' | '1'; fragment OCT_DIGIT : [0-7]; fragment HEX_DIGIT : DIGIT | [a-f] | [A-F]; // https://docs.python.org/3.12/reference/lexical_analysis.html#floating-point-literals fragment FLOAT_NUMBER : POINT_FLOAT | EXPONENT_FLOAT; fragment POINT_FLOAT : DIGIT_PART? FRACTION | DIGIT_PART '.'; fragment EXPONENT_FLOAT : (DIGIT_PART | POINT_FLOAT) EXPONENT; fragment DIGIT_PART : DIGIT ('_'? DIGIT)*; fragment FRACTION : '.' DIGIT_PART; fragment EXPONENT : ('e' | 'E') ('+' | '-')? DIGIT_PART; // https://docs.python.org/3.12/reference/lexical_analysis.html#imaginary-literals fragment IMAG_NUMBER : (FLOAT_NUMBER | DIGIT_PART) ('j' | 'J'); // https://docs.python.org/3.12/reference/lexical_analysis.html#physical-lines fragment OS_INDEPENDENT_NL : '\r'? '\n'; // Unix, Windows // https://github.com/RobEin/ANTLR4-parser-for-Python-3.12/tree/main/valid_chars_in_py_identifiers fragment ID_CONTINUE: ID_START | [\u0030-\u0039] | [\u00B7] | [\u0300-\u036F] | [\u0387] | [\u0483-\u0487] | [\u0591-\u05BD] | [\u05BF] | [\u05C1-\u05C2] | [\u05C4-\u05C5] | [\u05C7] | [\u0610-\u061A] | [\u064B-\u0669] | [\u0670] | [\u06D6-\u06DC] | [\u06DF-\u06E4] | [\u06E7-\u06E8] | [\u06EA-\u06ED] | [\u06F0-\u06F9] | [\u0711] | [\u0730-\u074A] | [\u07A6-\u07B0] | [\u07C0-\u07C9] | [\u07EB-\u07F3] | [\u07FD] | [\u0816-\u0819] | [\u081B-\u0823] | [\u0825-\u0827] | [\u0829-\u082D] | [\u0859-\u085B] | [\u0898-\u089F] | [\u08CA-\u08E1] | [\u08E3-\u0903] | [\u093A-\u093C] | [\u093E-\u094F] | [\u0951-\u0957] | [\u0962-\u0963] | [\u0966-\u096F] | [\u0981-\u0983] | [\u09BC] | [\u09BE-\u09C4] | [\u09C7-\u09C8] | [\u09CB-\u09CD] | [\u09D7] | [\u09E2-\u09E3] | [\u09E6-\u09EF] | [\u09FE] | [\u0A01-\u0A03] | [\u0A3C] | [\u0A3E-\u0A42] | [\u0A47-\u0A48] | [\u0A4B-\u0A4D] | [\u0A51] | [\u0A66-\u0A71] | [\u0A75] | [\u0A81-\u0A83] | [\u0ABC] | [\u0ABE-\u0AC5] | [\u0AC7-\u0AC9] | [\u0ACB-\u0ACD] | [\u0AE2-\u0AE3] | [\u0AE6-\u0AEF] | [\u0AFA-\u0AFF] | [\u0B01-\u0B03] | [\u0B3C] | [\u0B3E-\u0B44] | [\u0B47-\u0B48] | [\u0B4B-\u0B4D] | [\u0B55-\u0B57] | [\u0B62-\u0B63] | [\u0B66-\u0B6F] | [\u0B82] | [\u0BBE-\u0BC2] | [\u0BC6-\u0BC8] | [\u0BCA-\u0BCD] | [\u0BD7] | [\u0BE6-\u0BEF] | [\u0C00-\u0C04] | [\u0C3C] | [\u0C3E-\u0C44] | [\u0C46-\u0C48] | [\u0C4A-\u0C4D] | [\u0C55-\u0C56] | [\u0C62-\u0C63] | [\u0C66-\u0C6F] | [\u0C81-\u0C83] | [\u0CBC] | [\u0CBE-\u0CC4] | [\u0CC6-\u0CC8] | [\u0CCA-\u0CCD] | [\u0CD5-\u0CD6] | [\u0CE2-\u0CE3] | [\u0CE6-\u0CEF] | [\u0CF3] | [\u0D00-\u0D03] | [\u0D3B-\u0D3C] | [\u0D3E-\u0D44] | [\u0D46-\u0D48] | [\u0D4A-\u0D4D] | [\u0D57] | [\u0D62-\u0D63] | [\u0D66-\u0D6F] | [\u0D81-\u0D83] | [\u0DCA] | [\u0DCF-\u0DD4] | [\u0DD6] | [\u0DD8-\u0DDF] | [\u0DE6-\u0DEF] | [\u0DF2-\u0DF3] | [\u0E31] | [\u0E33-\u0E3A] | [\u0E47-\u0E4E] | [\u0E50-\u0E59] | [\u0EB1] | [\u0EB3-\u0EBC] | [\u0EC8-\u0ECE] | [\u0ED0-\u0ED9] | [\u0F18-\u0F19] | [\u0F20-\u0F29] | [\u0F35] | [\u0F37] | [\u0F39] | [\u0F3E-\u0F3F] | [\u0F71-\u0F84] | [\u0F86-\u0F87] | [\u0F8D-\u0F97] | [\u0F99-\u0FBC] | [\u0FC6] | [\u102B-\u103E] | [\u1040-\u1049] | [\u1056-\u1059] | [\u105E-\u1060] | [\u1062-\u1064] | [\u1067-\u106D] | [\u1071-\u1074] | [\u1082-\u108D] | [\u108F-\u109D] | [\u135D-\u135F] | [\u1369-\u1371] | [\u1712-\u1715] | [\u1732-\u1734] | [\u1752-\u1753] | [\u1772-\u1773] | [\u17B4-\u17D3] | [\u17DD] | [\u17E0-\u17E9] | [\u180B-\u180D] | [\u180F-\u1819] | [\u18A9] | [\u1920-\u192B] | [\u1930-\u193B] | [\u1946-\u194F] | [\u19D0-\u19DA] | [\u1A17-\u1A1B] | [\u1A55-\u1A5E] | [\u1A60-\u1A7C] | [\u1A7F-\u1A89] | [\u1A90-\u1A99] | [\u1AB0-\u1ABD] | [\u1ABF-\u1ACE] | [\u1B00-\u1B04] | [\u1B34-\u1B44] | [\u1B50-\u1B59] | [\u1B6B-\u1B73] | [\u1B80-\u1B82] | [\u1BA1-\u1BAD] | [\u1BB0-\u1BB9] | [\u1BE6-\u1BF3] | [\u1C24-\u1C37] | [\u1C40-\u1C49] | [\u1C50-\u1C59] | [\u1CD0-\u1CD2] | [\u1CD4-\u1CE8] | [\u1CED] | [\u1CF4] | [\u1CF7-\u1CF9] | [\u1DC0-\u1DFF] | [\u203F-\u2040] | [\u2054] | [\u20D0-\u20DC] | [\u20E1] | [\u20E5-\u20F0] | [\u2CEF-\u2CF1] | [\u2D7F] | [\u2DE0-\u2DFF] | [\u302A-\u302F] | [\u3099-\u309A] | [\uA620-\uA629] | [\uA66F] | [\uA674-\uA67D] | [\uA69E-\uA69F] | [\uA6F0-\uA6F1] | [\uA802] | [\uA806] | [\uA80B] | [\uA823-\uA827] | [\uA82C] | [\uA880-\uA881] | [\uA8B4-\uA8C5] | [\uA8D0-\uA8D9] | [\uA8E0-\uA8F1] | [\uA8FF-\uA909] | [\uA926-\uA92D] | [\uA947-\uA953] | [\uA980-\uA983] | [\uA9B3-\uA9C0] | [\uA9D0-\uA9D9] | [\uA9E5] | [\uA9F0-\uA9F9] | [\uAA29-\uAA36] | [\uAA43] | [\uAA4C-\uAA4D] | [\uAA50-\uAA59] | [\uAA7B-\uAA7D] | [\uAAB0] | [\uAAB2-\uAAB4] | [\uAAB7-\uAAB8] | [\uAABE-\uAABF] | [\uAAC1] | [\uAAEB-\uAAEF] | [\uAAF5-\uAAF6] | [\uABE3-\uABEA] | [\uABEC-\uABED] | [\uABF0-\uABF9] | [\uFB1E] | [\uFE00-\uFE0F] | [\uFE20-\uFE2F] | [\uFE33-\uFE34] | [\uFE4D-\uFE4F] | [\uFF10-\uFF19] | [\uFF3F] | [\uFF9E-\uFF9F] | [\u101FD] | [\u102E0] | [\u10376-\u1037A] | [\u104A0-\u104A9] | [\u10A01-\u10A03] | [\u10A05-\u10A06] | [\u10A0C-\u10A0F] | [\u10A38-\u10A3A] | [\u10A3F] | [\u10AE5-\u10AE6] | [\u10D24-\u10D27] | [\u10D30-\u10D39] | [\u10EAB-\u10EAC] | [\u10EFD-\u10EFF] | [\u10F46-\u10F50] | [\u10F82-\u10F85] | [\u11000-\u11002] | [\u11038-\u11046] | [\u11066-\u11070] | [\u11073-\u11074] | [\u1107F-\u11082] | [\u110B0-\u110BA] | [\u110C2] | [\u110F0-\u110F9] | [\u11100-\u11102] | [\u11127-\u11134] | [\u11136-\u1113F] | [\u11145-\u11146] | [\u11173] | [\u11180-\u11182] | [\u111B3-\u111C0] | [\u111C9-\u111CC] | [\u111CE-\u111D9] | [\u1122C-\u11237] | [\u1123E] | [\u11241] | [\u112DF-\u112EA] | [\u112F0-\u112F9] | [\u11300-\u11303] | [\u1133B-\u1133C] | [\u1133E-\u11344] | [\u11347-\u11348] | [\u1134B-\u1134D] | [\u11357] | [\u11362-\u11363] | [\u11366-\u1136C] | [\u11370-\u11374] | [\u11435-\u11446] | [\u11450-\u11459] | [\u1145E] | [\u114B0-\u114C3] | [\u114D0-\u114D9] | [\u115AF-\u115B5] | [\u115B8-\u115C0] | [\u115DC-\u115DD] | [\u11630-\u11640] | [\u11650-\u11659] | [\u116AB-\u116B7] | [\u116C0-\u116C9] | [\u1171D-\u1172B] | [\u11730-\u11739] | [\u1182C-\u1183A] | [\u118E0-\u118E9] | [\u11930-\u11935] | [\u11937-\u11938] | [\u1193B-\u1193E] | [\u11940] | [\u11942-\u11943] | [\u11950-\u11959] | [\u119D1-\u119D7] | [\u119DA-\u119E0] | [\u119E4] | [\u11A01-\u11A0A] | [\u11A33-\u11A39] | [\u11A3B-\u11A3E] | [\u11A47] | [\u11A51-\u11A5B] | [\u11A8A-\u11A99] | [\u11C2F-\u11C36] | [\u11C38-\u11C3F] | [\u11C50-\u11C59] | [\u11C92-\u11CA7] | [\u11CA9-\u11CB6] | [\u11D31-\u11D36] | [\u11D3A] | [\u11D3C-\u11D3D] | [\u11D3F-\u11D45] | [\u11D47] | [\u11D50-\u11D59] | [\u11D8A-\u11D8E] | [\u11D90-\u11D91] | [\u11D93-\u11D97] | [\u11DA0-\u11DA9] | [\u11EF3-\u11EF6] | [\u11F00-\u11F01] | [\u11F03] | [\u11F34-\u11F3A] | [\u11F3E-\u11F42] | [\u11F50-\u11F59] | [\u13440] | [\u13447-\u13455] | [\u16A60-\u16A69] | [\u16AC0-\u16AC9] | [\u16AF0-\u16AF4] | [\u16B30-\u16B36] | [\u16B50-\u16B59] | [\u16F4F] | [\u16F51-\u16F87] | [\u16F8F-\u16F92] | [\u16FE4] | [\u16FF0-\u16FF1] | [\u1BC9D-\u1BC9E] | [\u1CF00-\u1CF2D] | [\u1CF30-\u1CF46] | [\u1D165-\u1D169] | [\u1D16D-\u1D172] | [\u1D17B-\u1D182] | [\u1D185-\u1D18B] | [\u1D1AA-\u1D1AD] | [\u1D242-\u1D244] | [\u1D7CE-\u1D7FF] | [\u1DA00-\u1DA36] | [\u1DA3B-\u1DA6C] | [\u1DA75] | [\u1DA84] | [\u1DA9B-\u1DA9F] | [\u1DAA1-\u1DAAF] | [\u1E000-\u1E006] | [\u1E008-\u1E018] | [\u1E01B-\u1E021] | [\u1E023-\u1E024] | [\u1E026-\u1E02A] | [\u1E08F] | [\u1E130-\u1E136] | [\u1E140-\u1E149] | [\u1E2AE] | [\u1E2EC-\u1E2F9] | [\u1E4EC-\u1E4F9] | [\u1E8D0-\u1E8D6] | [\u1E944-\u1E94A] | [\u1E950-\u1E959] | [\u1FBF0-\u1FBF9] | [\uE0100-\uE01EF] ; // https://github.com/RobEin/ANTLR4-parser-for-Python-3.12/tree/main/valid_chars_in_py_identifiers fragment ID_START: [\u0041-\u005A] | [\u005F] | [\u0061-\u007A] | [\u00AA] | [\u00B5] | [\u00BA] | [\u00C0-\u00D6] | [\u00D8-\u00F6] | [\u00F8-\u02C1] | [\u02C6-\u02D1] | [\u02E0-\u02E4] | [\u02EC] | [\u02EE] | [\u0370-\u0374] | [\u0376-\u0377] | [\u037B-\u037D] | [\u037F] | [\u0386] | [\u0388-\u038A] | [\u038C] | [\u038E-\u03A1] | [\u03A3-\u03F5] | [\u03F7-\u0481] | [\u048A-\u052F] | [\u0531-\u0556] | [\u0559] | [\u0560-\u0588] | [\u05D0-\u05EA] | [\u05EF-\u05F2] | [\u0620-\u064A] | [\u066E-\u066F] | [\u0671-\u06D3] | [\u06D5] | [\u06E5-\u06E6] | [\u06EE-\u06EF] | [\u06FA-\u06FC] | [\u06FF] | [\u0710] | [\u0712-\u072F] | [\u074D-\u07A5] | [\u07B1] | [\u07CA-\u07EA] | [\u07F4-\u07F5] | [\u07FA] | [\u0800-\u0815] | [\u081A] | [\u0824] | [\u0828] | [\u0840-\u0858] | [\u0860-\u086A] | [\u0870-\u0887] | [\u0889-\u088E] | [\u08A0-\u08C9] | [\u0904-\u0939] | [\u093D] | [\u0950] | [\u0958-\u0961] | [\u0971-\u0980] | [\u0985-\u098C] | [\u098F-\u0990] | [\u0993-\u09A8] | [\u09AA-\u09B0] | [\u09B2] | [\u09B6-\u09B9] | [\u09BD] | [\u09CE] | [\u09DC-\u09DD] | [\u09DF-\u09E1] | [\u09F0-\u09F1] | [\u09FC] | [\u0A05-\u0A0A] | [\u0A0F-\u0A10] | [\u0A13-\u0A28] | [\u0A2A-\u0A30] | [\u0A32-\u0A33] | [\u0A35-\u0A36] | [\u0A38-\u0A39] | [\u0A59-\u0A5C] | [\u0A5E] | [\u0A72-\u0A74] | [\u0A85-\u0A8D] | [\u0A8F-\u0A91] | [\u0A93-\u0AA8] | [\u0AAA-\u0AB0] | [\u0AB2-\u0AB3] | [\u0AB5-\u0AB9] | [\u0ABD] | [\u0AD0] | [\u0AE0-\u0AE1] | [\u0AF9] | [\u0B05-\u0B0C] | [\u0B0F-\u0B10] | [\u0B13-\u0B28] | [\u0B2A-\u0B30] | [\u0B32-\u0B33] | [\u0B35-\u0B39] | [\u0B3D] | [\u0B5C-\u0B5D] | [\u0B5F-\u0B61] | [\u0B71] | [\u0B83] | [\u0B85-\u0B8A] | [\u0B8E-\u0B90] | [\u0B92-\u0B95] | [\u0B99-\u0B9A] | [\u0B9C] | [\u0B9E-\u0B9F] | [\u0BA3-\u0BA4] | [\u0BA8-\u0BAA] | [\u0BAE-\u0BB9] | [\u0BD0] | [\u0C05-\u0C0C] | [\u0C0E-\u0C10] | [\u0C12-\u0C28] | [\u0C2A-\u0C39] | [\u0C3D] | [\u0C58-\u0C5A] | [\u0C5D] | [\u0C60-\u0C61] | [\u0C80] | [\u0C85-\u0C8C] | [\u0C8E-\u0C90] | [\u0C92-\u0CA8] | [\u0CAA-\u0CB3] | [\u0CB5-\u0CB9] | [\u0CBD] | [\u0CDD-\u0CDE] | [\u0CE0-\u0CE1] | [\u0CF1-\u0CF2] | [\u0D04-\u0D0C] | [\u0D0E-\u0D10] | [\u0D12-\u0D3A] | [\u0D3D] | [\u0D4E] | [\u0D54-\u0D56] | [\u0D5F-\u0D61] | [\u0D7A-\u0D7F] | [\u0D85-\u0D96] | [\u0D9A-\u0DB1] | [\u0DB3-\u0DBB] | [\u0DBD] | [\u0DC0-\u0DC6] | [\u0E01-\u0E30] | [\u0E32] | [\u0E40-\u0E46] | [\u0E81-\u0E82] | [\u0E84] | [\u0E86-\u0E8A] | [\u0E8C-\u0EA3] | [\u0EA5] | [\u0EA7-\u0EB0] | [\u0EB2] | [\u0EBD] | [\u0EC0-\u0EC4] | [\u0EC6] | [\u0EDC-\u0EDF] | [\u0F00] | [\u0F40-\u0F47] | [\u0F49-\u0F6C] | [\u0F88-\u0F8C] | [\u1000-\u102A] | [\u103F] | [\u1050-\u1055] | [\u105A-\u105D] | [\u1061] | [\u1065-\u1066] | [\u106E-\u1070] | [\u1075-\u1081] | [\u108E] | [\u10A0-\u10C5] | [\u10C7] | [\u10CD] | [\u10D0-\u10FA] | [\u10FC-\u1248] | [\u124A-\u124D] | [\u1250-\u1256] | [\u1258] | [\u125A-\u125D] | [\u1260-\u1288] | [\u128A-\u128D] | [\u1290-\u12B0] | [\u12B2-\u12B5] | [\u12B8-\u12BE] | [\u12C0] | [\u12C2-\u12C5] | [\u12C8-\u12D6] | [\u12D8-\u1310] | [\u1312-\u1315] | [\u1318-\u135A] | [\u1380-\u138F] | [\u13A0-\u13F5] | [\u13F8-\u13FD] | [\u1401-\u166C] | [\u166F-\u167F] | [\u1681-\u169A] | [\u16A0-\u16EA] | [\u16EE-\u16F8] | [\u1700-\u1711] | [\u171F-\u1731] | [\u1740-\u1751] | [\u1760-\u176C] | [\u176E-\u1770] | [\u1780-\u17B3] | [\u17D7] | [\u17DC] | [\u1820-\u1878] | [\u1880-\u18A8] | [\u18AA] | [\u18B0-\u18F5] | [\u1900-\u191E] | [\u1950-\u196D] | [\u1970-\u1974] | [\u1980-\u19AB] | [\u19B0-\u19C9] | [\u1A00-\u1A16] | [\u1A20-\u1A54] | [\u1AA7] | [\u1B05-\u1B33] | [\u1B45-\u1B4C] | [\u1B83-\u1BA0] | [\u1BAE-\u1BAF] | [\u1BBA-\u1BE5] | [\u1C00-\u1C23] | [\u1C4D-\u1C4F] | [\u1C5A-\u1C7D] | [\u1C80-\u1C88] | [\u1C90-\u1CBA] | [\u1CBD-\u1CBF] | [\u1CE9-\u1CEC] | [\u1CEE-\u1CF3] | [\u1CF5-\u1CF6] | [\u1CFA] | [\u1D00-\u1DBF] | [\u1E00-\u1F15] | [\u1F18-\u1F1D] | [\u1F20-\u1F45] | [\u1F48-\u1F4D] | [\u1F50-\u1F57] | [\u1F59] | [\u1F5B] | [\u1F5D] | [\u1F5F-\u1F7D] | [\u1F80-\u1FB4] | [\u1FB6-\u1FBC] | [\u1FBE] | [\u1FC2-\u1FC4] | [\u1FC6-\u1FCC] | [\u1FD0-\u1FD3] | [\u1FD6-\u1FDB] | [\u1FE0-\u1FEC] | [\u1FF2-\u1FF4] | [\u1FF6-\u1FFC] | [\u2071] | [\u207F] | [\u2090-\u209C] | [\u2102] | [\u2107] | [\u210A-\u2113] | [\u2115] | [\u2118-\u211D] | [\u2124] | [\u2126] | [\u2128] | [\u212A-\u2139] | [\u213C-\u213F] | [\u2145-\u2149] | [\u214E] | [\u2160-\u2188] | [\u2C00-\u2CE4] | [\u2CEB-\u2CEE] | [\u2CF2-\u2CF3] | [\u2D00-\u2D25] | [\u2D27] | [\u2D2D] | [\u2D30-\u2D67] | [\u2D6F] | [\u2D80-\u2D96] | [\u2DA0-\u2DA6] | [\u2DA8-\u2DAE] | [\u2DB0-\u2DB6] | [\u2DB8-\u2DBE] | [\u2DC0-\u2DC6] | [\u2DC8-\u2DCE] | [\u2DD0-\u2DD6] | [\u2DD8-\u2DDE] | [\u3005-\u3007] | [\u3021-\u3029] | [\u3031-\u3035] | [\u3038-\u303C] | [\u3041-\u3096] | [\u309D-\u309F] | [\u30A1-\u30FA] | [\u30FC-\u30FF] | [\u3105-\u312F] | [\u3131-\u318E] | [\u31A0-\u31BF] | [\u31F0-\u31FF] | [\u3400-\u4DBF] | [\u4E00-\uA48C] | [\uA4D0-\uA4FD] | [\uA500-\uA60C] | [\uA610-\uA61F] | [\uA62A-\uA62B] | [\uA640-\uA66E] | [\uA67F-\uA69D] | [\uA6A0-\uA6EF] | [\uA717-\uA71F] | [\uA722-\uA788] | [\uA78B-\uA7CA] | [\uA7D0-\uA7D1] | [\uA7D3] | [\uA7D5-\uA7D9] | [\uA7F2-\uA801] | [\uA803-\uA805] | [\uA807-\uA80A] | [\uA80C-\uA822] | [\uA840-\uA873] | [\uA882-\uA8B3] | [\uA8F2-\uA8F7] | [\uA8FB] | [\uA8FD-\uA8FE] | [\uA90A-\uA925] | [\uA930-\uA946] | [\uA960-\uA97C] | [\uA984-\uA9B2] | [\uA9CF] | [\uA9E0-\uA9E4] | [\uA9E6-\uA9EF] | [\uA9FA-\uA9FE] | [\uAA00-\uAA28] | [\uAA40-\uAA42] | [\uAA44-\uAA4B] | [\uAA60-\uAA76] | [\uAA7A] | [\uAA7E-\uAAAF] | [\uAAB1] | [\uAAB5-\uAAB6] | [\uAAB9-\uAABD] | [\uAAC0] | [\uAAC2] | [\uAADB-\uAADD] | [\uAAE0-\uAAEA] | [\uAAF2-\uAAF4] | [\uAB01-\uAB06] | [\uAB09-\uAB0E] | [\uAB11-\uAB16] | [\uAB20-\uAB26] | [\uAB28-\uAB2E] | [\uAB30-\uAB5A] | [\uAB5C-\uAB69] | [\uAB70-\uABE2] | [\uAC00-\uD7A3] | [\uD7B0-\uD7C6] | [\uD7CB-\uD7FB] | [\uF900-\uFA6D] | [\uFA70-\uFAD9] | [\uFB00-\uFB06] | [\uFB13-\uFB17] | [\uFB1D] | [\uFB1F-\uFB28] | [\uFB2A-\uFB36] | [\uFB38-\uFB3C] | [\uFB3E] | [\uFB40-\uFB41] | [\uFB43-\uFB44] | [\uFB46-\uFBB1] | [\uFBD3-\uFC5D] | [\uFC64-\uFD3D] | [\uFD50-\uFD8F] | [\uFD92-\uFDC7] | [\uFDF0-\uFDF9] | [\uFE71] | [\uFE73] | [\uFE77] | [\uFE79] | [\uFE7B] | [\uFE7D] | [\uFE7F-\uFEFC] | [\uFF21-\uFF3A] | [\uFF41-\uFF5A] | [\uFF66-\uFF9D] | [\uFFA0-\uFFBE] | [\uFFC2-\uFFC7] | [\uFFCA-\uFFCF] | [\uFFD2-\uFFD7] | [\uFFDA-\uFFDC] | [\u10000-\u1000B] | [\u1000D-\u10026] | [\u10028-\u1003A] | [\u1003C-\u1003D] | [\u1003F-\u1004D] | [\u10050-\u1005D] | [\u10080-\u100FA] | [\u10140-\u10174] | [\u10280-\u1029C] | [\u102A0-\u102D0] | [\u10300-\u1031F] | [\u1032D-\u1034A] | [\u10350-\u10375] | [\u10380-\u1039D] | [\u103A0-\u103C3] | [\u103C8-\u103CF] | [\u103D1-\u103D5] | [\u10400-\u1049D] | [\u104B0-\u104D3] | [\u104D8-\u104FB] | [\u10500-\u10527] | [\u10530-\u10563] | [\u10570-\u1057A] | [\u1057C-\u1058A] | [\u1058C-\u10592] | [\u10594-\u10595] | [\u10597-\u105A1] | [\u105A3-\u105B1] | [\u105B3-\u105B9] | [\u105BB-\u105BC] | [\u10600-\u10736] | [\u10740-\u10755] | [\u10760-\u10767] | [\u10780-\u10785] | [\u10787-\u107B0] | [\u107B2-\u107BA] | [\u10800-\u10805] | [\u10808] | [\u1080A-\u10835] | [\u10837-\u10838] | [\u1083C] | [\u1083F-\u10855] | [\u10860-\u10876] | [\u10880-\u1089E] | [\u108E0-\u108F2] | [\u108F4-\u108F5] | [\u10900-\u10915] | [\u10920-\u10939] | [\u10980-\u109B7] | [\u109BE-\u109BF] | [\u10A00] | [\u10A10-\u10A13] | [\u10A15-\u10A17] | [\u10A19-\u10A35] | [\u10A60-\u10A7C] | [\u10A80-\u10A9C] | [\u10AC0-\u10AC7] | [\u10AC9-\u10AE4] | [\u10B00-\u10B35] | [\u10B40-\u10B55] | [\u10B60-\u10B72] | [\u10B80-\u10B91] | [\u10C00-\u10C48] | [\u10C80-\u10CB2] | [\u10CC0-\u10CF2] | [\u10D00-\u10D23] | [\u10E80-\u10EA9] | [\u10EB0-\u10EB1] | [\u10F00-\u10F1C] | [\u10F27] | [\u10F30-\u10F45] | [\u10F70-\u10F81] | [\u10FB0-\u10FC4] | [\u10FE0-\u10FF6] | [\u11003-\u11037] | [\u11071-\u11072] | [\u11075] | [\u11083-\u110AF] | [\u110D0-\u110E8] | [\u11103-\u11126] | [\u11144] | [\u11147] | [\u11150-\u11172] | [\u11176] | [\u11183-\u111B2] | [\u111C1-\u111C4] | [\u111DA] | [\u111DC] | [\u11200-\u11211] | [\u11213-\u1122B] | [\u1123F-\u11240] | [\u11280-\u11286] | [\u11288] | [\u1128A-\u1128D] | [\u1128F-\u1129D] | [\u1129F-\u112A8] | [\u112B0-\u112DE] | [\u11305-\u1130C] | [\u1130F-\u11310] | [\u11313-\u11328] | [\u1132A-\u11330] | [\u11332-\u11333] | [\u11335-\u11339] | [\u1133D] | [\u11350] | [\u1135D-\u11361] | [\u11400-\u11434] | [\u11447-\u1144A] | [\u1145F-\u11461] | [\u11480-\u114AF] | [\u114C4-\u114C5] | [\u114C7] | [\u11580-\u115AE] | [\u115D8-\u115DB] | [\u11600-\u1162F] | [\u11644] | [\u11680-\u116AA] | [\u116B8] | [\u11700-\u1171A] | [\u11740-\u11746] | [\u11800-\u1182B] | [\u118A0-\u118DF] | [\u118FF-\u11906] | [\u11909] | [\u1190C-\u11913] | [\u11915-\u11916] | [\u11918-\u1192F] | [\u1193F] | [\u11941] | [\u119A0-\u119A7] | [\u119AA-\u119D0] | [\u119E1] | [\u119E3] | [\u11A00] | [\u11A0B-\u11A32] | [\u11A3A] | [\u11A50] | [\u11A5C-\u11A89] | [\u11A9D] | [\u11AB0-\u11AF8] | [\u11C00-\u11C08] | [\u11C0A-\u11C2E] | [\u11C40] | [\u11C72-\u11C8F] | [\u11D00-\u11D06] | [\u11D08-\u11D09] | [\u11D0B-\u11D30] | [\u11D46] | [\u11D60-\u11D65] | [\u11D67-\u11D68] | [\u11D6A-\u11D89] | [\u11D98] | [\u11EE0-\u11EF2] | [\u11F02] | [\u11F04-\u11F10] | [\u11F12-\u11F33] | [\u11FB0] | [\u12000-\u12399] | [\u12400-\u1246E] | [\u12480-\u12543] | [\u12F90-\u12FF0] | [\u13000-\u1342F] | [\u13441-\u13446] | [\u14400-\u14646] | [\u16800-\u16A38] | [\u16A40-\u16A5E] | [\u16A70-\u16ABE] | [\u16AD0-\u16AED] | [\u16B00-\u16B2F] | [\u16B40-\u16B43] | [\u16B63-\u16B77] | [\u16B7D-\u16B8F] | [\u16E40-\u16E7F] | [\u16F00-\u16F4A] | [\u16F50] | [\u16F93-\u16F9F] | [\u16FE0-\u16FE1] | [\u16FE3] | [\u17000-\u187F7] | [\u18800-\u18CD5] | [\u18D00-\u18D08] | [\u1AFF0-\u1AFF3] | [\u1AFF5-\u1AFFB] | [\u1AFFD-\u1AFFE] | [\u1B000-\u1B122] | [\u1B132] | [\u1B150-\u1B152] | [\u1B155] | [\u1B164-\u1B167] | [\u1B170-\u1B2FB] | [\u1BC00-\u1BC6A] | [\u1BC70-\u1BC7C] | [\u1BC80-\u1BC88] | [\u1BC90-\u1BC99] | [\u1D400-\u1D454] | [\u1D456-\u1D49C] | [\u1D49E-\u1D49F] | [\u1D4A2] | [\u1D4A5-\u1D4A6] | [\u1D4A9-\u1D4AC] | [\u1D4AE-\u1D4B9] | [\u1D4BB] | [\u1D4BD-\u1D4C3] | [\u1D4C5-\u1D505] | [\u1D507-\u1D50A] | [\u1D50D-\u1D514] | [\u1D516-\u1D51C] | [\u1D51E-\u1D539] | [\u1D53B-\u1D53E] | [\u1D540-\u1D544] | [\u1D546] | [\u1D54A-\u1D550] | [\u1D552-\u1D6A5] | [\u1D6A8-\u1D6C0] | [\u1D6C2-\u1D6DA] | [\u1D6DC-\u1D6FA] | [\u1D6FC-\u1D714] | [\u1D716-\u1D734] | [\u1D736-\u1D74E] | [\u1D750-\u1D76E] | [\u1D770-\u1D788] | [\u1D78A-\u1D7A8] | [\u1D7AA-\u1D7C2] | [\u1D7C4-\u1D7CB] | [\u1DF00-\u1DF1E] | [\u1DF25-\u1DF2A] | [\u1E030-\u1E06D] | [\u1E100-\u1E12C] | [\u1E137-\u1E13D] | [\u1E14E] | [\u1E290-\u1E2AD] | [\u1E2C0-\u1E2EB] | [\u1E4D0-\u1E4EB] | [\u1E7E0-\u1E7E6] | [\u1E7E8-\u1E7EB] | [\u1E7ED-\u1E7EE] | [\u1E7F0-\u1E7FE] | [\u1E800-\u1E8C4] | [\u1E900-\u1E943] | [\u1E94B] | [\u1EE00-\u1EE03] | [\u1EE05-\u1EE1F] | [\u1EE21-\u1EE22] | [\u1EE24] | [\u1EE27] | [\u1EE29-\u1EE32] | [\u1EE34-\u1EE37] | [\u1EE39] | [\u1EE3B] | [\u1EE42] | [\u1EE47] | [\u1EE49] | [\u1EE4B] | [\u1EE4D-\u1EE4F] | [\u1EE51-\u1EE52] | [\u1EE54] | [\u1EE57] | [\u1EE59] | [\u1EE5B] | [\u1EE5D] | [\u1EE5F] | [\u1EE61-\u1EE62] | [\u1EE64] | [\u1EE67-\u1EE6A] | [\u1EE6C-\u1EE72] | [\u1EE74-\u1EE77] | [\u1EE79-\u1EE7C] | [\u1EE7E] | [\u1EE80-\u1EE89] | [\u1EE8B-\u1EE9B] | [\u1EEA1-\u1EEA3] | [\u1EEA5-\u1EEA9] | [\u1EEAB-\u1EEBB] | [\u20000-\u2A6DF] | [\u2A700-\u2B739] | [\u2B740-\u2B81D] | [\u2B820-\u2CEA1] | [\u2CEB0-\u2EBE0] | [\u2F800-\u2FA1D] | [\u30000-\u3134A] | [\u31350-\u323AF] ;