All Downloads are FREE. Search and download functionalities are using the official Maven repository.

api.chapi-ast-csharp.1.3.1.source-code.CSharpLexer.g4 Maven / Gradle / Ivy

Go to download

Chapi is A common language meta information convertor, convert different languages to same meta-data model

There is a newer version: 2.5.1
Show newest version
// Eclipse Public License - v 1.0, http://www.eclipse.org/legal/epl-v10.html
// Copyright (c) 2013, Christian Wulf ([email protected])
// Copyright (c) 2016-2017, Ivan Kochurkin ([email protected]), Positive Technologies.

lexer grammar CSharpLexer;

channels { COMMENTS_CHANNEL, DIRECTIVE }

options { superClass = chapi.ast.antlr.CSharpLexerBase; }

BYTE_ORDER_MARK: '\u00EF\u00BB\u00BF';

SINGLE_LINE_DOC_COMMENT: '///' InputCharacter*    -> channel(COMMENTS_CHANNEL);
EMPTY_DELIMITED_DOC_COMMENT: '/***/'              -> channel(COMMENTS_CHANNEL);
DELIMITED_DOC_COMMENT:       '/**' ~'/' .*? '*/'  -> channel(COMMENTS_CHANNEL);
SINGLE_LINE_COMMENT:     '//'  InputCharacter*    -> channel(COMMENTS_CHANNEL);
DELIMITED_COMMENT:       '/*'  .*? '*/'           -> channel(COMMENTS_CHANNEL);
WHITESPACES:   (Whitespace | NewLine)+            -> channel(HIDDEN);
SHARP:         '#'                                -> mode(DIRECTIVE_MODE), skip;

ABSTRACT:      'abstract';
ADD:           'add';
ALIAS:         'alias';
ARGLIST:       '__arglist';
AS:            'as';
ASCENDING:     'ascending';
ASYNC:         'async';
AWAIT:         'await';
BASE:          'base';
BOOL:          'bool';
BREAK:         'break';
BY:            'by';
BYTE:          'byte';
CASE:          'case';
CATCH:         'catch';
CHAR:          'char';
CHECKED:       'checked';
CLASS:         'class';
CONST:         'const';
CONTINUE:      'continue';
DECIMAL:       'decimal';
DEFAULT:       'default';
DELEGATE:      'delegate';
DESCENDING:    'descending';
DO:            'do';
DOUBLE:        'double';
DYNAMIC:       'dynamic';
ELSE:          'else';
ENUM:          'enum';
EQUALS:        'equals';
EVENT:         'event';
EXPLICIT:      'explicit';
EXTERN:        'extern';
FALSE:         'false';
FINALLY:       'finally';
FIXED:         'fixed';
FLOAT:         'float';
FOR:           'for';
FOREACH:       'foreach';
FROM:          'from';
GET:           'get';
GOTO:          'goto';
GROUP:         'group';
IF:            'if';
IMPLICIT:      'implicit';
IN:            'in';
INT:           'int';
INTERFACE:     'interface';
INTERNAL:      'internal';
INTO:          'into';
IS:            'is';
JOIN:          'join';
LET:           'let';
LOCK:          'lock';
LONG:          'long';
NAMEOF:        'nameof';
NAMESPACE:     'namespace';
NEW:           'new';
NULL_:         'null';
OBJECT:        'object';
ON:            'on';
OPERATOR:      'operator';
ORDERBY:       'orderby';
OUT:           'out';
OVERRIDE:      'override';
PARAMS:        'params';
PARTIAL:       'partial';
PRIVATE:       'private';
PROTECTED:     'protected';
PUBLIC:        'public';
READONLY:      'readonly';
REF:           'ref';
REMOVE:        'remove';
RETURN:        'return';
SBYTE:         'sbyte';
SEALED:        'sealed';
SELECT:        'select';
SET:           'set';
SHORT:         'short';
SIZEOF:        'sizeof';
STACKALLOC:    'stackalloc';
STATIC:        'static';
STRING:        'string';
STRUCT:        'struct';
SWITCH:        'switch';
THIS:          'this';
THROW:         'throw';
TRUE:          'true';
TRY:           'try';
TYPEOF:        'typeof';
UINT:          'uint';
ULONG:         'ulong';
UNCHECKED:     'unchecked';
UNMANAGED:     'unmanaged';
UNSAFE:        'unsafe';
USHORT:        'ushort';
USING:         'using';
VAR:		   'var';
VIRTUAL:       'virtual';
VOID:          'void';
VOLATILE:      'volatile';
WHEN:          'when';
WHERE:         'where';
WHILE:         'while';
YIELD:         'yield';

//B.1.6 Identifiers
// must be defined after all keywords so the first branch (Available_identifier) does not match keywords
// https://msdn.microsoft.com/en-us/library/aa664670(v=vs.71).aspx
IDENTIFIER:          '@'? IdentifierOrKeyword;

//B.1.8 Literals
// 0.Equals() would be parsed as an invalid real (1. branch) causing a lexer error
LITERAL_ACCESS:      [0-9] ('_'* [0-9])* IntegerTypeSuffix? '.' '@'? IdentifierOrKeyword;
INTEGER_LITERAL:     [0-9] ('_'* [0-9])* IntegerTypeSuffix?;
HEX_INTEGER_LITERAL: '0' [xX] ('_'* HexDigit)+ IntegerTypeSuffix?;
BIN_INTEGER_LITERAL: '0' [bB] ('_'* [01])+ IntegerTypeSuffix?;
REAL_LITERAL:        ([0-9] ('_'* [0-9])*)? '.' [0-9] ('_'* [0-9])* ExponentPart? [FfDdMm]? | [0-9] ('_'* [0-9])* ([FfDdMm] | ExponentPart [FfDdMm]?);

CHARACTER_LITERAL:                   '\'' (~['\\\r\n\u0085\u2028\u2029] | CommonCharacter) '\'';
REGULAR_STRING:                      '"'  (~["\\\r\n\u0085\u2028\u2029] | CommonCharacter)* '"';
VERBATIUM_STRING:                    '@"' (~'"' | '""')* '"';
INTERPOLATED_REGULAR_STRING_START:   '$"' { this.OnInterpolatedRegularStringStart(); } -> pushMode(INTERPOLATION_STRING);
INTERPOLATED_VERBATIUM_STRING_START: '$@"'  { this.OnInterpolatedVerbatiumStringStart(); }  -> pushMode(INTERPOLATION_STRING);

//B.1.9 Operators And Punctuators
OPEN_BRACE:               '{' { this.OnOpenBrace(); };
CLOSE_BRACE:              '}' { this.OnCloseBrace(); };
OPEN_BRACKET:             '[';
CLOSE_BRACKET:            ']';
OPEN_PARENS:              '(';
CLOSE_PARENS:             ')';
DOT:                      '.';
COMMA:                    ',';
COLON:                    ':' { this.OnColon(); };
SEMICOLON:                ';';
PLUS:                     '+';
MINUS:                    '-';
STAR:                     '*';
DIV:                      '/';
PERCENT:                  '%';
AMP:                      '&';
BITWISE_OR:               '|';
CARET:                    '^';
BANG:                     '!';
TILDE:                    '~';
ASSIGNMENT:               '=';
LT:                       '<';
GT:                       '>';
INTERR:                   '?';
DOUBLE_COLON:             '::';
OP_COALESCING:            '??';
OP_INC:                   '++';
OP_DEC:                   '--';
OP_AND:                   '&&';
OP_OR:                    '||';
OP_PTR:                   '->';
OP_EQ:                    '==';
OP_NE:                    '!=';
OP_LE:                    '<=';
OP_GE:                    '>=';
OP_ADD_ASSIGNMENT:        '+=';
OP_SUB_ASSIGNMENT:        '-=';
OP_MULT_ASSIGNMENT:       '*=';
OP_DIV_ASSIGNMENT:        '/=';
OP_MOD_ASSIGNMENT:        '%=';
OP_AND_ASSIGNMENT:        '&=';
OP_OR_ASSIGNMENT:         '|=';
OP_XOR_ASSIGNMENT:        '^=';
OP_LEFT_SHIFT:            '<<';
OP_LEFT_SHIFT_ASSIGNMENT: '<<=';
OP_COALESCING_ASSIGNMENT: '??=';
OP_RANGE:                 '..';

// https://msdn.microsoft.com/en-us/library/dn961160.aspx
mode INTERPOLATION_STRING;

DOUBLE_CURLY_INSIDE:           '{{';
OPEN_BRACE_INSIDE:             '{' { this.OpenBraceInside(); } -> skip, pushMode(DEFAULT_MODE);
REGULAR_CHAR_INSIDE:           { this.IsRegularCharInside() }? SimpleEscapeSequence;
VERBATIUM_DOUBLE_QUOTE_INSIDE: { this.IsVerbatiumDoubleQuoteInside() }? '""';
DOUBLE_QUOTE_INSIDE:           '"' { this.OnDoubleQuoteInside(); } -> popMode;
REGULAR_STRING_INSIDE:         { this.IsRegularCharInside() }? ~('{' | '\\' | '"')+;
VERBATIUM_INSIDE_STRING:       { this.IsVerbatiumDoubleQuoteInside() }? ~('{' | '"')+;

mode INTERPOLATION_FORMAT;

DOUBLE_CURLY_CLOSE_INSIDE:      '}}' -> type(FORMAT_STRING);
CLOSE_BRACE_INSIDE:             '}' { this.OnCloseBraceInside(); }   -> skip, popMode;
FORMAT_STRING:                  ~'}'+;

mode DIRECTIVE_MODE;

DIRECTIVE_WHITESPACES:         Whitespace+                      -> channel(HIDDEN);
DIGITS:                        [0-9]+                           -> channel(DIRECTIVE);
DIRECTIVE_TRUE:                'true'                           -> channel(DIRECTIVE), type(TRUE);
DIRECTIVE_FALSE:               'false'                          -> channel(DIRECTIVE), type(FALSE);
DEFINE:                        'define'                         -> channel(DIRECTIVE);
UNDEF:                         'undef'                          -> channel(DIRECTIVE);
DIRECTIVE_IF:                  'if'                             -> channel(DIRECTIVE), type(IF);
ELIF:                          'elif'                           -> channel(DIRECTIVE);
DIRECTIVE_ELSE:                'else'                           -> channel(DIRECTIVE), type(ELSE);
ENDIF:                         'endif'                          -> channel(DIRECTIVE);
LINE:                          'line'                           -> channel(DIRECTIVE);
ERROR:                         'error' Whitespace+              -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT);
WARNING:                       'warning' Whitespace+            -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT);
REGION:                        'region' Whitespace*             -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT);
ENDREGION:                     'endregion' Whitespace*          -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT);
PRAGMA:                        'pragma' Whitespace+             -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT);
NULLABLE:                      'nullable' Whitespace+           -> channel(DIRECTIVE), mode(DIRECTIVE_TEXT);
DIRECTIVE_DEFAULT:             'default'                        -> channel(DIRECTIVE), type(DEFAULT);
DIRECTIVE_HIDDEN:              'hidden'                         -> channel(DIRECTIVE);
DIRECTIVE_OPEN_PARENS:         '('                              -> channel(DIRECTIVE), type(OPEN_PARENS);
DIRECTIVE_CLOSE_PARENS:        ')'                              -> channel(DIRECTIVE), type(CLOSE_PARENS);
DIRECTIVE_BANG:                '!'                              -> channel(DIRECTIVE), type(BANG);
DIRECTIVE_OP_EQ:               '=='                             -> channel(DIRECTIVE), type(OP_EQ);
DIRECTIVE_OP_NE:               '!='                             -> channel(DIRECTIVE), type(OP_NE);
DIRECTIVE_OP_AND:              '&&'                             -> channel(DIRECTIVE), type(OP_AND);
DIRECTIVE_OP_OR:               '||'                             -> channel(DIRECTIVE), type(OP_OR);
DIRECTIVE_STRING:              '"' ~('"' | [\r\n\u0085\u2028\u2029])* '"' -> channel(DIRECTIVE), type(STRING);
CONDITIONAL_SYMBOL:            IdentifierOrKeyword              -> channel(DIRECTIVE);
DIRECTIVE_SINGLE_LINE_COMMENT: '//' ~[\r\n\u0085\u2028\u2029]*  -> channel(COMMENTS_CHANNEL), type(SINGLE_LINE_COMMENT);
DIRECTIVE_NEW_LINE:            NewLine                          -> channel(DIRECTIVE), mode(DEFAULT_MODE);

mode DIRECTIVE_TEXT;

TEXT:                          ~[\r\n\u0085\u2028\u2029]+       -> channel(DIRECTIVE);
TEXT_NEW_LINE:                 NewLine    -> channel(DIRECTIVE), type(DIRECTIVE_NEW_LINE), mode(DEFAULT_MODE);

// Fragments

fragment InputCharacter:       ~[\r\n\u0085\u2028\u2029];

fragment NewLineCharacter
	: '\u000D' //''
	| '\u000A' //''
	| '\u0085' //''
	| '\u2028' //''
	| '\u2029' //''
	;

fragment IntegerTypeSuffix:         [lL]? [uU] | [uU]? [lL];
fragment ExponentPart:              [eE] ('+' | '-')? [0-9] ('_'* [0-9])*;

fragment CommonCharacter
	: SimpleEscapeSequence
	| HexEscapeSequence
	| UnicodeEscapeSequence
	;

fragment SimpleEscapeSequence
	: '\\\''
	| '\\"'
	| '\\\\'
	| '\\0'
	| '\\a'
	| '\\b'
	| '\\f'
	| '\\n'
	| '\\r'
	| '\\t'
	| '\\v'
	;

fragment HexEscapeSequence
	: '\\x' HexDigit
	| '\\x' HexDigit HexDigit
	| '\\x' HexDigit HexDigit HexDigit
	| '\\x' HexDigit HexDigit HexDigit HexDigit
	;

fragment NewLine
	: '\r\n' | '\r' | '\n'
	| '\u0085' // '
	| '\u2028' //''
	| '\u2029' //''
	;

fragment Whitespace
	: UnicodeClassZS //''
	| '\u0009' //''
	| '\u000B' //''
	| '\u000C' //'
' ; fragment UnicodeClassZS : '\u0020' // SPACE | '\u00A0' // NO_BREAK SPACE | '\u1680' // OGHAM SPACE MARK | '\u180E' // MONGOLIAN VOWEL SEPARATOR | '\u2000' // EN QUAD | '\u2001' // EM QUAD | '\u2002' // EN SPACE | '\u2003' // EM SPACE | '\u2004' // THREE_PER_EM SPACE | '\u2005' // FOUR_PER_EM SPACE | '\u2006' // SIX_PER_EM SPACE | '\u2008' // PUNCTUATION SPACE | '\u2009' // THIN SPACE | '\u200A' // HAIR SPACE | '\u202F' // NARROW NO_BREAK SPACE | '\u3000' // IDEOGRAPHIC SPACE | '\u205F' // MEDIUM MATHEMATICAL SPACE ; fragment IdentifierOrKeyword : IdentifierStartCharacter IdentifierPartCharacter* ; fragment IdentifierStartCharacter : LetterCharacter | '_' ; fragment IdentifierPartCharacter : LetterCharacter | DecimalDigitCharacter | ConnectingCharacter | CombiningCharacter | FormattingCharacter ; //'' // WARNING: ignores UnicodeEscapeSequence fragment LetterCharacter : UnicodeClassLU | UnicodeClassLL | UnicodeClassLT | UnicodeClassLM | UnicodeClassLO | UnicodeClassNL | UnicodeEscapeSequence ; //'' // WARNING: ignores UnicodeEscapeSequence fragment DecimalDigitCharacter : UnicodeClassND | UnicodeEscapeSequence ; //'' // WARNING: ignores UnicodeEscapeSequence fragment ConnectingCharacter : UnicodeClassPC | UnicodeEscapeSequence ; //'' // WARNING: ignores UnicodeEscapeSequence fragment CombiningCharacter : UnicodeClassMN | UnicodeClassMC | UnicodeEscapeSequence ; //'' // WARNING: ignores UnicodeEscapeSequence fragment FormattingCharacter : UnicodeClassCF | UnicodeEscapeSequence ; //B.1.5 Unicode Character Escape Sequences fragment UnicodeEscapeSequence : '\\u' HexDigit HexDigit HexDigit HexDigit | '\\U' HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit HexDigit ; fragment HexDigit : [0-9] | [A-F] | [a-f]; // Unicode character classes fragment UnicodeClassLU : '\u0041'..'\u005a' | '\u00c0'..'\u00d6' | '\u00d8'..'\u00de' | '\u0100'..'\u0136' | '\u0139'..'\u0147' | '\u014a'..'\u0178' | '\u0179'..'\u017d' | '\u0181'..'\u0182' | '\u0184'..'\u0186' | '\u0187'..'\u0189' | '\u018a'..'\u018b' | '\u018e'..'\u0191' | '\u0193'..'\u0194' | '\u0196'..'\u0198' | '\u019c'..'\u019d' | '\u019f'..'\u01a0' | '\u01a2'..'\u01a6' | '\u01a7'..'\u01a9' | '\u01ac'..'\u01ae' | '\u01af'..'\u01b1' | '\u01b2'..'\u01b3' | '\u01b5'..'\u01b7' | '\u01b8'..'\u01bc' | '\u01c4'..'\u01cd' | '\u01cf'..'\u01db' | '\u01de'..'\u01ee' | '\u01f1'..'\u01f4' | '\u01f6'..'\u01f8' | '\u01fa'..'\u0232' | '\u023a'..'\u023b' | '\u023d'..'\u023e' | '\u0241'..'\u0243' | '\u0244'..'\u0246' | '\u0248'..'\u024e' | '\u0370'..'\u0372' | '\u0376'..'\u037f' | '\u0386'..'\u0388' | '\u0389'..'\u038a' | '\u038c'..'\u038e' | '\u038f'..'\u0391' | '\u0392'..'\u03a1' | '\u03a3'..'\u03ab' | '\u03cf'..'\u03d2' | '\u03d3'..'\u03d4' | '\u03d8'..'\u03ee' | '\u03f4'..'\u03f7' | '\u03f9'..'\u03fa' | '\u03fd'..'\u042f' | '\u0460'..'\u0480' | '\u048a'..'\u04c0' | '\u04c1'..'\u04cd' | '\u04d0'..'\u052e' | '\u0531'..'\u0556' | '\u10a0'..'\u10c5' | '\u10c7'..'\u10cd' | '\u1e00'..'\u1e94' | '\u1e9e'..'\u1efe' | '\u1f08'..'\u1f0f' | '\u1f18'..'\u1f1d' | '\u1f28'..'\u1f2f' | '\u1f38'..'\u1f3f' | '\u1f48'..'\u1f4d' | '\u1f59'..'\u1f5f' | '\u1f68'..'\u1f6f' | '\u1fb8'..'\u1fbb' | '\u1fc8'..'\u1fcb' | '\u1fd8'..'\u1fdb' | '\u1fe8'..'\u1fec' | '\u1ff8'..'\u1ffb' | '\u2102'..'\u2107' | '\u210b'..'\u210d' | '\u2110'..'\u2112' | '\u2115'..'\u2119' | '\u211a'..'\u211d' | '\u2124'..'\u212a' | '\u212b'..'\u212d' | '\u2130'..'\u2133' | '\u213e'..'\u213f' | '\u2145'..'\u2183' | '\u2c00'..'\u2c2e' | '\u2c60'..'\u2c62' | '\u2c63'..'\u2c64' | '\u2c67'..'\u2c6d' | '\u2c6e'..'\u2c70' | '\u2c72'..'\u2c75' | '\u2c7e'..'\u2c80' | '\u2c82'..'\u2ce2' | '\u2ceb'..'\u2ced' | '\u2cf2'..'\ua640' | '\ua642'..'\ua66c' | '\ua680'..'\ua69a' | '\ua722'..'\ua72e' | '\ua732'..'\ua76e' | '\ua779'..'\ua77d' | '\ua77e'..'\ua786' | '\ua78b'..'\ua78d' | '\ua790'..'\ua792' | '\ua796'..'\ua7aa' | '\ua7ab'..'\ua7ad' | '\ua7b0'..'\ua7b1' | '\uff21'..'\uff3a' ; fragment UnicodeClassLL : '\u0061'..'\u007A' | '\u00b5'..'\u00df' | '\u00e0'..'\u00f6' | '\u00f8'..'\u00ff' | '\u0101'..'\u0137' | '\u0138'..'\u0148' | '\u0149'..'\u0177' | '\u017a'..'\u017e' | '\u017f'..'\u0180' | '\u0183'..'\u0185' | '\u0188'..'\u018c' | '\u018d'..'\u0192' | '\u0195'..'\u0199' | '\u019a'..'\u019b' | '\u019e'..'\u01a1' | '\u01a3'..'\u01a5' | '\u01a8'..'\u01aa' | '\u01ab'..'\u01ad' | '\u01b0'..'\u01b4' | '\u01b6'..'\u01b9' | '\u01ba'..'\u01bd' | '\u01be'..'\u01bf' | '\u01c6'..'\u01cc' | '\u01ce'..'\u01dc' | '\u01dd'..'\u01ef' | '\u01f0'..'\u01f3' | '\u01f5'..'\u01f9' | '\u01fb'..'\u0233' | '\u0234'..'\u0239' | '\u023c'..'\u023f' | '\u0240'..'\u0242' | '\u0247'..'\u024f' | '\u0250'..'\u0293' | '\u0295'..'\u02af' | '\u0371'..'\u0373' | '\u0377'..'\u037b' | '\u037c'..'\u037d' | '\u0390'..'\u03ac' | '\u03ad'..'\u03ce' | '\u03d0'..'\u03d1' | '\u03d5'..'\u03d7' | '\u03d9'..'\u03ef' | '\u03f0'..'\u03f3' | '\u03f5'..'\u03fb' | '\u03fc'..'\u0430' | '\u0431'..'\u045f' | '\u0461'..'\u0481' | '\u048b'..'\u04bf' | '\u04c2'..'\u04ce' | '\u04cf'..'\u052f' | '\u0561'..'\u0587' | '\u1d00'..'\u1d2b' | '\u1d6b'..'\u1d77' | '\u1d79'..'\u1d9a' | '\u1e01'..'\u1e95' | '\u1e96'..'\u1e9d' | '\u1e9f'..'\u1eff' | '\u1f00'..'\u1f07' | '\u1f10'..'\u1f15' | '\u1f20'..'\u1f27' | '\u1f30'..'\u1f37' | '\u1f40'..'\u1f45' | '\u1f50'..'\u1f57' | '\u1f60'..'\u1f67' | '\u1f70'..'\u1f7d' | '\u1f80'..'\u1f87' | '\u1f90'..'\u1f97' | '\u1fa0'..'\u1fa7' | '\u1fb0'..'\u1fb4' | '\u1fb6'..'\u1fb7' | '\u1fbe'..'\u1fc2' | '\u1fc3'..'\u1fc4' | '\u1fc6'..'\u1fc7' | '\u1fd0'..'\u1fd3' | '\u1fd6'..'\u1fd7' | '\u1fe0'..'\u1fe7' | '\u1ff2'..'\u1ff4' | '\u1ff6'..'\u1ff7' | '\u210a'..'\u210e' | '\u210f'..'\u2113' | '\u212f'..'\u2139' | '\u213c'..'\u213d' | '\u2146'..'\u2149' | '\u214e'..'\u2184' | '\u2c30'..'\u2c5e' | '\u2c61'..'\u2c65' | '\u2c66'..'\u2c6c' | '\u2c71'..'\u2c73' | '\u2c74'..'\u2c76' | '\u2c77'..'\u2c7b' | '\u2c81'..'\u2ce3' | '\u2ce4'..'\u2cec' | '\u2cee'..'\u2cf3' | '\u2d00'..'\u2d25' | '\u2d27'..'\u2d2d' | '\ua641'..'\ua66d' | '\ua681'..'\ua69b' | '\ua723'..'\ua72f' | '\ua730'..'\ua731' | '\ua733'..'\ua771' | '\ua772'..'\ua778' | '\ua77a'..'\ua77c' | '\ua77f'..'\ua787' | '\ua78c'..'\ua78e' | '\ua791'..'\ua793' | '\ua794'..'\ua795' | '\ua797'..'\ua7a9' | '\ua7fa'..'\uab30' | '\uab31'..'\uab5a' | '\uab64'..'\uab65' | '\ufb00'..'\ufb06' | '\ufb13'..'\ufb17' | '\uff41'..'\uff5a' ; fragment UnicodeClassLT : '\u01c5'..'\u01cb' | '\u01f2'..'\u1f88' | '\u1f89'..'\u1f8f' | '\u1f98'..'\u1f9f' | '\u1fa8'..'\u1faf' | '\u1fbc'..'\u1fcc' | '\u1ffc'..'\u1ffc' ; fragment UnicodeClassLM : '\u02b0'..'\u02c1' | '\u02c6'..'\u02d1' | '\u02e0'..'\u02e4' | '\u02ec'..'\u02ee' | '\u0374'..'\u037a' | '\u0559'..'\u0640' | '\u06e5'..'\u06e6' | '\u07f4'..'\u07f5' | '\u07fa'..'\u081a' | '\u0824'..'\u0828' | '\u0971'..'\u0e46' | '\u0ec6'..'\u10fc' | '\u17d7'..'\u1843' | '\u1aa7'..'\u1c78' | '\u1c79'..'\u1c7d' | '\u1d2c'..'\u1d6a' | '\u1d78'..'\u1d9b' | '\u1d9c'..'\u1dbf' | '\u2071'..'\u207f' | '\u2090'..'\u209c' | '\u2c7c'..'\u2c7d' | '\u2d6f'..'\u2e2f' | '\u3005'..'\u3031' | '\u3032'..'\u3035' | '\u303b'..'\u309d' | '\u309e'..'\u30fc' | '\u30fd'..'\u30fe' | '\ua015'..'\ua4f8' | '\ua4f9'..'\ua4fd' | '\ua60c'..'\ua67f' | '\ua69c'..'\ua69d' | '\ua717'..'\ua71f' | '\ua770'..'\ua788' | '\ua7f8'..'\ua7f9' | '\ua9cf'..'\ua9e6' | '\uaa70'..'\uaadd' | '\uaaf3'..'\uaaf4' | '\uab5c'..'\uab5f' | '\uff70'..'\uff9e' | '\uff9f'..'\uff9f' ; fragment UnicodeClassLO : '\u00aa'..'\u00ba' | '\u01bb'..'\u01c0' | '\u01c1'..'\u01c3' | '\u0294'..'\u05d0' | '\u05d1'..'\u05ea' | '\u05f0'..'\u05f2' | '\u0620'..'\u063f' | '\u0641'..'\u064a' | '\u066e'..'\u066f' | '\u0671'..'\u06d3' | '\u06d5'..'\u06ee' | '\u06ef'..'\u06fa' | '\u06fb'..'\u06fc' | '\u06ff'..'\u0710' | '\u0712'..'\u072f' | '\u074d'..'\u07a5' | '\u07b1'..'\u07ca' | '\u07cb'..'\u07ea' | '\u0800'..'\u0815' | '\u0840'..'\u0858' | '\u08a0'..'\u08b2' | '\u0904'..'\u0939' | '\u093d'..'\u0950' | '\u0958'..'\u0961' | '\u0972'..'\u0980' | '\u0985'..'\u098c' | '\u098f'..'\u0990' | '\u0993'..'\u09a8' | '\u09aa'..'\u09b0' | '\u09b2'..'\u09b6' | '\u09b7'..'\u09b9' | '\u09bd'..'\u09ce' | '\u09dc'..'\u09dd' | '\u09df'..'\u09e1' | '\u09f0'..'\u09f1' | '\u0a05'..'\u0a0a' | '\u0a0f'..'\u0a10' | '\u0a13'..'\u0a28' | '\u0a2a'..'\u0a30' | '\u0a32'..'\u0a33' | '\u0a35'..'\u0a36' | '\u0a38'..'\u0a39' | '\u0a59'..'\u0a5c' | '\u0a5e'..'\u0a72' | '\u0a73'..'\u0a74' | '\u0a85'..'\u0a8d' | '\u0a8f'..'\u0a91' | '\u0a93'..'\u0aa8' | '\u0aaa'..'\u0ab0' | '\u0ab2'..'\u0ab3' | '\u0ab5'..'\u0ab9' | '\u0abd'..'\u0ad0' | '\u0ae0'..'\u0ae1' | '\u0b05'..'\u0b0c' | '\u0b0f'..'\u0b10' | '\u0b13'..'\u0b28' | '\u0b2a'..'\u0b30' | '\u0b32'..'\u0b33' | '\u0b35'..'\u0b39' | '\u0b3d'..'\u0b5c' | '\u0b5d'..'\u0b5f' | '\u0b60'..'\u0b61' | '\u0b71'..'\u0b83' | '\u0b85'..'\u0b8a' | '\u0b8e'..'\u0b90' | '\u0b92'..'\u0b95' | '\u0b99'..'\u0b9a' | '\u0b9c'..'\u0b9e' | '\u0b9f'..'\u0ba3' | '\u0ba4'..'\u0ba8' | '\u0ba9'..'\u0baa' | '\u0bae'..'\u0bb9' | '\u0bd0'..'\u0c05' | '\u0c06'..'\u0c0c' | '\u0c0e'..'\u0c10' | '\u0c12'..'\u0c28' | '\u0c2a'..'\u0c39' | '\u0c3d'..'\u0c58' | '\u0c59'..'\u0c60' | '\u0c61'..'\u0c85' | '\u0c86'..'\u0c8c' | '\u0c8e'..'\u0c90' | '\u0c92'..'\u0ca8' | '\u0caa'..'\u0cb3' | '\u0cb5'..'\u0cb9' | '\u0cbd'..'\u0cde' | '\u0ce0'..'\u0ce1' | '\u0cf1'..'\u0cf2' | '\u0d05'..'\u0d0c' | '\u0d0e'..'\u0d10' | '\u0d12'..'\u0d3a' | '\u0d3d'..'\u0d4e' | '\u0d60'..'\u0d61' | '\u0d7a'..'\u0d7f' | '\u0d85'..'\u0d96' | '\u0d9a'..'\u0db1' | '\u0db3'..'\u0dbb' | '\u0dbd'..'\u0dc0' | '\u0dc1'..'\u0dc6' | '\u0e01'..'\u0e30' | '\u0e32'..'\u0e33' | '\u0e40'..'\u0e45' | '\u0e81'..'\u0e82' | '\u0e84'..'\u0e87' | '\u0e88'..'\u0e8a' | '\u0e8d'..'\u0e94' | '\u0e95'..'\u0e97' | '\u0e99'..'\u0e9f' | '\u0ea1'..'\u0ea3' | '\u0ea5'..'\u0ea7' | '\u0eaa'..'\u0eab' | '\u0ead'..'\u0eb0' | '\u0eb2'..'\u0eb3' | '\u0ebd'..'\u0ec0' | '\u0ec1'..'\u0ec4' | '\u0edc'..'\u0edf' | '\u0f00'..'\u0f40' | '\u0f41'..'\u0f47' | '\u0f49'..'\u0f6c' | '\u0f88'..'\u0f8c' | '\u1000'..'\u102a' | '\u103f'..'\u1050' | '\u1051'..'\u1055' | '\u105a'..'\u105d' | '\u1061'..'\u1065' | '\u1066'..'\u106e' | '\u106f'..'\u1070' | '\u1075'..'\u1081' | '\u108e'..'\u10d0' | '\u10d1'..'\u10fa' | '\u10fd'..'\u1248' | '\u124a'..'\u124d' | '\u1250'..'\u1256' | '\u1258'..'\u125a' | '\u125b'..'\u125d' | '\u1260'..'\u1288' | '\u128a'..'\u128d' | '\u1290'..'\u12b0' | '\u12b2'..'\u12b5' | '\u12b8'..'\u12be' | '\u12c0'..'\u12c2' | '\u12c3'..'\u12c5' | '\u12c8'..'\u12d6' | '\u12d8'..'\u1310' | '\u1312'..'\u1315' | '\u1318'..'\u135a' | '\u1380'..'\u138f' | '\u13a0'..'\u13f4' | '\u1401'..'\u166c' | '\u166f'..'\u167f' | '\u1681'..'\u169a' | '\u16a0'..'\u16ea' | '\u16f1'..'\u16f8' | '\u1700'..'\u170c' | '\u170e'..'\u1711' | '\u1720'..'\u1731' | '\u1740'..'\u1751' | '\u1760'..'\u176c' | '\u176e'..'\u1770' | '\u1780'..'\u17b3' | '\u17dc'..'\u1820' | '\u1821'..'\u1842' | '\u1844'..'\u1877' | '\u1880'..'\u18a8' | '\u18aa'..'\u18b0' | '\u18b1'..'\u18f5' | '\u1900'..'\u191e' | '\u1950'..'\u196d' | '\u1970'..'\u1974' | '\u1980'..'\u19ab' | '\u19c1'..'\u19c7' | '\u1a00'..'\u1a16' | '\u1a20'..'\u1a54' | '\u1b05'..'\u1b33' | '\u1b45'..'\u1b4b' | '\u1b83'..'\u1ba0' | '\u1bae'..'\u1baf' | '\u1bba'..'\u1be5' | '\u1c00'..'\u1c23' | '\u1c4d'..'\u1c4f' | '\u1c5a'..'\u1c77' | '\u1ce9'..'\u1cec' | '\u1cee'..'\u1cf1' | '\u1cf5'..'\u1cf6' | '\u2135'..'\u2138' | '\u2d30'..'\u2d67' | '\u2d80'..'\u2d96' | '\u2da0'..'\u2da6' | '\u2da8'..'\u2dae' | '\u2db0'..'\u2db6' | '\u2db8'..'\u2dbe' | '\u2dc0'..'\u2dc6' | '\u2dc8'..'\u2dce' | '\u2dd0'..'\u2dd6' | '\u2dd8'..'\u2dde' | '\u3006'..'\u303c' | '\u3041'..'\u3096' | '\u309f'..'\u30a1' | '\u30a2'..'\u30fa' | '\u30ff'..'\u3105' | '\u3106'..'\u312d' | '\u3131'..'\u318e' | '\u31a0'..'\u31ba' | '\u31f0'..'\u31ff' | '\u3400'..'\u4db5' | '\u4e00'..'\u9fcc' | '\ua000'..'\ua014' | '\ua016'..'\ua48c' | '\ua4d0'..'\ua4f7' | '\ua500'..'\ua60b' | '\ua610'..'\ua61f' | '\ua62a'..'\ua62b' | '\ua66e'..'\ua6a0' | '\ua6a1'..'\ua6e5' | '\ua7f7'..'\ua7fb' | '\ua7fc'..'\ua801' | '\ua803'..'\ua805' | '\ua807'..'\ua80a' | '\ua80c'..'\ua822' | '\ua840'..'\ua873' | '\ua882'..'\ua8b3' | '\ua8f2'..'\ua8f7' | '\ua8fb'..'\ua90a' | '\ua90b'..'\ua925' | '\ua930'..'\ua946' | '\ua960'..'\ua97c' | '\ua984'..'\ua9b2' | '\ua9e0'..'\ua9e4' | '\ua9e7'..'\ua9ef' | '\ua9fa'..'\ua9fe' | '\uaa00'..'\uaa28' | '\uaa40'..'\uaa42' | '\uaa44'..'\uaa4b' | '\uaa60'..'\uaa6f' | '\uaa71'..'\uaa76' | '\uaa7a'..'\uaa7e' | '\uaa7f'..'\uaaaf' | '\uaab1'..'\uaab5' | '\uaab6'..'\uaab9' | '\uaaba'..'\uaabd' | '\uaac0'..'\uaac2' | '\uaadb'..'\uaadc' | '\uaae0'..'\uaaea' | '\uaaf2'..'\uab01' | '\uab02'..'\uab06' | '\uab09'..'\uab0e' | '\uab11'..'\uab16' | '\uab20'..'\uab26' | '\uab28'..'\uab2e' | '\uabc0'..'\uabe2' | '\uac00'..'\ud7a3' | '\ud7b0'..'\ud7c6' | '\ud7cb'..'\ud7fb' | '\uf900'..'\ufa6d' | '\ufa70'..'\ufad9' | '\ufb1d'..'\ufb1f' | '\ufb20'..'\ufb28' | '\ufb2a'..'\ufb36' | '\ufb38'..'\ufb3c' | '\ufb3e'..'\ufb40' | '\ufb41'..'\ufb43' | '\ufb44'..'\ufb46' | '\ufb47'..'\ufbb1' | '\ufbd3'..'\ufd3d' | '\ufd50'..'\ufd8f' | '\ufd92'..'\ufdc7' | '\ufdf0'..'\ufdfb' | '\ufe70'..'\ufe74' | '\ufe76'..'\ufefc' | '\uff66'..'\uff6f' | '\uff71'..'\uff9d' | '\uffa0'..'\uffbe' | '\uffc2'..'\uffc7' | '\uffca'..'\uffcf' | '\uffd2'..'\uffd7' | '\uffda'..'\uffdc' ; fragment UnicodeClassNL : '\u16EE' // RUNIC ARLAUG SYMBOL | '\u16EF' // RUNIC TVIMADUR SYMBOL | '\u16F0' // RUNIC BELGTHOR SYMBOL | '\u2160' // ROMAN NUMERAL ONE | '\u2161' // ROMAN NUMERAL TWO | '\u2162' // ROMAN NUMERAL THREE | '\u2163' // ROMAN NUMERAL FOUR | '\u2164' // ROMAN NUMERAL FIVE | '\u2165' // ROMAN NUMERAL SIX | '\u2166' // ROMAN NUMERAL SEVEN | '\u2167' // ROMAN NUMERAL EIGHT | '\u2168' // ROMAN NUMERAL NINE | '\u2169' // ROMAN NUMERAL TEN | '\u216A' // ROMAN NUMERAL ELEVEN | '\u216B' // ROMAN NUMERAL TWELVE | '\u216C' // ROMAN NUMERAL FIFTY | '\u216D' // ROMAN NUMERAL ONE HUNDRED | '\u216E' // ROMAN NUMERAL FIVE HUNDRED | '\u216F' // ROMAN NUMERAL ONE THOUSAND ; fragment UnicodeClassMN : '\u0300' // COMBINING GRAVE ACCENT | '\u0301' // COMBINING ACUTE ACCENT | '\u0302' // COMBINING CIRCUMFLEX ACCENT | '\u0303' // COMBINING TILDE | '\u0304' // COMBINING MACRON | '\u0305' // COMBINING OVERLINE | '\u0306' // COMBINING BREVE | '\u0307' // COMBINING DOT ABOVE | '\u0308' // COMBINING DIAERESIS | '\u0309' // COMBINING HOOK ABOVE | '\u030A' // COMBINING RING ABOVE | '\u030B' // COMBINING DOUBLE ACUTE ACCENT | '\u030C' // COMBINING CARON | '\u030D' // COMBINING VERTICAL LINE ABOVE | '\u030E' // COMBINING DOUBLE VERTICAL LINE ABOVE | '\u030F' // COMBINING DOUBLE GRAVE ACCENT | '\u0310' // COMBINING CANDRABINDU ; fragment UnicodeClassMC : '\u0903' // DEVANAGARI SIGN VISARGA | '\u093E' // DEVANAGARI VOWEL SIGN AA | '\u093F' // DEVANAGARI VOWEL SIGN I | '\u0940' // DEVANAGARI VOWEL SIGN II | '\u0949' // DEVANAGARI VOWEL SIGN CANDRA O | '\u094A' // DEVANAGARI VOWEL SIGN SHORT O | '\u094B' // DEVANAGARI VOWEL SIGN O | '\u094C' // DEVANAGARI VOWEL SIGN AU ; fragment UnicodeClassCF : '\u00AD' // SOFT HYPHEN | '\u0600' // ARABIC NUMBER SIGN | '\u0601' // ARABIC SIGN SANAH | '\u0602' // ARABIC FOOTNOTE MARKER | '\u0603' // ARABIC SIGN SAFHA | '\u06DD' // ARABIC END OF AYAH ; fragment UnicodeClassPC : '\u005F' // LOW LINE | '\u203F' // UNDERTIE | '\u2040' // CHARACTER TIE | '\u2054' // INVERTED UNDERTIE | '\uFE33' // PRESENTATION FORM FOR VERTICAL LOW LINE | '\uFE34' // PRESENTATION FORM FOR VERTICAL WAVY LOW LINE | '\uFE4D' // DASHED LOW LINE | '\uFE4E' // CENTRELINE LOW LINE | '\uFE4F' // WAVY LOW LINE | '\uFF3F' // FULLWIDTH LOW LINE ; fragment UnicodeClassND : '\u0030'..'\u0039' | '\u0660'..'\u0669' | '\u06f0'..'\u06f9' | '\u07c0'..'\u07c9' | '\u0966'..'\u096f' | '\u09e6'..'\u09ef' | '\u0a66'..'\u0a6f' | '\u0ae6'..'\u0aef' | '\u0b66'..'\u0b6f' | '\u0be6'..'\u0bef' | '\u0c66'..'\u0c6f' | '\u0ce6'..'\u0cef' | '\u0d66'..'\u0d6f' | '\u0de6'..'\u0def' | '\u0e50'..'\u0e59' | '\u0ed0'..'\u0ed9' | '\u0f20'..'\u0f29' | '\u1040'..'\u1049' | '\u1090'..'\u1099' | '\u17e0'..'\u17e9' | '\u1810'..'\u1819' | '\u1946'..'\u194f' | '\u19d0'..'\u19d9' | '\u1a80'..'\u1a89' | '\u1a90'..'\u1a99' | '\u1b50'..'\u1b59' | '\u1bb0'..'\u1bb9' | '\u1c40'..'\u1c49' | '\u1c50'..'\u1c59' | '\ua620'..'\ua629' | '\ua8d0'..'\ua8d9' | '\ua900'..'\ua909' | '\ua9d0'..'\ua9d9' | '\ua9f0'..'\ua9f9' | '\uaa50'..'\uaa59' | '\uabf0'..'\uabf9' | '\uff10'..'\uff19' ;




© 2015 - 2025 Weber Informatics LLC | Privacy Policy