@@ -27,6 +27,7 @@ public enum TokenKind: Hashable {
27
27
case ellipsis
28
28
case equal
29
29
case exclamationMark
30
+ case extendedRegexDelimiter( String )
30
31
case floatingLiteral( String )
31
32
case identifier( String )
32
33
case infixQuestionMark
@@ -51,7 +52,8 @@ public enum TokenKind: Hashable {
51
52
case prefixAmpersand
52
53
case prefixOperator( String )
53
54
case rawStringDelimiter( String )
54
- case regexLiteral( String )
55
+ case regexLiteralPattern( String )
56
+ case regexSlash
55
57
case rightAngle
56
58
case rightBrace
57
59
case rightParen
@@ -89,6 +91,8 @@ public enum TokenKind: Hashable {
89
91
return #"="#
90
92
case . exclamationMark:
91
93
return #"!"#
94
+ case . extendedRegexDelimiter( let text) :
95
+ return text
92
96
case . floatingLiteral( let text) :
93
97
return text
94
98
case . identifier( let text) :
@@ -137,8 +141,10 @@ public enum TokenKind: Hashable {
137
141
return text
138
142
case . rawStringDelimiter( let text) :
139
143
return text
140
- case . regexLiteral ( let text) :
144
+ case . regexLiteralPattern ( let text) :
141
145
return text
146
+ case . regexSlash:
147
+ return #"/"#
142
148
case . rightAngle:
143
149
return #">"#
144
150
case . rightBrace:
@@ -222,6 +228,8 @@ public enum TokenKind: Hashable {
222
228
return #"#unavailable"#
223
229
case . prefixAmpersand:
224
230
return #"&"#
231
+ case . regexSlash:
232
+ return #"/"#
225
233
case . rightAngle:
226
234
return #">"#
227
235
case . rightBrace:
@@ -271,6 +279,8 @@ public enum TokenKind: Hashable {
271
279
return #"="#
272
280
case . exclamationMark:
273
281
return #"!"#
282
+ case . extendedRegexDelimiter:
283
+ return #"extended delimiter"#
274
284
case . floatingLiteral:
275
285
return #"floating literal"#
276
286
case . identifier:
@@ -317,8 +327,10 @@ public enum TokenKind: Hashable {
317
327
return #"prefix operator"#
318
328
case . rawStringDelimiter:
319
329
return #"raw string delimiter"#
320
- case . regexLiteral:
321
- return #"regex literal"#
330
+ case . regexLiteralPattern:
331
+ return #"regex pattern"#
332
+ case . regexSlash:
333
+ return #"/"#
322
334
case . rightAngle:
323
335
return #">"#
324
336
case . rightBrace:
@@ -375,6 +387,8 @@ public enum TokenKind: Hashable {
375
387
return false
376
388
case . exclamationMark:
377
389
return false
390
+ case . extendedRegexDelimiter:
391
+ return false
378
392
case . floatingLiteral:
379
393
return false
380
394
case . identifier:
@@ -421,7 +435,9 @@ public enum TokenKind: Hashable {
421
435
return false
422
436
case . rawStringDelimiter:
423
437
return false
424
- case . regexLiteral:
438
+ case . regexLiteralPattern:
439
+ return false
440
+ case . regexSlash:
425
441
return false
426
442
case . rightAngle:
427
443
return false
@@ -479,6 +495,8 @@ public enum TokenKind: Hashable {
479
495
return true
480
496
case . exclamationMark:
481
497
return true
498
+ case . extendedRegexDelimiter:
499
+ return false
482
500
case . floatingLiteral:
483
501
return false
484
502
case . identifier:
@@ -527,8 +545,10 @@ public enum TokenKind: Hashable {
527
545
return false
528
546
case . rawStringDelimiter:
529
547
return false
530
- case . regexLiteral :
548
+ case . regexLiteralPattern :
531
549
return false
550
+ case . regexSlash:
551
+ return true
532
552
case . rightAngle:
533
553
return true
534
554
case . rightBrace:
@@ -580,6 +600,8 @@ extension TokenKind: Equatable {
580
600
return true
581
601
case ( . exclamationMark, . exclamationMark) :
582
602
return true
603
+ case ( . extendedRegexDelimiter( let lhsText) , . extendedRegexDelimiter( let rhsText) ) :
604
+ return lhsText == rhsText
583
605
case ( . floatingLiteral( let lhsText) , . floatingLiteral( let rhsText) ) :
584
606
return lhsText == rhsText
585
607
case ( . identifier( let lhsText) , . identifier( let rhsText) ) :
@@ -628,8 +650,10 @@ extension TokenKind: Equatable {
628
650
return lhsText == rhsText
629
651
case ( . rawStringDelimiter( let lhsText) , . rawStringDelimiter( let rhsText) ) :
630
652
return lhsText == rhsText
631
- case ( . regexLiteral ( let lhsText) , . regexLiteral ( let rhsText) ) :
653
+ case ( . regexLiteralPattern ( let lhsText) , . regexLiteralPattern ( let rhsText) ) :
632
654
return lhsText == rhsText
655
+ case ( . regexSlash, . regexSlash) :
656
+ return true
633
657
case ( . rightAngle, . rightAngle) :
634
658
return true
635
659
case ( . rightBrace, . rightBrace) :
@@ -674,6 +698,7 @@ public enum RawTokenKind: UInt8, Equatable, Hashable {
674
698
case ellipsis
675
699
case equal
676
700
case exclamationMark
701
+ case extendedRegexDelimiter
677
702
case floatingLiteral
678
703
case identifier
679
704
case infixQuestionMark
@@ -698,7 +723,8 @@ public enum RawTokenKind: UInt8, Equatable, Hashable {
698
723
case prefixAmpersand
699
724
case prefixOperator
700
725
case rawStringDelimiter
701
- case regexLiteral
726
+ case regexLiteralPattern
727
+ case regexSlash
702
728
case rightAngle
703
729
case rightBrace
704
730
case rightParen
@@ -767,6 +793,8 @@ public enum RawTokenKind: UInt8, Equatable, Hashable {
767
793
return #"#unavailable"#
768
794
case . prefixAmpersand:
769
795
return #"&"#
796
+ case . regexSlash:
797
+ return #"/"#
770
798
case . rightAngle:
771
799
return #">"#
772
800
case . rightBrace:
@@ -819,6 +847,8 @@ public enum RawTokenKind: UInt8, Equatable, Hashable {
819
847
return true
820
848
case . exclamationMark:
821
849
return true
850
+ case . extendedRegexDelimiter:
851
+ return false
822
852
case . floatingLiteral:
823
853
return false
824
854
case . identifier:
@@ -867,8 +897,10 @@ public enum RawTokenKind: UInt8, Equatable, Hashable {
867
897
return false
868
898
case . rawStringDelimiter:
869
899
return false
870
- case . regexLiteral :
900
+ case . regexLiteralPattern :
871
901
return false
902
+ case . regexSlash:
903
+ return true
872
904
case . rightAngle:
873
905
return true
874
906
case . rightBrace:
@@ -931,6 +963,8 @@ extension TokenKind {
931
963
case . exclamationMark:
932
964
precondition ( text. isEmpty || rawKind. defaultText. map ( String . init) == text)
933
965
return . exclamationMark
966
+ case . extendedRegexDelimiter:
967
+ return . extendedRegexDelimiter( text)
934
968
case . floatingLiteral:
935
969
return . floatingLiteral( text)
936
970
case . identifier:
@@ -999,8 +1033,11 @@ extension TokenKind {
999
1033
return . prefixOperator( text)
1000
1034
case . rawStringDelimiter:
1001
1035
return . rawStringDelimiter( text)
1002
- case . regexLiteral:
1003
- return . regexLiteral( text)
1036
+ case . regexLiteralPattern:
1037
+ return . regexLiteralPattern( text)
1038
+ case . regexSlash:
1039
+ precondition ( text. isEmpty || rawKind. defaultText. map ( String . init) == text)
1040
+ return . regexSlash
1004
1041
case . rightAngle:
1005
1042
precondition ( text. isEmpty || rawKind. defaultText. map ( String . init) == text)
1006
1043
return . rightAngle
@@ -1061,6 +1098,8 @@ extension TokenKind {
1061
1098
return ( . equal, nil )
1062
1099
case . exclamationMark:
1063
1100
return ( . exclamationMark, nil )
1101
+ case . extendedRegexDelimiter( let str) :
1102
+ return ( . extendedRegexDelimiter, str)
1064
1103
case . floatingLiteral( let str) :
1065
1104
return ( . floatingLiteral, str)
1066
1105
case . identifier( let str) :
@@ -1109,8 +1148,10 @@ extension TokenKind {
1109
1148
return ( . prefixOperator, str)
1110
1149
case . rawStringDelimiter( let str) :
1111
1150
return ( . rawStringDelimiter, str)
1112
- case . regexLiteral( let str) :
1113
- return ( . regexLiteral, str)
1151
+ case . regexLiteralPattern( let str) :
1152
+ return ( . regexLiteralPattern, str)
1153
+ case . regexSlash:
1154
+ return ( . regexSlash, nil )
1114
1155
case . rightAngle:
1115
1156
return ( . rightAngle, nil )
1116
1157
case . rightBrace:
0 commit comments