~psmay/+junk/mini-scala-antlr

« back to all changes in this revision

Viewing changes to src/antlr/Scala.g

  • Committer: Peter S. May
  • Date: 2011-05-26 13:28:21 UTC
  • Revision ID: me@psmay.com-20110526132821-o8gp580esum2r3lx
Initial

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
// vim:ft=antlr3
 
3
 
 
4
grammar Scala;
 
5
 
 
6
// Note: Pseudo AND-NOT constructs
 
7
// ~(~A | B) logically means the same as A & ~B; it is used because ANTLR
 
8
// doesn't support the & operator. This idiom is used more than once below.
 
9
 
 
10
//
 
11
// Lexer
 
12
//
 
13
 
 
14
// Rules accessed directly by the grammar
 
15
 
 
16
Arrow : '=>' ;
 
17
At : '@' ;
 
18
Bang : '!' ;
 
19
Colon : ':' ;
 
20
Comma : ',' ;
 
21
Dot : '.' ;
 
22
Equals : '=' ;
 
23
Hash : '#' ;
 
24
Less : '<' ;
 
25
Minus : '-' ;
 
26
Pipe : '|' ;
 
27
Plus : '+' ;
 
28
Star : '*' ;
 
29
SubtypeOf : '<:' ;
 
30
SupertypeOf : '>:' ;
 
31
Tilde : '~' ;
 
32
Under : '_' ;
 
33
ViewableAs : '<%' ;
 
34
Abstract : 'abstract' ;
 
35
Case : 'case' ;
 
36
Catch : 'catch' ;
 
37
Class : 'class' ;
 
38
Def : 'def' ;
 
39
Do : 'do' ;
 
40
Else : 'else' ;
 
41
Extends : 'extends' ;
 
42
Final : 'final' ;
 
43
Finally : 'finally' ;
 
44
For : 'for' ;
 
45
ForSome : 'forSome' ;
 
46
If : 'if' ;
 
47
Implicit : 'implicit' ;
 
48
Import : 'import' ;
 
49
Lazy : 'lazy' ;
 
50
Match : 'match' ;
 
51
New : 'new' ;
 
52
Null : 'null' ;
 
53
Object : 'object' ;
 
54
Override : 'override' ;
 
55
Package : 'package' ;
 
56
Private : 'private' ;
 
57
Protected : 'protected' ;
 
58
Return : 'return' ;
 
59
Sealed : 'sealed' ;
 
60
Super : 'super' ;
 
61
This : 'this' ;
 
62
Throw : 'throw' ;
 
63
Trait : 'trait' ;
 
64
Try : 'try' ;
 
65
Type : 'type' ;
 
66
Val : 'val' ;
 
67
Var : 'var' ;
 
68
While : 'while' ;
 
69
With : 'with' ;
 
70
Yield : 'yield' ;
 
71
 
 
72
LParen : '(';
 
73
RParen : ')';
 
74
LBrack : '[';
 
75
RBrack : ']';
 
76
LBrace : '{';
 
77
RBrace : '}';
 
78
 
 
79
 
 
80
// id is redefined as a grammar production
 
81
IntegerLiteral
 
82
        : (DecimalNumeral | HexNumeral | OctalNumeral) ('L' | 'l')?
 
83
        ;
 
84
FloatingPointLiteral
 
85
        : Digit+ Dot Digit* ExponentPart? FloatType?
 
86
        | Dot Digit+ ExponentPart? FloatType?
 
87
        | Digit+ ExponentPart FloatType?
 
88
        | Digit+ FloatType
 
89
        ;
 
90
BooleanLiteral
 
91
        : 'true'
 
92
        | 'false'
 
93
        ;
 
94
CharacterLiteral
 
95
        : '\'' ( PrintableChar | CharEscapeSeq ) '\''
 
96
        ;
 
97
StringLiteral
 
98
        // Multiline can end with more than three "s; all but the last three are
 
99
        // part of the text
 
100
        : '"""' (options {greedy=false;} : .)* '"""' '"'*
 
101
        | '"' StringElement* '"'
 
102
        ;
 
103
SymbolLiteral
 
104
        : '\'' (VarId | PlainNonVarId)
 
105
        ;
 
106
Newl
 
107
        : '\r' '\n'?
 
108
        | '\n'
 
109
        ;
 
110
NotNewl
 
111
        : ~('\r' | '\n')
 
112
        ;
 
113
Semi
 
114
        : ';'
 
115
        | Newl+
 
116
        ;
 
117
VarId
 
118
        : Lower Idrest
 
119
        ;
 
120
// Plainid is separated into VarId and PlainNonVarId
 
121
PlainNonVarId
 
122
        : Upper Idrest
 
123
        | Op
 
124
        ;
 
125
 
 
126
//
 
127
// Fragments to support the rules above
 
128
//
 
129
 
 
130
fragment PrintableChar : NotUnicodeCatC ; // Defined with other Unicode categories
 
131
fragment CharEscapeSeq
 
132
        : '\\'
 
133
                ( 'b'   // U+8
 
134
                | 't'   // U+9
 
135
                | 'n'   // U+A
 
136
                | 'f'   // U+C
 
137
                | 'r'   // U+D
 
138
                | '"'   // same
 
139
                | '\''  // same
 
140
                | '\\'  // same
 
141
                | 'x' Hex2
 
142
                | 'u' Hex4
 
143
                | 'X' Hex6 // my own extension; fits codepoints outside the BMP directly
 
144
                // octal escapes left out somewhat intentionally
 
145
                )
 
146
        ;
 
147
fragment PrintableCharNoDoubleQuote : ~(~PrintableChar | '"') ;
 
148
fragment CharNoDoubleQuote : ~'"' ;
 
149
 
 
150
// Parts of these may be redundant
 
151
fragment Upper : 'A' .. 'Z' | '$' | '_' | UnicodeCatLu ;
 
152
fragment Lower : 'a' .. 'z' | UnicodeCatLl ;
 
153
fragment Letter : Upper | Lower | UnicodeCatLoLtNl ;
 
154
fragment Digit : '0' .. '9' ;
 
155
 
 
156
fragment Opchar : ~(~OverdefinedOpchar | InvalidOpchar) ;
 
157
fragment OverdefinedOpchar : '\u0020' .. '\u007f' | UnicodeCatSmSo ;
 
158
fragment InvalidOpchar
 
159
        : Letter | Digit
 
160
        | LParen | RParen
 
161
        | LBrack | RBrack
 
162
        | LBrace | RBrace
 
163
        ;
 
164
fragment Op
 
165
        : Opchar+
 
166
        ;
 
167
fragment Idrest
 
168
        : (Letter | Digit)* (Under Op)?
 
169
        ;
 
170
fragment DecimalNumeral : '0' | NonZeroDigit Digit* ;
 
171
fragment HexNumeral : '0x' HexDigit+ ;
 
172
fragment OctalNumeral : '0' OctalDigit+ ;
 
173
fragment NonZeroDigit : ~(~Digit | '0') ;
 
174
fragment HexDigit : Digit | 'a' .. 'f' | 'A' .. 'F' ;
 
175
fragment Hex2 : HexDigit HexDigit ;
 
176
fragment Hex4 : Hex2 Hex2 ;
 
177
fragment Hex6 : Hex4 Hex2 ;
 
178
fragment Hex8 : Hex4 Hex4 ;
 
179
fragment OctalDigit : '0' .. '7' ;
 
180
fragment OctalEscapeDigits
 
181
        : ('0'..'3') OctalDigit OctalDigit
 
182
        | OctalDigit OctalDigit?
 
183
        ;
 
184
fragment ExponentPart
 
185
        : ('E' | 'e') (Plus | Minus)? Digit+
 
186
        ;
 
187
fragment FloatType
 
188
        : 'F' | 'f' | 'D' | 'd'
 
189
        ;
 
190
fragment StringElement
 
191
        : PrintableCharNoDoubleQuote
 
192
        | CharEscapeSeq
 
193
        ;
 
194
fragment Comment
 
195
        : '/*' (options {greedy=false;} : .)* '*/'
 
196
        | '//' NotNewl*
 
197
        ;
 
198
 
 
199
 
 
200
 
 
201
 
 
202
 
 
203
 
 
204
 
 
205
 
 
206
 
 
207
 
 
208
 
 
209
 
 
210
 
 
211
 
 
212
 
 
213
 
 
214
 
 
215
 
 
216
 
 
217
 
 
218
 
 
219
 
 
220
 
 
221
 
 
222
 
 
223
 
 
224
 
 
225
 
 
226
 
 
227
 
 
228
 
 
229
 
 
230
 
 
231
 
 
232
 
 
233
 
 
234
 
 
235
 
 
236
 
 
237
 
 
238
 
 
239
 
 
240
 
 
241
 
 
242
 
 
243
 
 
244
 
 
245
 
 
246
 
 
247
 
 
248
/* Context-free syntax */
 
249
 
 
250
id
 
251
        : VarId
 
252
        | PlainNonVarId
 
253
        //| // production here for '\'' stringLit '\'' doesn't seem to make any sense
 
254
        ;
 
255
literal
 
256
        : Minus? IntegerLiteral
 
257
        | Minus? FloatingPointLiteral
 
258
        | BooleanLiteral
 
259
        | CharacterLiteral
 
260
        | StringLiteral
 
261
        | SymbolLiteral
 
262
        | Null
 
263
        ;
 
264
qualId
 
265
        : id (Dot id)*
 
266
        ;
 
267
ids
 
268
        : id (Comma id)*
 
269
        ;
 
270
path
 
271
        : stableId
 
272
        | (id Dot)? This
 
273
        ;
 
274
stableId
 
275
        : id
 
276
        | path Dot id
 
277
        | (id Dot)? Super classQualifier? Dot id
 
278
        ;
 
279
classQualifier
 
280
        : LBrack id RBrack
 
281
        ;
 
282
type
 
283
        : functionArgTypes Arrow type
 
284
        | infixType existentialClause?
 
285
        ;
 
286
functionArgTypes
 
287
        : infixType
 
288
        | LParen ( paramType (Comma paramType )* )? RParen
 
289
        ;
 
290
existentialClause
 
291
        : ForSome LBrace existentialDcl (Semi existentialDcl)* RBrace
 
292
        ;
 
293
existentialDcl
 
294
        : Type typeDcl
 
295
        | Val valDcl
 
296
        ;
 
297
infixType
 
298
        : compoundType (id Newl? compoundType)*
 
299
        ;
 
300
compoundType
 
301
        : annotType (With annotType)* refinement?
 
302
        | refinement
 
303
        ;
 
304
annotType
 
305
        : simpleType annotation*
 
306
        ;
 
307
simpleType
 
308
        :
 
309
                ( stableId
 
310
                | path Dot Type
 
311
                | LParen types RParen
 
312
                )+
 
313
                ( typeArgs
 
314
                | Hash id
 
315
                )*
 
316
        ;
 
317
typeArgs
 
318
        : LBrack types RBrack
 
319
        ;
 
320
types
 
321
        : type (Comma type)*
 
322
        ;
 
323
refinement
 
324
        : Newl? LBrace refineStat (Semi refineStat)* RBrace
 
325
        ;
 
326
refineStat
 
327
        : dcl
 
328
        | Type typeDef
 
329
        |
 
330
        ;
 
331
typePat
 
332
        : type
 
333
        ;
 
334
ascription
 
335
        : Colon (infixType | annotation+ | Under Star)
 
336
        ;
 
337
expr
 
338
        : (bindings | (Implicit)? id | Under) Arrow expr
 
339
        | expr1
 
340
        ;
 
341
expr1
 
342
        : If LParen expr RParen Newl* expr (Semi? Else expr)?
 
343
        | While LParen expr RParen Newl* expr
 
344
        | Try LBrace block RBrace (Catch LBrace caseClauses RBrace)? (Finally expr)?
 
345
        | Do expr Semi? While LParen expr RParen
 
346
        | For (LParen enumerators RParen | LBrace enumerators RBrace) Newl* Yield? expr
 
347
        | Throw expr
 
348
        | Return expr?
 
349
        | (simpleExpr Dot)? id Equals expr
 
350
        | simpleExpr1 argumentExprs Equals expr
 
351
        | postfixExpr
 
352
        | postfixExpr ascription
 
353
        | postfixExpr Match LBrace caseClauses RBrace
 
354
        ;
 
355
postfixExpr
 
356
        : infixExpr (id Newl?)?
 
357
        ;
 
358
infixExpr
 
359
        : prefixExpr (id Newl? infixExpr)*
 
360
        ;
 
361
prefixExpr
 
362
        : (Minus | Plus | Tilde | Bang)? simpleExpr
 
363
        ;
 
364
simpleExpr
 
365
        : New (classTemplate | templateBody)
 
366
        | blockExpr
 
367
        | simpleExpr1 Under?
 
368
        ;
 
369
simpleExpr1
 
370
        :
 
371
                ( literal
 
372
                | path
 
373
                | Under
 
374
                | LParen exprs? RParen
 
375
                | simpleExpr Dot id
 
376
                | simpleExpr typeArgs
 
377
                //| XmlExpr
 
378
                )+ argumentExprs *
 
379
        ;
 
380
exprs
 
381
        : expr (Comma expr)*
 
382
        ;
 
383
argumentExprs
 
384
        : LParen exprs? RParen
 
385
        | LParen (exprs Comma)? postfixExpr Colon Under Star RParen
 
386
        | Newl? blockExpr
 
387
        ;
 
388
blockExpr
 
389
        : LBrace (caseClauses | block) RBrace
 
390
        ;
 
391
block
 
392
        : (blockStat Semi)* resultExpr?
 
393
        ;
 
394
blockStat
 
395
        : importz
 
396
        | annotation* (Implicit | Lazy)? def
 
397
        | annotation* localModifier* tmplDef
 
398
        | expr1
 
399
        |
 
400
        ;
 
401
resultExpr
 
402
        : expr1
 
403
        | (bindings | (Implicit? id | Under) Colon compoundType) Arrow block
 
404
        ;
 
405
enumerators
 
406
        : generator (Semi enumerator)*
 
407
        ;
 
408
enumerator
 
409
        : generator
 
410
        | guard
 
411
        | Val pattern1 Equals expr
 
412
        ;
 
413
generator
 
414
        : pattern1 Less expr guard?
 
415
        ;
 
416
caseClauses
 
417
        : caseClause+
 
418
        ;
 
419
caseClause
 
420
        : Case pattern guard? Arrow block
 
421
        ;
 
422
guard
 
423
        : If postfixExpr
 
424
        ;
 
425
pattern
 
426
        : pattern1 ( Pipe pattern1 )*
 
427
        ;
 
428
pattern1
 
429
        : VarId Colon typePat
 
430
        | Under Colon typePat
 
431
        | pattern2
 
432
        ;
 
433
pattern2
 
434
        : VarId (At pattern3)?
 
435
        | pattern3
 
436
        ;
 
437
pattern3
 
438
        : simplePattern ( id Newl? simplePattern )*
 
439
        ;
 
440
simplePattern
 
441
        : Under
 
442
        | VarId
 
443
        | literal
 
444
        | stableId
 
445
        | stableId LParen patterns RParen
 
446
        | stableId LParen (patterns Comma)? (VarId At)? Under Star RParen
 
447
        | LParen patterns? RParen
 
448
        //| XmlPattern
 
449
        ;
 
450
patterns
 
451
        : pattern (Comma pattern)*
 
452
        // another alternation written as '_' * in the spec. Don't know what they meant.
 
453
        ;
 
454
typeParamClause
 
455
        : LBrack variantTypeParam (Comma variantTypeParam)* RBrack
 
456
        ;
 
457
funTypeParamClause
 
458
        : LBrack typeParam (Comma typeParam)* RBrack
 
459
        ;
 
460
variantTypeParam
 
461
        : annotation* (Plus | Minus)? typeParam
 
462
        ;
 
463
typeParam
 
464
        : (id | Under) typeParamClause? (SupertypeOf type)? (SubtypeOf type)? (ViewableAs type)* (Colon type)*
 
465
        ;
 
466
paramClauses
 
467
        : paramClause* (Newl? LParen Implicit params RParen)?
 
468
        ;
 
469
paramClause
 
470
        : Newl? LParen params? RParen
 
471
        ;
 
472
params
 
473
        : param (Comma param)*
 
474
        ;
 
475
param
 
476
        : annotation* id (Colon paramType)? (Equals expr)?
 
477
        ;
 
478
paramType
 
479
        : type
 
480
        | Arrow type
 
481
        | type Star
 
482
        ;
 
483
classParamClauses
 
484
        : classParamClause* (Newl? LParen Implicit classParams RParen)?
 
485
        ;
 
486
classParamClause
 
487
        : Newl? LParen classParams? RParen
 
488
        ;
 
489
classParams
 
490
        : classParam+ // Spec requires a space between these
 
491
        ;
 
492
classParam
 
493
        : annotation* (modifier* (Val | Var))? id Colon paramType (Equals expr)?
 
494
        ;
 
495
bindings
 
496
        : LParen binding (Comma binding)* RParen
 
497
        ;
 
498
binding
 
499
        : (id | Under) (Colon type)?
 
500
        ;
 
501
modifier
 
502
        : localModifier
 
503
        | accessModifier
 
504
        | Override
 
505
        ;
 
506
localModifier
 
507
        : Abstract
 
508
        | Final
 
509
        | Sealed
 
510
        | Implicit
 
511
        | Lazy
 
512
        ;
 
513
accessModifier
 
514
        : (Private | Protected) accessQualifier?
 
515
        ;
 
516
accessQualifier
 
517
        : LBrack (id | This) RBrack
 
518
        ;
 
519
annotation
 
520
        : At simpleType argumentExprs*
 
521
        ;
 
522
constrAnnotation
 
523
        : At simpleType argumentExprs
 
524
        ;
 
525
nameValuePair
 
526
        : Val id Equals prefixExpr
 
527
        ;
 
528
templateBody
 
529
        : Newl? LBrace selfType? templateStat (Semi templateStat)* RBrace
 
530
        ;
 
531
templateStat
 
532
        : importz
 
533
        | (annotation Newl?)* modifier* (def | dcl)
 
534
        | expr
 
535
        |
 
536
        ;
 
537
selfType
 
538
        : id (Colon type)? Arrow
 
539
        | This Colon type Arrow
 
540
        ;
 
541
importz
 
542
        : Import importExpr (Comma importExpr)*
 
543
        ;
 
544
importExpr
 
545
        : stableId Dot (id | Under | importSelectors)
 
546
        ;
 
547
importSelectors
 
548
        : LBrace (importSelector Comma)* (importSelector | Under) RBrace
 
549
        ;
 
550
importSelector
 
551
        : id (Arrow id | Arrow Under)?
 
552
        ;
 
553
dcl
 
554
        : Val valDcl
 
555
        | Var varDcl
 
556
        | Def funDcl
 
557
        | Type Newl* typeDcl
 
558
        ;
 
559
valDcl
 
560
        : ids Colon type
 
561
        ;
 
562
varDcl
 
563
        : ids Colon type
 
564
        ;
 
565
funDcl
 
566
        : funSig (Colon type)?
 
567
        ;
 
568
funSig
 
569
        : id funTypeParamClause? paramClauses
 
570
        ;
 
571
typeDcl
 
572
        : id typeParamClause? (SupertypeOf type)? (SubtypeOf type)?
 
573
        ;
 
574
patVarDef
 
575
        : Val patDef
 
576
        | Var varDef
 
577
        ;
 
578
def
 
579
        : patVarDef
 
580
        | Def funDef
 
581
        | Type Newl* typeDef
 
582
        | tmplDef
 
583
        ;
 
584
patDef
 
585
        : pattern2 (Comma pattern2)* (Colon type)? Equals expr
 
586
        ;
 
587
varDef
 
588
        : patDef
 
589
        | ids Colon type Equals Under
 
590
        ;
 
591
funDef
 
592
        : funSig (Colon type)? Equals expr
 
593
        | funSig Newl? LBrace block RBrace
 
594
        | This paramClause paramClauses (Equals constrExpr | Newl? constrBlock)
 
595
        ;
 
596
typeDef
 
597
        : id typeParamClause? Equals type
 
598
        ;
 
599
tmplDef
 
600
        : Case?
 
601
                ( Class classDef
 
602
                | Object objectDef
 
603
                )
 
604
        | Trait traitDef
 
605
        ;
 
606
classDef
 
607
        : id typeParamClause? constrAnnotation* accessModifier? classParamClauses classTemplateOpt
 
608
        ;
 
609
traitDef
 
610
        : id typeParamClause? traitTemplateOpt
 
611
        ;
 
612
objectDef
 
613
        : id classTemplateOpt
 
614
        ;
 
615
classTemplateOpt
 
616
        : Extends classTemplate | (Extends? templateBody)?
 
617
        ;
 
618
traitTemplateOpt
 
619
        : Extends traitTemplate | (Extends? templateBody)?
 
620
        ;
 
621
classTemplate
 
622
        : earlyDefs? classParents templateBody?
 
623
        ;
 
624
traitTemplate
 
625
        : earlyDefs? traitParents templateBody?
 
626
        ;
 
627
classParents
 
628
        : constr (With annotType)*
 
629
        ;
 
630
traitParents
 
631
        : annotType (With annotType)*
 
632
        ;
 
633
constr
 
634
        : annotType argumentExprs*
 
635
        ;
 
636
earlyDefs
 
637
        : LBrace (earlyDef (Semi earlyDef)*)? RBrace With
 
638
        ;
 
639
earlyDef
 
640
        : (annotation Newl?)* modifier* patVarDef
 
641
        ;
 
642
constrExpr
 
643
        : selfInvocation
 
644
        | constrBlock
 
645
        ;
 
646
constrBlock
 
647
        : LBrace selfInvocation (Semi blockStat)* RBrace
 
648
        ;
 
649
selfInvocation
 
650
        : This argumentExprs+
 
651
        ;
 
652
topStatSeq
 
653
        : topStat (Semi topStat)*
 
654
        ;
 
655
topStat
 
656
        : (annotation Newl?)* modifier* tmplDef
 
657
        | importz
 
658
        | packaging
 
659
        | packageObject
 
660
        ;
 
661
packaging
 
662
        : Package qualId Newl? LBrace topStatSeq RBrace
 
663
        ;
 
664
packageObject
 
665
        : Package Object objectDef
 
666
        ;
 
667
compilationUnit
 
668
        : (Package qualId Semi)* topStatSeq
 
669
        ;
 
670
 
 
671
 
 
672
 
 
673
// Unicode character classes
 
674
// UCS-2 (BMP) only
 
675
 
 
676
fragment NotUnicodeCatC : ~UnicodeCatC ;
 
677
 
 
678
//
 
679
//
 
680
// BEGIN GENERATED CATEGORIES
 
681
fragment UnicodeCatC
 
682
        : '\u0000'..'\u001f'
 
683
        | '\u007f'..'\u009f'
 
684
        | '\u00ad'..'\u00ad'
 
685
        | '\u0237'..'\u024f'
 
686
        | '\u0358'..'\u035c'
 
687
        | '\u0370'..'\u0373'
 
688
        | '\u0376'..'\u0379'
 
689
        | '\u037b'..'\u037d'
 
690
        | '\u037f'..'\u0383'
 
691
        | '\u038b'..'\u038b'
 
692
        | '\u038d'..'\u038d'
 
693
        | '\u03a2'..'\u03a2'
 
694
        | '\u03cf'..'\u03cf'
 
695
        | '\u03fc'..'\u03ff'
 
696
        | '\u0487'..'\u0487'
 
697
        | '\u04cf'..'\u04cf'
 
698
        | '\u04f6'..'\u04f7'
 
699
        | '\u04fa'..'\u04ff'
 
700
        | '\u0510'..'\u0530'
 
701
        | '\u0557'..'\u0558'
 
702
        | '\u0560'..'\u0560'
 
703
        | '\u0588'..'\u0588'
 
704
        | '\u058b'..'\u0590'
 
705
        | '\u05a2'..'\u05a2'
 
706
        | '\u05ba'..'\u05ba'
 
707
        | '\u05c5'..'\u05cf'
 
708
        | '\u05eb'..'\u05ef'
 
709
        | '\u05f5'..'\u060b'
 
710
        | '\u0616'..'\u061a'
 
711
        | '\u061c'..'\u061e'
 
712
        | '\u0620'..'\u0620'
 
713
        | '\u063b'..'\u063f'
 
714
        | '\u0659'..'\u065f'
 
715
        | '\u06dd'..'\u06dd'
 
716
        | '\u070e'..'\u070f'
 
717
        | '\u074b'..'\u074c'
 
718
        | '\u0750'..'\u077f'
 
719
        | '\u07b2'..'\u0900'
 
720
        | '\u093a'..'\u093b'
 
721
        | '\u094e'..'\u094f'
 
722
        | '\u0955'..'\u0957'
 
723
        | '\u0971'..'\u0980'
 
724
        | '\u0984'..'\u0984'
 
725
        | '\u098d'..'\u098e'
 
726
        | '\u0991'..'\u0992'
 
727
        | '\u09a9'..'\u09a9'
 
728
        | '\u09b1'..'\u09b1'
 
729
        | '\u09b3'..'\u09b5'
 
730
        | '\u09ba'..'\u09bb'
 
731
        | '\u09c5'..'\u09c6'
 
732
        | '\u09c9'..'\u09ca'
 
733
        | '\u09ce'..'\u09d6'
 
734
        | '\u09d8'..'\u09db'
 
735
        | '\u09de'..'\u09de'
 
736
        | '\u09e4'..'\u09e5'
 
737
        | '\u09fb'..'\u0a00'
 
738
        | '\u0a04'..'\u0a04'
 
739
        | '\u0a0b'..'\u0a0e'
 
740
        | '\u0a11'..'\u0a12'
 
741
        | '\u0a29'..'\u0a29'
 
742
        | '\u0a31'..'\u0a31'
 
743
        | '\u0a34'..'\u0a34'
 
744
        | '\u0a37'..'\u0a37'
 
745
        | '\u0a3a'..'\u0a3b'
 
746
        | '\u0a3d'..'\u0a3d'
 
747
        | '\u0a43'..'\u0a46'
 
748
        | '\u0a49'..'\u0a4a'
 
749
        | '\u0a4e'..'\u0a58'
 
750
        | '\u0a5d'..'\u0a5d'
 
751
        | '\u0a5f'..'\u0a65'
 
752
        | '\u0a75'..'\u0a80'
 
753
        | '\u0a84'..'\u0a84'
 
754
        | '\u0a8e'..'\u0a8e'
 
755
        | '\u0a92'..'\u0a92'
 
756
        | '\u0aa9'..'\u0aa9'
 
757
        | '\u0ab1'..'\u0ab1'
 
758
        | '\u0ab4'..'\u0ab4'
 
759
        | '\u0aba'..'\u0abb'
 
760
        | '\u0ac6'..'\u0ac6'
 
761
        | '\u0aca'..'\u0aca'
 
762
        | '\u0ace'..'\u0acf'
 
763
        | '\u0ad1'..'\u0adf'
 
764
        | '\u0ae4'..'\u0ae5'
 
765
        | '\u0af0'..'\u0af0'
 
766
        | '\u0af2'..'\u0b00'
 
767
        | '\u0b04'..'\u0b04'
 
768
        | '\u0b0d'..'\u0b0e'
 
769
        | '\u0b11'..'\u0b12'
 
770
        | '\u0b29'..'\u0b29'
 
771
        | '\u0b31'..'\u0b31'
 
772
        | '\u0b34'..'\u0b34'
 
773
        | '\u0b3a'..'\u0b3b'
 
774
        | '\u0b44'..'\u0b46'
 
775
        | '\u0b49'..'\u0b4a'
 
776
        | '\u0b4e'..'\u0b55'
 
777
        | '\u0b58'..'\u0b5b'
 
778
        | '\u0b5e'..'\u0b5e'
 
779
        | '\u0b62'..'\u0b65'
 
780
        | '\u0b72'..'\u0b81'
 
781
        | '\u0b84'..'\u0b84'
 
782
        | '\u0b8b'..'\u0b8d'
 
783
        | '\u0b91'..'\u0b91'
 
784
        | '\u0b96'..'\u0b98'
 
785
        | '\u0b9b'..'\u0b9b'
 
786
        | '\u0b9d'..'\u0b9d'
 
787
        | '\u0ba0'..'\u0ba2'
 
788
        | '\u0ba5'..'\u0ba7'
 
789
        | '\u0bab'..'\u0bad'
 
790
        | '\u0bb6'..'\u0bb6'
 
791
        | '\u0bba'..'\u0bbd'
 
792
        | '\u0bc3'..'\u0bc5'
 
793
        | '\u0bc9'..'\u0bc9'
 
794
        | '\u0bce'..'\u0bd6'
 
795
        | '\u0bd8'..'\u0be6'
 
796
        | '\u0bfb'..'\u0c00'
 
797
        | '\u0c04'..'\u0c04'
 
798
        | '\u0c0d'..'\u0c0d'
 
799
        | '\u0c11'..'\u0c11'
 
800
        | '\u0c29'..'\u0c29'
 
801
        | '\u0c34'..'\u0c34'
 
802
        | '\u0c3a'..'\u0c3d'
 
803
        | '\u0c45'..'\u0c45'
 
804
        | '\u0c49'..'\u0c49'
 
805
        | '\u0c4e'..'\u0c54'
 
806
        | '\u0c57'..'\u0c5f'
 
807
        | '\u0c62'..'\u0c65'
 
808
        | '\u0c70'..'\u0c81'
 
809
        | '\u0c84'..'\u0c84'
 
810
        | '\u0c8d'..'\u0c8d'
 
811
        | '\u0c91'..'\u0c91'
 
812
        | '\u0ca9'..'\u0ca9'
 
813
        | '\u0cb4'..'\u0cb4'
 
814
        | '\u0cba'..'\u0cbb'
 
815
        | '\u0cc5'..'\u0cc5'
 
816
        | '\u0cc9'..'\u0cc9'
 
817
        | '\u0cce'..'\u0cd4'
 
818
        | '\u0cd7'..'\u0cdd'
 
819
        | '\u0cdf'..'\u0cdf'
 
820
        | '\u0ce2'..'\u0ce5'
 
821
        | '\u0cf0'..'\u0d01'
 
822
        | '\u0d04'..'\u0d04'
 
823
        | '\u0d0d'..'\u0d0d'
 
824
        | '\u0d11'..'\u0d11'
 
825
        | '\u0d29'..'\u0d29'
 
826
        | '\u0d3a'..'\u0d3d'
 
827
        | '\u0d44'..'\u0d45'
 
828
        | '\u0d49'..'\u0d49'
 
829
        | '\u0d4e'..'\u0d56'
 
830
        | '\u0d58'..'\u0d5f'
 
831
        | '\u0d62'..'\u0d65'
 
832
        | '\u0d70'..'\u0d81'
 
833
        | '\u0d84'..'\u0d84'
 
834
        | '\u0d97'..'\u0d99'
 
835
        | '\u0db2'..'\u0db2'
 
836
        | '\u0dbc'..'\u0dbc'
 
837
        | '\u0dbe'..'\u0dbf'
 
838
        | '\u0dc7'..'\u0dc9'
 
839
        | '\u0dcb'..'\u0dce'
 
840
        | '\u0dd5'..'\u0dd5'
 
841
        | '\u0dd7'..'\u0dd7'
 
842
        | '\u0de0'..'\u0df1'
 
843
        | '\u0df5'..'\u0e00'
 
844
        | '\u0e3b'..'\u0e3e'
 
845
        | '\u0e5c'..'\u0e80'
 
846
        | '\u0e83'..'\u0e83'
 
847
        | '\u0e85'..'\u0e86'
 
848
        | '\u0e89'..'\u0e89'
 
849
        | '\u0e8b'..'\u0e8c'
 
850
        | '\u0e8e'..'\u0e93'
 
851
        | '\u0e98'..'\u0e98'
 
852
        | '\u0ea0'..'\u0ea0'
 
853
        | '\u0ea4'..'\u0ea4'
 
854
        | '\u0ea6'..'\u0ea6'
 
855
        | '\u0ea8'..'\u0ea9'
 
856
        | '\u0eac'..'\u0eac'
 
857
        | '\u0eba'..'\u0eba'
 
858
        | '\u0ebe'..'\u0ebf'
 
859
        | '\u0ec5'..'\u0ec5'
 
860
        | '\u0ec7'..'\u0ec7'
 
861
        | '\u0ece'..'\u0ecf'
 
862
        | '\u0eda'..'\u0edb'
 
863
        | '\u0ede'..'\u0eff'
 
864
        | '\u0f48'..'\u0f48'
 
865
        | '\u0f6b'..'\u0f70'
 
866
        | '\u0f8c'..'\u0f8f'
 
867
        | '\u0f98'..'\u0f98'
 
868
        | '\u0fbd'..'\u0fbd'
 
869
        | '\u0fcd'..'\u0fce'
 
870
        | '\u0fd0'..'\u0fff'
 
871
        | '\u1022'..'\u1022'
 
872
        | '\u1028'..'\u1028'
 
873
        | '\u102b'..'\u102b'
 
874
        | '\u1033'..'\u1035'
 
875
        | '\u103a'..'\u103f'
 
876
        | '\u105a'..'\u109f'
 
877
        | '\u10c6'..'\u10cf'
 
878
        | '\u10f9'..'\u10fa'
 
879
        | '\u10fc'..'\u10ff'
 
880
        | '\u115a'..'\u115e'
 
881
        | '\u11a3'..'\u11a7'
 
882
        | '\u11fa'..'\u11ff'
 
883
        | '\u1207'..'\u1207'
 
884
        | '\u1247'..'\u1247'
 
885
        | '\u1249'..'\u1249'
 
886
        | '\u124e'..'\u124f'
 
887
        | '\u1257'..'\u1257'
 
888
        | '\u1259'..'\u1259'
 
889
        | '\u125e'..'\u125f'
 
890
        | '\u1287'..'\u1287'
 
891
        | '\u1289'..'\u1289'
 
892
        | '\u128e'..'\u128f'
 
893
        | '\u12af'..'\u12af'
 
894
        | '\u12b1'..'\u12b1'
 
895
        | '\u12b6'..'\u12b7'
 
896
        | '\u12bf'..'\u12bf'
 
897
        | '\u12c1'..'\u12c1'
 
898
        | '\u12c6'..'\u12c7'
 
899
        | '\u12cf'..'\u12cf'
 
900
        | '\u12d7'..'\u12d7'
 
901
        | '\u12ef'..'\u12ef'
 
902
        | '\u130f'..'\u130f'
 
903
        | '\u1311'..'\u1311'
 
904
        | '\u1316'..'\u1317'
 
905
        | '\u131f'..'\u131f'
 
906
        | '\u1347'..'\u1347'
 
907
        | '\u135b'..'\u1360'
 
908
        | '\u137d'..'\u139f'
 
909
        | '\u13f5'..'\u1400'
 
910
        | '\u1677'..'\u167f'
 
911
        | '\u169d'..'\u169f'
 
912
        | '\u16f1'..'\u16ff'
 
913
        | '\u170d'..'\u170d'
 
914
        | '\u1715'..'\u171f'
 
915
        | '\u1737'..'\u173f'
 
916
        | '\u1754'..'\u175f'
 
917
        | '\u176d'..'\u176d'
 
918
        | '\u1771'..'\u1771'
 
919
        | '\u1774'..'\u177f'
 
920
        | '\u17b4'..'\u17b5'
 
921
        | '\u17de'..'\u17df'
 
922
        | '\u17ea'..'\u17ef'
 
923
        | '\u17fa'..'\u17ff'
 
924
        | '\u180f'..'\u180f'
 
925
        | '\u181a'..'\u181f'
 
926
        | '\u1878'..'\u187f'
 
927
        | '\u18aa'..'\u18ff'
 
928
        | '\u191d'..'\u191f'
 
929
        | '\u192c'..'\u192f'
 
930
        | '\u193c'..'\u193f'
 
931
        | '\u1941'..'\u1943'
 
932
        | '\u196e'..'\u196f'
 
933
        | '\u1975'..'\u19df'
 
934
        | '\u1a00'..'\u1cff'
 
935
        | '\u1d6c'..'\u1dff'
 
936
        | '\u1e9c'..'\u1e9f'
 
937
        | '\u1efa'..'\u1eff'
 
938
        | '\u1f16'..'\u1f17'
 
939
        | '\u1f1e'..'\u1f1f'
 
940
        | '\u1f46'..'\u1f47'
 
941
        | '\u1f4e'..'\u1f4f'
 
942
        | '\u1f58'..'\u1f58'
 
943
        | '\u1f5a'..'\u1f5a'
 
944
        | '\u1f5c'..'\u1f5c'
 
945
        | '\u1f5e'..'\u1f5e'
 
946
        | '\u1f7e'..'\u1f7f'
 
947
        | '\u1fb5'..'\u1fb5'
 
948
        | '\u1fc5'..'\u1fc5'
 
949
        | '\u1fd4'..'\u1fd5'
 
950
        | '\u1fdc'..'\u1fdc'
 
951
        | '\u1ff0'..'\u1ff1'
 
952
        | '\u1ff5'..'\u1ff5'
 
953
        | '\u1fff'..'\u1fff'
 
954
        | '\u200c'..'\u200f'
 
955
        | '\u202a'..'\u202e'
 
956
        | '\u2055'..'\u2056'
 
957
        | '\u2058'..'\u205e'
 
958
        | '\u2060'..'\u206f'
 
959
        | '\u2072'..'\u2073'
 
960
        | '\u208f'..'\u209f'
 
961
        | '\u20b2'..'\u20cf'
 
962
        | '\u20eb'..'\u20ff'
 
963
        | '\u213c'..'\u213c'
 
964
        | '\u214c'..'\u2152'
 
965
        | '\u2184'..'\u218f'
 
966
        | '\u23d1'..'\u23ff'
 
967
        | '\u2427'..'\u243f'
 
968
        | '\u244b'..'\u245f'
 
969
        | '\u2618'..'\u2618'
 
970
        | '\u267e'..'\u267f'
 
971
        | '\u2692'..'\u269f'
 
972
        | '\u26a2'..'\u2700'
 
973
        | '\u2705'..'\u2705'
 
974
        | '\u270a'..'\u270b'
 
975
        | '\u2728'..'\u2728'
 
976
        | '\u274c'..'\u274c'
 
977
        | '\u274e'..'\u274e'
 
978
        | '\u2753'..'\u2755'
 
979
        | '\u2757'..'\u2757'
 
980
        | '\u275f'..'\u2760'
 
981
        | '\u2795'..'\u2797'
 
982
        | '\u27b0'..'\u27b0'
 
983
        | '\u27bf'..'\u27cf'
 
984
        | '\u27ec'..'\u27ef'
 
985
        | '\u2b0e'..'\u2e7f'
 
986
        | '\u2e9a'..'\u2e9a'
 
987
        | '\u2ef4'..'\u2eff'
 
988
        | '\u2fd6'..'\u2fef'
 
989
        | '\u2ffc'..'\u2fff'
 
990
        | '\u3040'..'\u3040'
 
991
        | '\u3097'..'\u3098'
 
992
        | '\u3100'..'\u3104'
 
993
        | '\u312d'..'\u3130'
 
994
        | '\u318f'..'\u318f'
 
995
        | '\u31b8'..'\u31ef'
 
996
        | '\u321f'..'\u321f'
 
997
        | '\u3244'..'\u324f'
 
998
        | '\u327e'..'\u327e'
 
999
        | '\u32ff'..'\u32ff'
 
1000
        | '\u4db6'..'\u4dbf'
 
1001
        | '\u9fa6'..'\u9fff'
 
1002
        | '\ua48d'..'\ua48f'
 
1003
        | '\ua4c7'..'\uabff'
 
1004
        | '\ud7a4'..'\uf8ff'
 
1005
        | '\ufa2e'..'\ufa2f'
 
1006
        | '\ufa6b'..'\ufaff'
 
1007
        | '\ufb07'..'\ufb12'
 
1008
        | '\ufb18'..'\ufb1c'
 
1009
        | '\ufb37'..'\ufb37'
 
1010
        | '\ufb3d'..'\ufb3d'
 
1011
        | '\ufb3f'..'\ufb3f'
 
1012
        | '\ufb42'..'\ufb42'
 
1013
        | '\ufb45'..'\ufb45'
 
1014
        | '\ufbb2'..'\ufbd2'
 
1015
        | '\ufd40'..'\ufd4f'
 
1016
        | '\ufd90'..'\ufd91'
 
1017
        | '\ufdc8'..'\ufdef'
 
1018
        | '\ufdfe'..'\ufdff'
 
1019
        | '\ufe10'..'\ufe1f'
 
1020
        | '\ufe24'..'\ufe2f'
 
1021
        | '\ufe53'..'\ufe53'
 
1022
        | '\ufe67'..'\ufe67'
 
1023
        | '\ufe6c'..'\ufe6f'
 
1024
        | '\ufe75'..'\ufe75'
 
1025
        | '\ufefd'..'\uff00'
 
1026
        | '\uffbf'..'\uffc1'
 
1027
        | '\uffc8'..'\uffc9'
 
1028
        | '\uffd0'..'\uffd1'
 
1029
        | '\uffd8'..'\uffd9'
 
1030
        | '\uffdd'..'\uffdf'
 
1031
        | '\uffe7'..'\uffe7'
 
1032
        | '\uffef'..'\ufffb'
 
1033
        | '\ufffe'..'\uffff'
 
1034
        ;
 
1035
fragment UnicodeCatLu
 
1036
        : '\u0041'..'\u005a'
 
1037
        | '\u00c0'..'\u00d6'
 
1038
        | '\u00d8'..'\u00de'
 
1039
        | '\u0100'..'\u0100'
 
1040
        | '\u0102'..'\u0102'
 
1041
        | '\u0104'..'\u0104'
 
1042
        | '\u0106'..'\u0106'
 
1043
        | '\u0108'..'\u0108'
 
1044
        | '\u010a'..'\u010a'
 
1045
        | '\u010c'..'\u010c'
 
1046
        | '\u010e'..'\u010e'
 
1047
        | '\u0110'..'\u0110'
 
1048
        | '\u0112'..'\u0112'
 
1049
        | '\u0114'..'\u0114'
 
1050
        | '\u0116'..'\u0116'
 
1051
        | '\u0118'..'\u0118'
 
1052
        | '\u011a'..'\u011a'
 
1053
        | '\u011c'..'\u011c'
 
1054
        | '\u011e'..'\u011e'
 
1055
        | '\u0120'..'\u0120'
 
1056
        | '\u0122'..'\u0122'
 
1057
        | '\u0124'..'\u0124'
 
1058
        | '\u0126'..'\u0126'
 
1059
        | '\u0128'..'\u0128'
 
1060
        | '\u012a'..'\u012a'
 
1061
        | '\u012c'..'\u012c'
 
1062
        | '\u012e'..'\u012e'
 
1063
        | '\u0130'..'\u0130'
 
1064
        | '\u0132'..'\u0132'
 
1065
        | '\u0134'..'\u0134'
 
1066
        | '\u0136'..'\u0136'
 
1067
        | '\u0139'..'\u0139'
 
1068
        | '\u013b'..'\u013b'
 
1069
        | '\u013d'..'\u013d'
 
1070
        | '\u013f'..'\u013f'
 
1071
        | '\u0141'..'\u0141'
 
1072
        | '\u0143'..'\u0143'
 
1073
        | '\u0145'..'\u0145'
 
1074
        | '\u0147'..'\u0147'
 
1075
        | '\u014a'..'\u014a'
 
1076
        | '\u014c'..'\u014c'
 
1077
        | '\u014e'..'\u014e'
 
1078
        | '\u0150'..'\u0150'
 
1079
        | '\u0152'..'\u0152'
 
1080
        | '\u0154'..'\u0154'
 
1081
        | '\u0156'..'\u0156'
 
1082
        | '\u0158'..'\u0158'
 
1083
        | '\u015a'..'\u015a'
 
1084
        | '\u015c'..'\u015c'
 
1085
        | '\u015e'..'\u015e'
 
1086
        | '\u0160'..'\u0160'
 
1087
        | '\u0162'..'\u0162'
 
1088
        | '\u0164'..'\u0164'
 
1089
        | '\u0166'..'\u0166'
 
1090
        | '\u0168'..'\u0168'
 
1091
        | '\u016a'..'\u016a'
 
1092
        | '\u016c'..'\u016c'
 
1093
        | '\u016e'..'\u016e'
 
1094
        | '\u0170'..'\u0170'
 
1095
        | '\u0172'..'\u0172'
 
1096
        | '\u0174'..'\u0174'
 
1097
        | '\u0176'..'\u0176'
 
1098
        | '\u0178'..'\u0179'
 
1099
        | '\u017b'..'\u017b'
 
1100
        | '\u017d'..'\u017d'
 
1101
        | '\u0181'..'\u0182'
 
1102
        | '\u0184'..'\u0184'
 
1103
        | '\u0186'..'\u0187'
 
1104
        | '\u0189'..'\u018b'
 
1105
        | '\u018e'..'\u0191'
 
1106
        | '\u0193'..'\u0194'
 
1107
        | '\u0196'..'\u0198'
 
1108
        | '\u019c'..'\u019d'
 
1109
        | '\u019f'..'\u01a0'
 
1110
        | '\u01a2'..'\u01a2'
 
1111
        | '\u01a4'..'\u01a4'
 
1112
        | '\u01a6'..'\u01a7'
 
1113
        | '\u01a9'..'\u01a9'
 
1114
        | '\u01ac'..'\u01ac'
 
1115
        | '\u01ae'..'\u01af'
 
1116
        | '\u01b1'..'\u01b3'
 
1117
        | '\u01b5'..'\u01b5'
 
1118
        | '\u01b7'..'\u01b8'
 
1119
        | '\u01bc'..'\u01bc'
 
1120
        | '\u01c4'..'\u01c4'
 
1121
        | '\u01c7'..'\u01c7'
 
1122
        | '\u01ca'..'\u01ca'
 
1123
        | '\u01cd'..'\u01cd'
 
1124
        | '\u01cf'..'\u01cf'
 
1125
        | '\u01d1'..'\u01d1'
 
1126
        | '\u01d3'..'\u01d3'
 
1127
        | '\u01d5'..'\u01d5'
 
1128
        | '\u01d7'..'\u01d7'
 
1129
        | '\u01d9'..'\u01d9'
 
1130
        | '\u01db'..'\u01db'
 
1131
        | '\u01de'..'\u01de'
 
1132
        | '\u01e0'..'\u01e0'
 
1133
        | '\u01e2'..'\u01e2'
 
1134
        | '\u01e4'..'\u01e4'
 
1135
        | '\u01e6'..'\u01e6'
 
1136
        | '\u01e8'..'\u01e8'
 
1137
        | '\u01ea'..'\u01ea'
 
1138
        | '\u01ec'..'\u01ec'
 
1139
        | '\u01ee'..'\u01ee'
 
1140
        | '\u01f1'..'\u01f1'
 
1141
        | '\u01f4'..'\u01f4'
 
1142
        | '\u01f6'..'\u01f8'
 
1143
        | '\u01fa'..'\u01fa'
 
1144
        | '\u01fc'..'\u01fc'
 
1145
        | '\u01fe'..'\u01fe'
 
1146
        | '\u0200'..'\u0200'
 
1147
        | '\u0202'..'\u0202'
 
1148
        | '\u0204'..'\u0204'
 
1149
        | '\u0206'..'\u0206'
 
1150
        | '\u0208'..'\u0208'
 
1151
        | '\u020a'..'\u020a'
 
1152
        | '\u020c'..'\u020c'
 
1153
        | '\u020e'..'\u020e'
 
1154
        | '\u0210'..'\u0210'
 
1155
        | '\u0212'..'\u0212'
 
1156
        | '\u0214'..'\u0214'
 
1157
        | '\u0216'..'\u0216'
 
1158
        | '\u0218'..'\u0218'
 
1159
        | '\u021a'..'\u021a'
 
1160
        | '\u021c'..'\u021c'
 
1161
        | '\u021e'..'\u021e'
 
1162
        | '\u0220'..'\u0220'
 
1163
        | '\u0222'..'\u0222'
 
1164
        | '\u0224'..'\u0224'
 
1165
        | '\u0226'..'\u0226'
 
1166
        | '\u0228'..'\u0228'
 
1167
        | '\u022a'..'\u022a'
 
1168
        | '\u022c'..'\u022c'
 
1169
        | '\u022e'..'\u022e'
 
1170
        | '\u0230'..'\u0230'
 
1171
        | '\u0232'..'\u0232'
 
1172
        | '\u0386'..'\u0386'
 
1173
        | '\u0388'..'\u038a'
 
1174
        | '\u038c'..'\u038c'
 
1175
        | '\u038e'..'\u038f'
 
1176
        | '\u0391'..'\u03a1'
 
1177
        | '\u03a3'..'\u03ab'
 
1178
        | '\u03d2'..'\u03d4'
 
1179
        | '\u03d8'..'\u03d8'
 
1180
        | '\u03da'..'\u03da'
 
1181
        | '\u03dc'..'\u03dc'
 
1182
        | '\u03de'..'\u03de'
 
1183
        | '\u03e0'..'\u03e0'
 
1184
        | '\u03e2'..'\u03e2'
 
1185
        | '\u03e4'..'\u03e4'
 
1186
        | '\u03e6'..'\u03e6'
 
1187
        | '\u03e8'..'\u03e8'
 
1188
        | '\u03ea'..'\u03ea'
 
1189
        | '\u03ec'..'\u03ec'
 
1190
        | '\u03ee'..'\u03ee'
 
1191
        | '\u03f4'..'\u03f4'
 
1192
        | '\u03f7'..'\u03f7'
 
1193
        | '\u03f9'..'\u03fa'
 
1194
        | '\u0400'..'\u042f'
 
1195
        | '\u0460'..'\u0460'
 
1196
        | '\u0462'..'\u0462'
 
1197
        | '\u0464'..'\u0464'
 
1198
        | '\u0466'..'\u0466'
 
1199
        | '\u0468'..'\u0468'
 
1200
        | '\u046a'..'\u046a'
 
1201
        | '\u046c'..'\u046c'
 
1202
        | '\u046e'..'\u046e'
 
1203
        | '\u0470'..'\u0470'
 
1204
        | '\u0472'..'\u0472'
 
1205
        | '\u0474'..'\u0474'
 
1206
        | '\u0476'..'\u0476'
 
1207
        | '\u0478'..'\u0478'
 
1208
        | '\u047a'..'\u047a'
 
1209
        | '\u047c'..'\u047c'
 
1210
        | '\u047e'..'\u047e'
 
1211
        | '\u0480'..'\u0480'
 
1212
        | '\u048a'..'\u048a'
 
1213
        | '\u048c'..'\u048c'
 
1214
        | '\u048e'..'\u048e'
 
1215
        | '\u0490'..'\u0490'
 
1216
        | '\u0492'..'\u0492'
 
1217
        | '\u0494'..'\u0494'
 
1218
        | '\u0496'..'\u0496'
 
1219
        | '\u0498'..'\u0498'
 
1220
        | '\u049a'..'\u049a'
 
1221
        | '\u049c'..'\u049c'
 
1222
        | '\u049e'..'\u049e'
 
1223
        | '\u04a0'..'\u04a0'
 
1224
        | '\u04a2'..'\u04a2'
 
1225
        | '\u04a4'..'\u04a4'
 
1226
        | '\u04a6'..'\u04a6'
 
1227
        | '\u04a8'..'\u04a8'
 
1228
        | '\u04aa'..'\u04aa'
 
1229
        | '\u04ac'..'\u04ac'
 
1230
        | '\u04ae'..'\u04ae'
 
1231
        | '\u04b0'..'\u04b0'
 
1232
        | '\u04b2'..'\u04b2'
 
1233
        | '\u04b4'..'\u04b4'
 
1234
        | '\u04b6'..'\u04b6'
 
1235
        | '\u04b8'..'\u04b8'
 
1236
        | '\u04ba'..'\u04ba'
 
1237
        | '\u04bc'..'\u04bc'
 
1238
        | '\u04be'..'\u04be'
 
1239
        | '\u04c0'..'\u04c1'
 
1240
        | '\u04c3'..'\u04c3'
 
1241
        | '\u04c5'..'\u04c5'
 
1242
        | '\u04c7'..'\u04c7'
 
1243
        | '\u04c9'..'\u04c9'
 
1244
        | '\u04cb'..'\u04cb'
 
1245
        | '\u04cd'..'\u04cd'
 
1246
        | '\u04d0'..'\u04d0'
 
1247
        | '\u04d2'..'\u04d2'
 
1248
        | '\u04d4'..'\u04d4'
 
1249
        | '\u04d6'..'\u04d6'
 
1250
        | '\u04d8'..'\u04d8'
 
1251
        | '\u04da'..'\u04da'
 
1252
        | '\u04dc'..'\u04dc'
 
1253
        | '\u04de'..'\u04de'
 
1254
        | '\u04e0'..'\u04e0'
 
1255
        | '\u04e2'..'\u04e2'
 
1256
        | '\u04e4'..'\u04e4'
 
1257
        | '\u04e6'..'\u04e6'
 
1258
        | '\u04e8'..'\u04e8'
 
1259
        | '\u04ea'..'\u04ea'
 
1260
        | '\u04ec'..'\u04ec'
 
1261
        | '\u04ee'..'\u04ee'
 
1262
        | '\u04f0'..'\u04f0'
 
1263
        | '\u04f2'..'\u04f2'
 
1264
        | '\u04f4'..'\u04f4'
 
1265
        | '\u04f8'..'\u04f8'
 
1266
        | '\u0500'..'\u0500'
 
1267
        | '\u0502'..'\u0502'
 
1268
        | '\u0504'..'\u0504'
 
1269
        | '\u0506'..'\u0506'
 
1270
        | '\u0508'..'\u0508'
 
1271
        | '\u050a'..'\u050a'
 
1272
        | '\u050c'..'\u050c'
 
1273
        | '\u050e'..'\u050e'
 
1274
        | '\u0531'..'\u0556'
 
1275
        | '\u10a0'..'\u10c5'
 
1276
        | '\u1e00'..'\u1e00'
 
1277
        | '\u1e02'..'\u1e02'
 
1278
        | '\u1e04'..'\u1e04'
 
1279
        | '\u1e06'..'\u1e06'
 
1280
        | '\u1e08'..'\u1e08'
 
1281
        | '\u1e0a'..'\u1e0a'
 
1282
        | '\u1e0c'..'\u1e0c'
 
1283
        | '\u1e0e'..'\u1e0e'
 
1284
        | '\u1e10'..'\u1e10'
 
1285
        | '\u1e12'..'\u1e12'
 
1286
        | '\u1e14'..'\u1e14'
 
1287
        | '\u1e16'..'\u1e16'
 
1288
        | '\u1e18'..'\u1e18'
 
1289
        | '\u1e1a'..'\u1e1a'
 
1290
        | '\u1e1c'..'\u1e1c'
 
1291
        | '\u1e1e'..'\u1e1e'
 
1292
        | '\u1e20'..'\u1e20'
 
1293
        | '\u1e22'..'\u1e22'
 
1294
        | '\u1e24'..'\u1e24'
 
1295
        | '\u1e26'..'\u1e26'
 
1296
        | '\u1e28'..'\u1e28'
 
1297
        | '\u1e2a'..'\u1e2a'
 
1298
        | '\u1e2c'..'\u1e2c'
 
1299
        | '\u1e2e'..'\u1e2e'
 
1300
        | '\u1e30'..'\u1e30'
 
1301
        | '\u1e32'..'\u1e32'
 
1302
        | '\u1e34'..'\u1e34'
 
1303
        | '\u1e36'..'\u1e36'
 
1304
        | '\u1e38'..'\u1e38'
 
1305
        | '\u1e3a'..'\u1e3a'
 
1306
        | '\u1e3c'..'\u1e3c'
 
1307
        | '\u1e3e'..'\u1e3e'
 
1308
        | '\u1e40'..'\u1e40'
 
1309
        | '\u1e42'..'\u1e42'
 
1310
        | '\u1e44'..'\u1e44'
 
1311
        | '\u1e46'..'\u1e46'
 
1312
        | '\u1e48'..'\u1e48'
 
1313
        | '\u1e4a'..'\u1e4a'
 
1314
        | '\u1e4c'..'\u1e4c'
 
1315
        | '\u1e4e'..'\u1e4e'
 
1316
        | '\u1e50'..'\u1e50'
 
1317
        | '\u1e52'..'\u1e52'
 
1318
        | '\u1e54'..'\u1e54'
 
1319
        | '\u1e56'..'\u1e56'
 
1320
        | '\u1e58'..'\u1e58'
 
1321
        | '\u1e5a'..'\u1e5a'
 
1322
        | '\u1e5c'..'\u1e5c'
 
1323
        | '\u1e5e'..'\u1e5e'
 
1324
        | '\u1e60'..'\u1e60'
 
1325
        | '\u1e62'..'\u1e62'
 
1326
        | '\u1e64'..'\u1e64'
 
1327
        | '\u1e66'..'\u1e66'
 
1328
        | '\u1e68'..'\u1e68'
 
1329
        | '\u1e6a'..'\u1e6a'
 
1330
        | '\u1e6c'..'\u1e6c'
 
1331
        | '\u1e6e'..'\u1e6e'
 
1332
        | '\u1e70'..'\u1e70'
 
1333
        | '\u1e72'..'\u1e72'
 
1334
        | '\u1e74'..'\u1e74'
 
1335
        | '\u1e76'..'\u1e76'
 
1336
        | '\u1e78'..'\u1e78'
 
1337
        | '\u1e7a'..'\u1e7a'
 
1338
        | '\u1e7c'..'\u1e7c'
 
1339
        | '\u1e7e'..'\u1e7e'
 
1340
        | '\u1e80'..'\u1e80'
 
1341
        | '\u1e82'..'\u1e82'
 
1342
        | '\u1e84'..'\u1e84'
 
1343
        | '\u1e86'..'\u1e86'
 
1344
        | '\u1e88'..'\u1e88'
 
1345
        | '\u1e8a'..'\u1e8a'
 
1346
        | '\u1e8c'..'\u1e8c'
 
1347
        | '\u1e8e'..'\u1e8e'
 
1348
        | '\u1e90'..'\u1e90'
 
1349
        | '\u1e92'..'\u1e92'
 
1350
        | '\u1e94'..'\u1e94'
 
1351
        | '\u1ea0'..'\u1ea0'
 
1352
        | '\u1ea2'..'\u1ea2'
 
1353
        | '\u1ea4'..'\u1ea4'
 
1354
        | '\u1ea6'..'\u1ea6'
 
1355
        | '\u1ea8'..'\u1ea8'
 
1356
        | '\u1eaa'..'\u1eaa'
 
1357
        | '\u1eac'..'\u1eac'
 
1358
        | '\u1eae'..'\u1eae'
 
1359
        | '\u1eb0'..'\u1eb0'
 
1360
        | '\u1eb2'..'\u1eb2'
 
1361
        | '\u1eb4'..'\u1eb4'
 
1362
        | '\u1eb6'..'\u1eb6'
 
1363
        | '\u1eb8'..'\u1eb8'
 
1364
        | '\u1eba'..'\u1eba'
 
1365
        | '\u1ebc'..'\u1ebc'
 
1366
        | '\u1ebe'..'\u1ebe'
 
1367
        | '\u1ec0'..'\u1ec0'
 
1368
        | '\u1ec2'..'\u1ec2'
 
1369
        | '\u1ec4'..'\u1ec4'
 
1370
        | '\u1ec6'..'\u1ec6'
 
1371
        | '\u1ec8'..'\u1ec8'
 
1372
        | '\u1eca'..'\u1eca'
 
1373
        | '\u1ecc'..'\u1ecc'
 
1374
        | '\u1ece'..'\u1ece'
 
1375
        | '\u1ed0'..'\u1ed0'
 
1376
        | '\u1ed2'..'\u1ed2'
 
1377
        | '\u1ed4'..'\u1ed4'
 
1378
        | '\u1ed6'..'\u1ed6'
 
1379
        | '\u1ed8'..'\u1ed8'
 
1380
        | '\u1eda'..'\u1eda'
 
1381
        | '\u1edc'..'\u1edc'
 
1382
        | '\u1ede'..'\u1ede'
 
1383
        | '\u1ee0'..'\u1ee0'
 
1384
        | '\u1ee2'..'\u1ee2'
 
1385
        | '\u1ee4'..'\u1ee4'
 
1386
        | '\u1ee6'..'\u1ee6'
 
1387
        | '\u1ee8'..'\u1ee8'
 
1388
        | '\u1eea'..'\u1eea'
 
1389
        | '\u1eec'..'\u1eec'
 
1390
        | '\u1eee'..'\u1eee'
 
1391
        | '\u1ef0'..'\u1ef0'
 
1392
        | '\u1ef2'..'\u1ef2'
 
1393
        | '\u1ef4'..'\u1ef4'
 
1394
        | '\u1ef6'..'\u1ef6'
 
1395
        | '\u1ef8'..'\u1ef8'
 
1396
        | '\u1f08'..'\u1f0f'
 
1397
        | '\u1f18'..'\u1f1d'
 
1398
        | '\u1f28'..'\u1f2f'
 
1399
        | '\u1f38'..'\u1f3f'
 
1400
        | '\u1f48'..'\u1f4d'
 
1401
        | '\u1f59'..'\u1f59'
 
1402
        | '\u1f5b'..'\u1f5b'
 
1403
        | '\u1f5d'..'\u1f5d'
 
1404
        | '\u1f5f'..'\u1f5f'
 
1405
        | '\u1f68'..'\u1f6f'
 
1406
        | '\u1fb8'..'\u1fbb'
 
1407
        | '\u1fc8'..'\u1fcb'
 
1408
        | '\u1fd8'..'\u1fdb'
 
1409
        | '\u1fe8'..'\u1fec'
 
1410
        | '\u1ff8'..'\u1ffb'
 
1411
        | '\u2102'..'\u2102'
 
1412
        | '\u2107'..'\u2107'
 
1413
        | '\u210b'..'\u210d'
 
1414
        | '\u2110'..'\u2112'
 
1415
        | '\u2115'..'\u2115'
 
1416
        | '\u2119'..'\u211d'
 
1417
        | '\u2124'..'\u2124'
 
1418
        | '\u2126'..'\u2126'
 
1419
        | '\u2128'..'\u2128'
 
1420
        | '\u212a'..'\u212d'
 
1421
        | '\u2130'..'\u2131'
 
1422
        | '\u2133'..'\u2133'
 
1423
        | '\u213e'..'\u213f'
 
1424
        | '\u2145'..'\u2145'
 
1425
        | '\uff21'..'\uff3a'
 
1426
        ;
 
1427
fragment UnicodeCatLl
 
1428
        : '\u0061'..'\u007a'
 
1429
        | '\u00aa'..'\u00aa'
 
1430
        | '\u00b5'..'\u00b5'
 
1431
        | '\u00ba'..'\u00ba'
 
1432
        | '\u00df'..'\u00f6'
 
1433
        | '\u00f8'..'\u00ff'
 
1434
        | '\u0101'..'\u0101'
 
1435
        | '\u0103'..'\u0103'
 
1436
        | '\u0105'..'\u0105'
 
1437
        | '\u0107'..'\u0107'
 
1438
        | '\u0109'..'\u0109'
 
1439
        | '\u010b'..'\u010b'
 
1440
        | '\u010d'..'\u010d'
 
1441
        | '\u010f'..'\u010f'
 
1442
        | '\u0111'..'\u0111'
 
1443
        | '\u0113'..'\u0113'
 
1444
        | '\u0115'..'\u0115'
 
1445
        | '\u0117'..'\u0117'
 
1446
        | '\u0119'..'\u0119'
 
1447
        | '\u011b'..'\u011b'
 
1448
        | '\u011d'..'\u011d'
 
1449
        | '\u011f'..'\u011f'
 
1450
        | '\u0121'..'\u0121'
 
1451
        | '\u0123'..'\u0123'
 
1452
        | '\u0125'..'\u0125'
 
1453
        | '\u0127'..'\u0127'
 
1454
        | '\u0129'..'\u0129'
 
1455
        | '\u012b'..'\u012b'
 
1456
        | '\u012d'..'\u012d'
 
1457
        | '\u012f'..'\u012f'
 
1458
        | '\u0131'..'\u0131'
 
1459
        | '\u0133'..'\u0133'
 
1460
        | '\u0135'..'\u0135'
 
1461
        | '\u0137'..'\u0138'
 
1462
        | '\u013a'..'\u013a'
 
1463
        | '\u013c'..'\u013c'
 
1464
        | '\u013e'..'\u013e'
 
1465
        | '\u0140'..'\u0140'
 
1466
        | '\u0142'..'\u0142'
 
1467
        | '\u0144'..'\u0144'
 
1468
        | '\u0146'..'\u0146'
 
1469
        | '\u0148'..'\u0149'
 
1470
        | '\u014b'..'\u014b'
 
1471
        | '\u014d'..'\u014d'
 
1472
        | '\u014f'..'\u014f'
 
1473
        | '\u0151'..'\u0151'
 
1474
        | '\u0153'..'\u0153'
 
1475
        | '\u0155'..'\u0155'
 
1476
        | '\u0157'..'\u0157'
 
1477
        | '\u0159'..'\u0159'
 
1478
        | '\u015b'..'\u015b'
 
1479
        | '\u015d'..'\u015d'
 
1480
        | '\u015f'..'\u015f'
 
1481
        | '\u0161'..'\u0161'
 
1482
        | '\u0163'..'\u0163'
 
1483
        | '\u0165'..'\u0165'
 
1484
        | '\u0167'..'\u0167'
 
1485
        | '\u0169'..'\u0169'
 
1486
        | '\u016b'..'\u016b'
 
1487
        | '\u016d'..'\u016d'
 
1488
        | '\u016f'..'\u016f'
 
1489
        | '\u0171'..'\u0171'
 
1490
        | '\u0173'..'\u0173'
 
1491
        | '\u0175'..'\u0175'
 
1492
        | '\u0177'..'\u0177'
 
1493
        | '\u017a'..'\u017a'
 
1494
        | '\u017c'..'\u017c'
 
1495
        | '\u017e'..'\u0180'
 
1496
        | '\u0183'..'\u0183'
 
1497
        | '\u0185'..'\u0185'
 
1498
        | '\u0188'..'\u0188'
 
1499
        | '\u018c'..'\u018d'
 
1500
        | '\u0192'..'\u0192'
 
1501
        | '\u0195'..'\u0195'
 
1502
        | '\u0199'..'\u019b'
 
1503
        | '\u019e'..'\u019e'
 
1504
        | '\u01a1'..'\u01a1'
 
1505
        | '\u01a3'..'\u01a3'
 
1506
        | '\u01a5'..'\u01a5'
 
1507
        | '\u01a8'..'\u01a8'
 
1508
        | '\u01aa'..'\u01ab'
 
1509
        | '\u01ad'..'\u01ad'
 
1510
        | '\u01b0'..'\u01b0'
 
1511
        | '\u01b4'..'\u01b4'
 
1512
        | '\u01b6'..'\u01b6'
 
1513
        | '\u01b9'..'\u01ba'
 
1514
        | '\u01bd'..'\u01bf'
 
1515
        | '\u01c6'..'\u01c6'
 
1516
        | '\u01c9'..'\u01c9'
 
1517
        | '\u01cc'..'\u01cc'
 
1518
        | '\u01ce'..'\u01ce'
 
1519
        | '\u01d0'..'\u01d0'
 
1520
        | '\u01d2'..'\u01d2'
 
1521
        | '\u01d4'..'\u01d4'
 
1522
        | '\u01d6'..'\u01d6'
 
1523
        | '\u01d8'..'\u01d8'
 
1524
        | '\u01da'..'\u01da'
 
1525
        | '\u01dc'..'\u01dd'
 
1526
        | '\u01df'..'\u01df'
 
1527
        | '\u01e1'..'\u01e1'
 
1528
        | '\u01e3'..'\u01e3'
 
1529
        | '\u01e5'..'\u01e5'
 
1530
        | '\u01e7'..'\u01e7'
 
1531
        | '\u01e9'..'\u01e9'
 
1532
        | '\u01eb'..'\u01eb'
 
1533
        | '\u01ed'..'\u01ed'
 
1534
        | '\u01ef'..'\u01f0'
 
1535
        | '\u01f3'..'\u01f3'
 
1536
        | '\u01f5'..'\u01f5'
 
1537
        | '\u01f9'..'\u01f9'
 
1538
        | '\u01fb'..'\u01fb'
 
1539
        | '\u01fd'..'\u01fd'
 
1540
        | '\u01ff'..'\u01ff'
 
1541
        | '\u0201'..'\u0201'
 
1542
        | '\u0203'..'\u0203'
 
1543
        | '\u0205'..'\u0205'
 
1544
        | '\u0207'..'\u0207'
 
1545
        | '\u0209'..'\u0209'
 
1546
        | '\u020b'..'\u020b'
 
1547
        | '\u020d'..'\u020d'
 
1548
        | '\u020f'..'\u020f'
 
1549
        | '\u0211'..'\u0211'
 
1550
        | '\u0213'..'\u0213'
 
1551
        | '\u0215'..'\u0215'
 
1552
        | '\u0217'..'\u0217'
 
1553
        | '\u0219'..'\u0219'
 
1554
        | '\u021b'..'\u021b'
 
1555
        | '\u021d'..'\u021d'
 
1556
        | '\u021f'..'\u021f'
 
1557
        | '\u0221'..'\u0221'
 
1558
        | '\u0223'..'\u0223'
 
1559
        | '\u0225'..'\u0225'
 
1560
        | '\u0227'..'\u0227'
 
1561
        | '\u0229'..'\u0229'
 
1562
        | '\u022b'..'\u022b'
 
1563
        | '\u022d'..'\u022d'
 
1564
        | '\u022f'..'\u022f'
 
1565
        | '\u0231'..'\u0231'
 
1566
        | '\u0233'..'\u0236'
 
1567
        | '\u0250'..'\u02af'
 
1568
        | '\u0390'..'\u0390'
 
1569
        | '\u03ac'..'\u03ce'
 
1570
        | '\u03d0'..'\u03d1'
 
1571
        | '\u03d5'..'\u03d7'
 
1572
        | '\u03d9'..'\u03d9'
 
1573
        | '\u03db'..'\u03db'
 
1574
        | '\u03dd'..'\u03dd'
 
1575
        | '\u03df'..'\u03df'
 
1576
        | '\u03e1'..'\u03e1'
 
1577
        | '\u03e3'..'\u03e3'
 
1578
        | '\u03e5'..'\u03e5'
 
1579
        | '\u03e7'..'\u03e7'
 
1580
        | '\u03e9'..'\u03e9'
 
1581
        | '\u03eb'..'\u03eb'
 
1582
        | '\u03ed'..'\u03ed'
 
1583
        | '\u03ef'..'\u03f3'
 
1584
        | '\u03f5'..'\u03f5'
 
1585
        | '\u03f8'..'\u03f8'
 
1586
        | '\u03fb'..'\u03fb'
 
1587
        | '\u0430'..'\u045f'
 
1588
        | '\u0461'..'\u0461'
 
1589
        | '\u0463'..'\u0463'
 
1590
        | '\u0465'..'\u0465'
 
1591
        | '\u0467'..'\u0467'
 
1592
        | '\u0469'..'\u0469'
 
1593
        | '\u046b'..'\u046b'
 
1594
        | '\u046d'..'\u046d'
 
1595
        | '\u046f'..'\u046f'
 
1596
        | '\u0471'..'\u0471'
 
1597
        | '\u0473'..'\u0473'
 
1598
        | '\u0475'..'\u0475'
 
1599
        | '\u0477'..'\u0477'
 
1600
        | '\u0479'..'\u0479'
 
1601
        | '\u047b'..'\u047b'
 
1602
        | '\u047d'..'\u047d'
 
1603
        | '\u047f'..'\u047f'
 
1604
        | '\u0481'..'\u0481'
 
1605
        | '\u048b'..'\u048b'
 
1606
        | '\u048d'..'\u048d'
 
1607
        | '\u048f'..'\u048f'
 
1608
        | '\u0491'..'\u0491'
 
1609
        | '\u0493'..'\u0493'
 
1610
        | '\u0495'..'\u0495'
 
1611
        | '\u0497'..'\u0497'
 
1612
        | '\u0499'..'\u0499'
 
1613
        | '\u049b'..'\u049b'
 
1614
        | '\u049d'..'\u049d'
 
1615
        | '\u049f'..'\u049f'
 
1616
        | '\u04a1'..'\u04a1'
 
1617
        | '\u04a3'..'\u04a3'
 
1618
        | '\u04a5'..'\u04a5'
 
1619
        | '\u04a7'..'\u04a7'
 
1620
        | '\u04a9'..'\u04a9'
 
1621
        | '\u04ab'..'\u04ab'
 
1622
        | '\u04ad'..'\u04ad'
 
1623
        | '\u04af'..'\u04af'
 
1624
        | '\u04b1'..'\u04b1'
 
1625
        | '\u04b3'..'\u04b3'
 
1626
        | '\u04b5'..'\u04b5'
 
1627
        | '\u04b7'..'\u04b7'
 
1628
        | '\u04b9'..'\u04b9'
 
1629
        | '\u04bb'..'\u04bb'
 
1630
        | '\u04bd'..'\u04bd'
 
1631
        | '\u04bf'..'\u04bf'
 
1632
        | '\u04c2'..'\u04c2'
 
1633
        | '\u04c4'..'\u04c4'
 
1634
        | '\u04c6'..'\u04c6'
 
1635
        | '\u04c8'..'\u04c8'
 
1636
        | '\u04ca'..'\u04ca'
 
1637
        | '\u04cc'..'\u04cc'
 
1638
        | '\u04ce'..'\u04ce'
 
1639
        | '\u04d1'..'\u04d1'
 
1640
        | '\u04d3'..'\u04d3'
 
1641
        | '\u04d5'..'\u04d5'
 
1642
        | '\u04d7'..'\u04d7'
 
1643
        | '\u04d9'..'\u04d9'
 
1644
        | '\u04db'..'\u04db'
 
1645
        | '\u04dd'..'\u04dd'
 
1646
        | '\u04df'..'\u04df'
 
1647
        | '\u04e1'..'\u04e1'
 
1648
        | '\u04e3'..'\u04e3'
 
1649
        | '\u04e5'..'\u04e5'
 
1650
        | '\u04e7'..'\u04e7'
 
1651
        | '\u04e9'..'\u04e9'
 
1652
        | '\u04eb'..'\u04eb'
 
1653
        | '\u04ed'..'\u04ed'
 
1654
        | '\u04ef'..'\u04ef'
 
1655
        | '\u04f1'..'\u04f1'
 
1656
        | '\u04f3'..'\u04f3'
 
1657
        | '\u04f5'..'\u04f5'
 
1658
        | '\u04f9'..'\u04f9'
 
1659
        | '\u0501'..'\u0501'
 
1660
        | '\u0503'..'\u0503'
 
1661
        | '\u0505'..'\u0505'
 
1662
        | '\u0507'..'\u0507'
 
1663
        | '\u0509'..'\u0509'
 
1664
        | '\u050b'..'\u050b'
 
1665
        | '\u050d'..'\u050d'
 
1666
        | '\u050f'..'\u050f'
 
1667
        | '\u0561'..'\u0587'
 
1668
        | '\u1d00'..'\u1d2b'
 
1669
        | '\u1d62'..'\u1d6b'
 
1670
        | '\u1e01'..'\u1e01'
 
1671
        | '\u1e03'..'\u1e03'
 
1672
        | '\u1e05'..'\u1e05'
 
1673
        | '\u1e07'..'\u1e07'
 
1674
        | '\u1e09'..'\u1e09'
 
1675
        | '\u1e0b'..'\u1e0b'
 
1676
        | '\u1e0d'..'\u1e0d'
 
1677
        | '\u1e0f'..'\u1e0f'
 
1678
        | '\u1e11'..'\u1e11'
 
1679
        | '\u1e13'..'\u1e13'
 
1680
        | '\u1e15'..'\u1e15'
 
1681
        | '\u1e17'..'\u1e17'
 
1682
        | '\u1e19'..'\u1e19'
 
1683
        | '\u1e1b'..'\u1e1b'
 
1684
        | '\u1e1d'..'\u1e1d'
 
1685
        | '\u1e1f'..'\u1e1f'
 
1686
        | '\u1e21'..'\u1e21'
 
1687
        | '\u1e23'..'\u1e23'
 
1688
        | '\u1e25'..'\u1e25'
 
1689
        | '\u1e27'..'\u1e27'
 
1690
        | '\u1e29'..'\u1e29'
 
1691
        | '\u1e2b'..'\u1e2b'
 
1692
        | '\u1e2d'..'\u1e2d'
 
1693
        | '\u1e2f'..'\u1e2f'
 
1694
        | '\u1e31'..'\u1e31'
 
1695
        | '\u1e33'..'\u1e33'
 
1696
        | '\u1e35'..'\u1e35'
 
1697
        | '\u1e37'..'\u1e37'
 
1698
        | '\u1e39'..'\u1e39'
 
1699
        | '\u1e3b'..'\u1e3b'
 
1700
        | '\u1e3d'..'\u1e3d'
 
1701
        | '\u1e3f'..'\u1e3f'
 
1702
        | '\u1e41'..'\u1e41'
 
1703
        | '\u1e43'..'\u1e43'
 
1704
        | '\u1e45'..'\u1e45'
 
1705
        | '\u1e47'..'\u1e47'
 
1706
        | '\u1e49'..'\u1e49'
 
1707
        | '\u1e4b'..'\u1e4b'
 
1708
        | '\u1e4d'..'\u1e4d'
 
1709
        | '\u1e4f'..'\u1e4f'
 
1710
        | '\u1e51'..'\u1e51'
 
1711
        | '\u1e53'..'\u1e53'
 
1712
        | '\u1e55'..'\u1e55'
 
1713
        | '\u1e57'..'\u1e57'
 
1714
        | '\u1e59'..'\u1e59'
 
1715
        | '\u1e5b'..'\u1e5b'
 
1716
        | '\u1e5d'..'\u1e5d'
 
1717
        | '\u1e5f'..'\u1e5f'
 
1718
        | '\u1e61'..'\u1e61'
 
1719
        | '\u1e63'..'\u1e63'
 
1720
        | '\u1e65'..'\u1e65'
 
1721
        | '\u1e67'..'\u1e67'
 
1722
        | '\u1e69'..'\u1e69'
 
1723
        | '\u1e6b'..'\u1e6b'
 
1724
        | '\u1e6d'..'\u1e6d'
 
1725
        | '\u1e6f'..'\u1e6f'
 
1726
        | '\u1e71'..'\u1e71'
 
1727
        | '\u1e73'..'\u1e73'
 
1728
        | '\u1e75'..'\u1e75'
 
1729
        | '\u1e77'..'\u1e77'
 
1730
        | '\u1e79'..'\u1e79'
 
1731
        | '\u1e7b'..'\u1e7b'
 
1732
        | '\u1e7d'..'\u1e7d'
 
1733
        | '\u1e7f'..'\u1e7f'
 
1734
        | '\u1e81'..'\u1e81'
 
1735
        | '\u1e83'..'\u1e83'
 
1736
        | '\u1e85'..'\u1e85'
 
1737
        | '\u1e87'..'\u1e87'
 
1738
        | '\u1e89'..'\u1e89'
 
1739
        | '\u1e8b'..'\u1e8b'
 
1740
        | '\u1e8d'..'\u1e8d'
 
1741
        | '\u1e8f'..'\u1e8f'
 
1742
        | '\u1e91'..'\u1e91'
 
1743
        | '\u1e93'..'\u1e93'
 
1744
        | '\u1e95'..'\u1e9b'
 
1745
        | '\u1ea1'..'\u1ea1'
 
1746
        | '\u1ea3'..'\u1ea3'
 
1747
        | '\u1ea5'..'\u1ea5'
 
1748
        | '\u1ea7'..'\u1ea7'
 
1749
        | '\u1ea9'..'\u1ea9'
 
1750
        | '\u1eab'..'\u1eab'
 
1751
        | '\u1ead'..'\u1ead'
 
1752
        | '\u1eaf'..'\u1eaf'
 
1753
        | '\u1eb1'..'\u1eb1'
 
1754
        | '\u1eb3'..'\u1eb3'
 
1755
        | '\u1eb5'..'\u1eb5'
 
1756
        | '\u1eb7'..'\u1eb7'
 
1757
        | '\u1eb9'..'\u1eb9'
 
1758
        | '\u1ebb'..'\u1ebb'
 
1759
        | '\u1ebd'..'\u1ebd'
 
1760
        | '\u1ebf'..'\u1ebf'
 
1761
        | '\u1ec1'..'\u1ec1'
 
1762
        | '\u1ec3'..'\u1ec3'
 
1763
        | '\u1ec5'..'\u1ec5'
 
1764
        | '\u1ec7'..'\u1ec7'
 
1765
        | '\u1ec9'..'\u1ec9'
 
1766
        | '\u1ecb'..'\u1ecb'
 
1767
        | '\u1ecd'..'\u1ecd'
 
1768
        | '\u1ecf'..'\u1ecf'
 
1769
        | '\u1ed1'..'\u1ed1'
 
1770
        | '\u1ed3'..'\u1ed3'
 
1771
        | '\u1ed5'..'\u1ed5'
 
1772
        | '\u1ed7'..'\u1ed7'
 
1773
        | '\u1ed9'..'\u1ed9'
 
1774
        | '\u1edb'..'\u1edb'
 
1775
        | '\u1edd'..'\u1edd'
 
1776
        | '\u1edf'..'\u1edf'
 
1777
        | '\u1ee1'..'\u1ee1'
 
1778
        | '\u1ee3'..'\u1ee3'
 
1779
        | '\u1ee5'..'\u1ee5'
 
1780
        | '\u1ee7'..'\u1ee7'
 
1781
        | '\u1ee9'..'\u1ee9'
 
1782
        | '\u1eeb'..'\u1eeb'
 
1783
        | '\u1eed'..'\u1eed'
 
1784
        | '\u1eef'..'\u1eef'
 
1785
        | '\u1ef1'..'\u1ef1'
 
1786
        | '\u1ef3'..'\u1ef3'
 
1787
        | '\u1ef5'..'\u1ef5'
 
1788
        | '\u1ef7'..'\u1ef7'
 
1789
        | '\u1ef9'..'\u1ef9'
 
1790
        | '\u1f00'..'\u1f07'
 
1791
        | '\u1f10'..'\u1f15'
 
1792
        | '\u1f20'..'\u1f27'
 
1793
        | '\u1f30'..'\u1f37'
 
1794
        | '\u1f40'..'\u1f45'
 
1795
        | '\u1f50'..'\u1f57'
 
1796
        | '\u1f60'..'\u1f67'
 
1797
        | '\u1f70'..'\u1f7d'
 
1798
        | '\u1f80'..'\u1f87'
 
1799
        | '\u1f90'..'\u1f97'
 
1800
        | '\u1fa0'..'\u1fa7'
 
1801
        | '\u1fb0'..'\u1fb4'
 
1802
        | '\u1fb6'..'\u1fb7'
 
1803
        | '\u1fbe'..'\u1fbe'
 
1804
        | '\u1fc2'..'\u1fc4'
 
1805
        | '\u1fc6'..'\u1fc7'
 
1806
        | '\u1fd0'..'\u1fd3'
 
1807
        | '\u1fd6'..'\u1fd7'
 
1808
        | '\u1fe0'..'\u1fe7'
 
1809
        | '\u1ff2'..'\u1ff4'
 
1810
        | '\u1ff6'..'\u1ff7'
 
1811
        | '\u2071'..'\u2071'
 
1812
        | '\u207f'..'\u207f'
 
1813
        | '\u210a'..'\u210a'
 
1814
        | '\u210e'..'\u210f'
 
1815
        | '\u2113'..'\u2113'
 
1816
        | '\u212f'..'\u212f'
 
1817
        | '\u2134'..'\u2134'
 
1818
        | '\u2139'..'\u2139'
 
1819
        | '\u213d'..'\u213d'
 
1820
        | '\u2146'..'\u2149'
 
1821
        | '\ufb00'..'\ufb06'
 
1822
        | '\ufb13'..'\ufb17'
 
1823
        | '\uff41'..'\uff5a'
 
1824
        ;
 
1825
fragment UnicodeCatLoLtNl
 
1826
        : '\u01bb'..'\u01bb'
 
1827
        | '\u01c0'..'\u01c3'
 
1828
        | '\u01c5'..'\u01c5'
 
1829
        | '\u01c8'..'\u01c8'
 
1830
        | '\u01cb'..'\u01cb'
 
1831
        | '\u01f2'..'\u01f2'
 
1832
        | '\u05d0'..'\u05ea'
 
1833
        | '\u05f0'..'\u05f2'
 
1834
        | '\u0621'..'\u063a'
 
1835
        | '\u0641'..'\u064a'
 
1836
        | '\u066e'..'\u066f'
 
1837
        | '\u0671'..'\u06d3'
 
1838
        | '\u06d5'..'\u06d5'
 
1839
        | '\u06ee'..'\u06ef'
 
1840
        | '\u06fa'..'\u06fc'
 
1841
        | '\u06ff'..'\u06ff'
 
1842
        | '\u0710'..'\u0710'
 
1843
        | '\u0712'..'\u072f'
 
1844
        | '\u074d'..'\u074f'
 
1845
        | '\u0780'..'\u07a5'
 
1846
        | '\u07b1'..'\u07b1'
 
1847
        | '\u0904'..'\u0939'
 
1848
        | '\u093d'..'\u093d'
 
1849
        | '\u0950'..'\u0950'
 
1850
        | '\u0958'..'\u0961'
 
1851
        | '\u0985'..'\u098c'
 
1852
        | '\u098f'..'\u0990'
 
1853
        | '\u0993'..'\u09a8'
 
1854
        | '\u09aa'..'\u09b0'
 
1855
        | '\u09b2'..'\u09b2'
 
1856
        | '\u09b6'..'\u09b9'
 
1857
        | '\u09bd'..'\u09bd'
 
1858
        | '\u09dc'..'\u09dd'
 
1859
        | '\u09df'..'\u09e1'
 
1860
        | '\u09f0'..'\u09f1'
 
1861
        | '\u0a05'..'\u0a0a'
 
1862
        | '\u0a0f'..'\u0a10'
 
1863
        | '\u0a13'..'\u0a28'
 
1864
        | '\u0a2a'..'\u0a30'
 
1865
        | '\u0a32'..'\u0a33'
 
1866
        | '\u0a35'..'\u0a36'
 
1867
        | '\u0a38'..'\u0a39'
 
1868
        | '\u0a59'..'\u0a5c'
 
1869
        | '\u0a5e'..'\u0a5e'
 
1870
        | '\u0a72'..'\u0a74'
 
1871
        | '\u0a85'..'\u0a8d'
 
1872
        | '\u0a8f'..'\u0a91'
 
1873
        | '\u0a93'..'\u0aa8'
 
1874
        | '\u0aaa'..'\u0ab0'
 
1875
        | '\u0ab2'..'\u0ab3'
 
1876
        | '\u0ab5'..'\u0ab9'
 
1877
        | '\u0abd'..'\u0abd'
 
1878
        | '\u0ad0'..'\u0ad0'
 
1879
        | '\u0ae0'..'\u0ae1'
 
1880
        | '\u0b05'..'\u0b0c'
 
1881
        | '\u0b0f'..'\u0b10'
 
1882
        | '\u0b13'..'\u0b28'
 
1883
        | '\u0b2a'..'\u0b30'
 
1884
        | '\u0b32'..'\u0b33'
 
1885
        | '\u0b35'..'\u0b39'
 
1886
        | '\u0b3d'..'\u0b3d'
 
1887
        | '\u0b5c'..'\u0b5d'
 
1888
        | '\u0b5f'..'\u0b61'
 
1889
        | '\u0b71'..'\u0b71'
 
1890
        | '\u0b83'..'\u0b83'
 
1891
        | '\u0b85'..'\u0b8a'
 
1892
        | '\u0b8e'..'\u0b90'
 
1893
        | '\u0b92'..'\u0b95'
 
1894
        | '\u0b99'..'\u0b9a'
 
1895
        | '\u0b9c'..'\u0b9c'
 
1896
        | '\u0b9e'..'\u0b9f'
 
1897
        | '\u0ba3'..'\u0ba4'
 
1898
        | '\u0ba8'..'\u0baa'
 
1899
        | '\u0bae'..'\u0bb5'
 
1900
        | '\u0bb7'..'\u0bb9'
 
1901
        | '\u0c05'..'\u0c0c'
 
1902
        | '\u0c0e'..'\u0c10'
 
1903
        | '\u0c12'..'\u0c28'
 
1904
        | '\u0c2a'..'\u0c33'
 
1905
        | '\u0c35'..'\u0c39'
 
1906
        | '\u0c60'..'\u0c61'
 
1907
        | '\u0c85'..'\u0c8c'
 
1908
        | '\u0c8e'..'\u0c90'
 
1909
        | '\u0c92'..'\u0ca8'
 
1910
        | '\u0caa'..'\u0cb3'
 
1911
        | '\u0cb5'..'\u0cb9'
 
1912
        | '\u0cbd'..'\u0cbd'
 
1913
        | '\u0cde'..'\u0cde'
 
1914
        | '\u0ce0'..'\u0ce1'
 
1915
        | '\u0d05'..'\u0d0c'
 
1916
        | '\u0d0e'..'\u0d10'
 
1917
        | '\u0d12'..'\u0d28'
 
1918
        | '\u0d2a'..'\u0d39'
 
1919
        | '\u0d60'..'\u0d61'
 
1920
        | '\u0d85'..'\u0d96'
 
1921
        | '\u0d9a'..'\u0db1'
 
1922
        | '\u0db3'..'\u0dbb'
 
1923
        | '\u0dbd'..'\u0dbd'
 
1924
        | '\u0dc0'..'\u0dc6'
 
1925
        | '\u0e01'..'\u0e30'
 
1926
        | '\u0e32'..'\u0e33'
 
1927
        | '\u0e40'..'\u0e45'
 
1928
        | '\u0e81'..'\u0e82'
 
1929
        | '\u0e84'..'\u0e84'
 
1930
        | '\u0e87'..'\u0e88'
 
1931
        | '\u0e8a'..'\u0e8a'
 
1932
        | '\u0e8d'..'\u0e8d'
 
1933
        | '\u0e94'..'\u0e97'
 
1934
        | '\u0e99'..'\u0e9f'
 
1935
        | '\u0ea1'..'\u0ea3'
 
1936
        | '\u0ea5'..'\u0ea5'
 
1937
        | '\u0ea7'..'\u0ea7'
 
1938
        | '\u0eaa'..'\u0eab'
 
1939
        | '\u0ead'..'\u0eb0'
 
1940
        | '\u0eb2'..'\u0eb3'
 
1941
        | '\u0ebd'..'\u0ebd'
 
1942
        | '\u0ec0'..'\u0ec4'
 
1943
        | '\u0edc'..'\u0edd'
 
1944
        | '\u0f00'..'\u0f00'
 
1945
        | '\u0f40'..'\u0f47'
 
1946
        | '\u0f49'..'\u0f6a'
 
1947
        | '\u0f88'..'\u0f8b'
 
1948
        | '\u1000'..'\u1021'
 
1949
        | '\u1023'..'\u1027'
 
1950
        | '\u1029'..'\u102a'
 
1951
        | '\u1050'..'\u1055'
 
1952
        | '\u10d0'..'\u10f8'
 
1953
        | '\u1100'..'\u1159'
 
1954
        | '\u115f'..'\u11a2'
 
1955
        | '\u11a8'..'\u11f9'
 
1956
        | '\u1200'..'\u1206'
 
1957
        | '\u1208'..'\u1246'
 
1958
        | '\u1248'..'\u1248'
 
1959
        | '\u124a'..'\u124d'
 
1960
        | '\u1250'..'\u1256'
 
1961
        | '\u1258'..'\u1258'
 
1962
        | '\u125a'..'\u125d'
 
1963
        | '\u1260'..'\u1286'
 
1964
        | '\u1288'..'\u1288'
 
1965
        | '\u128a'..'\u128d'
 
1966
        | '\u1290'..'\u12ae'
 
1967
        | '\u12b0'..'\u12b0'
 
1968
        | '\u12b2'..'\u12b5'
 
1969
        | '\u12b8'..'\u12be'
 
1970
        | '\u12c0'..'\u12c0'
 
1971
        | '\u12c2'..'\u12c5'
 
1972
        | '\u12c8'..'\u12ce'
 
1973
        | '\u12d0'..'\u12d6'
 
1974
        | '\u12d8'..'\u12ee'
 
1975
        | '\u12f0'..'\u130e'
 
1976
        | '\u1310'..'\u1310'
 
1977
        | '\u1312'..'\u1315'
 
1978
        | '\u1318'..'\u131e'
 
1979
        | '\u1320'..'\u1346'
 
1980
        | '\u1348'..'\u135a'
 
1981
        | '\u13a0'..'\u13f4'
 
1982
        | '\u1401'..'\u166c'
 
1983
        | '\u166f'..'\u1676'
 
1984
        | '\u1681'..'\u169a'
 
1985
        | '\u16a0'..'\u16ea'
 
1986
        | '\u16ee'..'\u16f0'
 
1987
        | '\u1700'..'\u170c'
 
1988
        | '\u170e'..'\u1711'
 
1989
        | '\u1720'..'\u1731'
 
1990
        | '\u1740'..'\u1751'
 
1991
        | '\u1760'..'\u176c'
 
1992
        | '\u176e'..'\u1770'
 
1993
        | '\u1780'..'\u17b3'
 
1994
        | '\u17dc'..'\u17dc'
 
1995
        | '\u1820'..'\u1842'
 
1996
        | '\u1844'..'\u1877'
 
1997
        | '\u1880'..'\u18a8'
 
1998
        | '\u1900'..'\u191c'
 
1999
        | '\u1950'..'\u196d'
 
2000
        | '\u1970'..'\u1974'
 
2001
        | '\u1f88'..'\u1f8f'
 
2002
        | '\u1f98'..'\u1f9f'
 
2003
        | '\u1fa8'..'\u1faf'
 
2004
        | '\u1fbc'..'\u1fbc'
 
2005
        | '\u1fcc'..'\u1fcc'
 
2006
        | '\u1ffc'..'\u1ffc'
 
2007
        | '\u2135'..'\u2138'
 
2008
        | '\u2160'..'\u2183'
 
2009
        | '\u3006'..'\u3007'
 
2010
        | '\u3021'..'\u3029'
 
2011
        | '\u3038'..'\u303a'
 
2012
        | '\u303c'..'\u303c'
 
2013
        | '\u3041'..'\u3096'
 
2014
        | '\u309f'..'\u309f'
 
2015
        | '\u30a1'..'\u30fa'
 
2016
        | '\u30ff'..'\u30ff'
 
2017
        | '\u3105'..'\u312c'
 
2018
        | '\u3131'..'\u318e'
 
2019
        | '\u31a0'..'\u31b7'
 
2020
        | '\u31f0'..'\u31ff'
 
2021
        | '\u3400'..'\u4db5'
 
2022
        | '\u4e00'..'\u9fa5'
 
2023
        | '\ua000'..'\ua48c'
 
2024
        | '\uac00'..'\ud7a3'
 
2025
        | '\uf900'..'\ufa2d'
 
2026
        | '\ufa30'..'\ufa6a'
 
2027
        | '\ufb1d'..'\ufb1d'
 
2028
        | '\ufb1f'..'\ufb28'
 
2029
        | '\ufb2a'..'\ufb36'
 
2030
        | '\ufb38'..'\ufb3c'
 
2031
        | '\ufb3e'..'\ufb3e'
 
2032
        | '\ufb40'..'\ufb41'
 
2033
        | '\ufb43'..'\ufb44'
 
2034
        | '\ufb46'..'\ufbb1'
 
2035
        | '\ufbd3'..'\ufd3d'
 
2036
        | '\ufd50'..'\ufd8f'
 
2037
        | '\ufd92'..'\ufdc7'
 
2038
        | '\ufdf0'..'\ufdfb'
 
2039
        | '\ufe70'..'\ufe74'
 
2040
        | '\ufe76'..'\ufefc'
 
2041
        | '\uff66'..'\uff6f'
 
2042
        | '\uff71'..'\uff9d'
 
2043
        | '\uffa0'..'\uffbe'
 
2044
        | '\uffc2'..'\uffc7'
 
2045
        | '\uffca'..'\uffcf'
 
2046
        | '\uffd2'..'\uffd7'
 
2047
        | '\uffda'..'\uffdc'
 
2048
        ;
 
2049
fragment UnicodeCatSmSo
 
2050
        : '\u002b'..'\u002b'
 
2051
        | '\u003c'..'\u003e'
 
2052
        | '\u007c'..'\u007c'
 
2053
        | '\u007e'..'\u007e'
 
2054
        | '\u00a6'..'\u00a7'
 
2055
        | '\u00a9'..'\u00a9'
 
2056
        | '\u00ac'..'\u00ac'
 
2057
        | '\u00ae'..'\u00ae'
 
2058
        | '\u00b0'..'\u00b1'
 
2059
        | '\u00b6'..'\u00b6'
 
2060
        | '\u00d7'..'\u00d7'
 
2061
        | '\u00f7'..'\u00f7'
 
2062
        | '\u03f6'..'\u03f6'
 
2063
        | '\u0482'..'\u0482'
 
2064
        | '\u060e'..'\u060f'
 
2065
        | '\u06e9'..'\u06e9'
 
2066
        | '\u06fd'..'\u06fe'
 
2067
        | '\u09fa'..'\u09fa'
 
2068
        | '\u0b70'..'\u0b70'
 
2069
        | '\u0bf3'..'\u0bf8'
 
2070
        | '\u0bfa'..'\u0bfa'
 
2071
        | '\u0f01'..'\u0f03'
 
2072
        | '\u0f13'..'\u0f17'
 
2073
        | '\u0f1a'..'\u0f1f'
 
2074
        | '\u0f34'..'\u0f34'
 
2075
        | '\u0f36'..'\u0f36'
 
2076
        | '\u0f38'..'\u0f38'
 
2077
        | '\u0fbe'..'\u0fc5'
 
2078
        | '\u0fc7'..'\u0fcc'
 
2079
        | '\u0fcf'..'\u0fcf'
 
2080
        | '\u1940'..'\u1940'
 
2081
        | '\u19e0'..'\u19ff'
 
2082
        | '\u2044'..'\u2044'
 
2083
        | '\u2052'..'\u2052'
 
2084
        | '\u207a'..'\u207c'
 
2085
        | '\u208a'..'\u208c'
 
2086
        | '\u2100'..'\u2101'
 
2087
        | '\u2103'..'\u2106'
 
2088
        | '\u2108'..'\u2109'
 
2089
        | '\u2114'..'\u2114'
 
2090
        | '\u2116'..'\u2118'
 
2091
        | '\u211e'..'\u2123'
 
2092
        | '\u2125'..'\u2125'
 
2093
        | '\u2127'..'\u2127'
 
2094
        | '\u2129'..'\u2129'
 
2095
        | '\u212e'..'\u212e'
 
2096
        | '\u2132'..'\u2132'
 
2097
        | '\u213a'..'\u213b'
 
2098
        | '\u2140'..'\u2144'
 
2099
        | '\u214a'..'\u214b'
 
2100
        | '\u2190'..'\u2328'
 
2101
        | '\u232b'..'\u23b3'
 
2102
        | '\u23b7'..'\u23d0'
 
2103
        | '\u2400'..'\u2426'
 
2104
        | '\u2440'..'\u244a'
 
2105
        | '\u249c'..'\u24e9'
 
2106
        | '\u2500'..'\u2617'
 
2107
        | '\u2619'..'\u267d'
 
2108
        | '\u2680'..'\u2691'
 
2109
        | '\u26a0'..'\u26a1'
 
2110
        | '\u2701'..'\u2704'
 
2111
        | '\u2706'..'\u2709'
 
2112
        | '\u270c'..'\u2727'
 
2113
        | '\u2729'..'\u274b'
 
2114
        | '\u274d'..'\u274d'
 
2115
        | '\u274f'..'\u2752'
 
2116
        | '\u2756'..'\u2756'
 
2117
        | '\u2758'..'\u275e'
 
2118
        | '\u2761'..'\u2767'
 
2119
        | '\u2794'..'\u2794'
 
2120
        | '\u2798'..'\u27af'
 
2121
        | '\u27b1'..'\u27be'
 
2122
        | '\u27d0'..'\u27e5'
 
2123
        | '\u27f0'..'\u2982'
 
2124
        | '\u2999'..'\u29d7'
 
2125
        | '\u29dc'..'\u29fb'
 
2126
        | '\u29fe'..'\u2b0d'
 
2127
        | '\u2e80'..'\u2e99'
 
2128
        | '\u2e9b'..'\u2ef3'
 
2129
        | '\u2f00'..'\u2fd5'
 
2130
        | '\u2ff0'..'\u2ffb'
 
2131
        | '\u3004'..'\u3004'
 
2132
        | '\u3012'..'\u3013'
 
2133
        | '\u3020'..'\u3020'
 
2134
        | '\u3036'..'\u3037'
 
2135
        | '\u303e'..'\u303f'
 
2136
        | '\u3190'..'\u3191'
 
2137
        | '\u3196'..'\u319f'
 
2138
        | '\u3200'..'\u321e'
 
2139
        | '\u322a'..'\u3243'
 
2140
        | '\u3250'..'\u3250'
 
2141
        | '\u3260'..'\u327d'
 
2142
        | '\u327f'..'\u327f'
 
2143
        | '\u328a'..'\u32b0'
 
2144
        | '\u32c0'..'\u32fe'
 
2145
        | '\u3300'..'\u33ff'
 
2146
        | '\u4dc0'..'\u4dff'
 
2147
        | '\ua490'..'\ua4c6'
 
2148
        | '\ufb29'..'\ufb29'
 
2149
        | '\ufdfd'..'\ufdfd'
 
2150
        | '\ufe62'..'\ufe62'
 
2151
        | '\ufe64'..'\ufe66'
 
2152
        | '\uff0b'..'\uff0b'
 
2153
        | '\uff1c'..'\uff1e'
 
2154
        | '\uff5c'..'\uff5c'
 
2155
        | '\uff5e'..'\uff5e'
 
2156
        | '\uffe2'..'\uffe2'
 
2157
        | '\uffe4'..'\uffe4'
 
2158
        | '\uffe8'..'\uffee'
 
2159
        | '\ufffc'..'\ufffd'
 
2160
        ;
 
2161
// END GENERATED CATEGORIES
 
2162
//
 
2163
//