File tree Expand file tree Collapse file tree 11 files changed +343
-91
lines changed Expand file tree Collapse file tree 11 files changed +343
-91
lines changed Original file line number Diff line number Diff line change @@ -311,6 +311,15 @@ extension Parser {
311
311
case integerLiteral
312
312
case selfKeyword
313
313
314
+ init ? ( lexeme: Lexer . Lexeme ) {
315
+ switch lexeme. tokenKind {
316
+ case . identifier: self = . identifier
317
+ case . integerLiteral: self = . integerLiteral
318
+ case . selfKeyword: self = . selfKeyword
319
+ default : return nil
320
+ }
321
+ }
322
+
314
323
var rawTokenKind : RawTokenKind {
315
324
switch self {
316
325
case . identifier: return . identifier
Original file line number Diff line number Diff line change @@ -393,10 +393,14 @@ extension Parser {
393
393
case postfixOperator
394
394
case prefixOperator
395
395
396
- func accepts( lexeme: Lexer . Lexeme ) -> Bool {
397
- switch self {
398
- case . colon: return true
399
- default : return lexeme. tokenText == " == "
396
+ init ? ( lexeme: Lexer . Lexeme ) {
397
+ switch ( lexeme. tokenKind, lexeme. tokenText) {
398
+ case ( . colon, _) : self = . colon
399
+ case ( . spacedBinaryOperator, " == " ) : self = . spacedBinaryOperator
400
+ case ( . unspacedBinaryOperator, " == " ) : self = . unspacedBinaryOperator
401
+ case ( . postfixOperator, " == " ) : self = . postfixOperator
402
+ case ( . prefixOperator, " == " ) : self = . prefixOperator
403
+ default : return nil
400
404
}
401
405
}
402
406
@@ -2045,6 +2049,14 @@ extension Parser {
2045
2049
case poundErrorKeyword
2046
2050
case poundWarningKeyword
2047
2051
2052
+ init ? ( lexeme: Lexer . Lexeme ) {
2053
+ switch lexeme. tokenKind {
2054
+ case . poundErrorKeyword: self = . poundErrorKeyword
2055
+ case . poundWarningKeyword: self = . poundWarningKeyword
2056
+ default : return nil
2057
+ }
2058
+ }
2059
+
2048
2060
var rawTokenKind : RawTokenKind {
2049
2061
switch self {
2050
2062
case . poundErrorKeyword: return . poundErrorKeyword
Original file line number Diff line number Diff line change @@ -173,6 +173,21 @@ extension Parser {
173
173
case arrow
174
174
case throwsKeyword
175
175
176
+ init ? ( lexeme: Lexer . Lexeme ) {
177
+ switch lexeme. tokenKind {
178
+ case . spacedBinaryOperator: self = . spacedBinaryOperator
179
+ case . unspacedBinaryOperator: self = . unspacedBinaryOperator
180
+ case . infixQuestionMark: self = . infixQuestionMark
181
+ case . equal: self = . equal
182
+ case . isKeyword: self = . isKeyword
183
+ case . asKeyword: self = . asKeyword
184
+ case . identifier where lexeme. tokenText == " async " : self = . async
185
+ case . arrow: self = . arrow
186
+ case . throwsKeyword: self = . throwsKeyword
187
+ default : return nil
188
+ }
189
+ }
190
+
176
191
var rawTokenKind : RawTokenKind {
177
192
switch self {
178
193
case . spacedBinaryOperator: return . spacedBinaryOperator
Original file line number Diff line number Diff line change @@ -283,20 +283,6 @@ extension Parser.Lookahead {
283
283
" _opaqueReturnTypeOf " ,
284
284
]
285
285
286
- func isParenthesizedUnowned( ) -> Bool {
287
- assert ( self . atContextualKeyword ( " unowned " ) && self . peek ( ) . tokenKind == . leftParen,
288
- " Invariant violated " )
289
-
290
- // Look ahead to parse the parenthesized expression.
291
- var lookahead = self . lookahead ( )
292
- lookahead. expectIdentifierWithoutRecovery ( )
293
- guard lookahead. consume ( if: . leftParen) != nil else {
294
- return false
295
- }
296
- return lookahead. at ( . identifier)
297
- && lookahead. peek ( ) . tokenKind == . rightParen
298
- && ( lookahead. atContextualKeyword ( " safe " ) || lookahead. atContextualKeyword ( " unsafe " ) )
299
- }
300
286
}
301
287
302
288
extension Parser . Lookahead {
@@ -365,6 +351,18 @@ extension Parser.Lookahead {
365
351
case poundElseKeyword
366
352
case poundElseifKeyword
367
353
354
+ init ? ( lexeme: Lexer . Lexeme ) {
355
+ switch lexeme. tokenKind {
356
+ case . leftParen: self = . leftParen
357
+ case . leftBrace: self = . leftBrace
358
+ case . leftSquareBracket: self = . leftSquareBracket
359
+ case . poundIfKeyword: self = . poundIfKeyword
360
+ case . poundElseKeyword: self = . poundElseKeyword
361
+ case . poundElseifKeyword: self = . poundElseifKeyword
362
+ default : return nil
363
+ }
364
+ }
365
+
368
366
var rawTokenKind : RawTokenKind {
369
367
switch self {
370
368
case . leftParen: return . leftParen
Original file line number Diff line number Diff line change @@ -227,15 +227,15 @@ extension Lexer.Lexeme {
227
227
}
228
228
229
229
func isContextualPunctuator( _ name: SyntaxText ) -> Bool {
230
- return Operator ( self ) != nil && self . tokenText == name
230
+ return Operator ( lexeme : self ) != nil && self . tokenText == name
231
231
}
232
232
233
233
var isKeyword : Bool {
234
234
self . tokenKind. isKeyword
235
235
}
236
236
237
237
func starts( with symbol: SyntaxText ) -> Bool {
238
- guard Operator ( self ) != nil || self . tokenKind. isPunctuation else {
238
+ guard Operator ( lexeme : self ) != nil || self . tokenKind. isPunctuation else {
239
239
return false
240
240
}
241
241
Original file line number Diff line number Diff line change @@ -52,6 +52,17 @@ extension Parser {
52
52
case letKeyword
53
53
case varKeyword
54
54
55
+ init ? ( lexeme: Lexer . Lexeme ) {
56
+ switch lexeme. tokenKind {
57
+ case . leftParen: self = . leftParen
58
+ case . wildcardKeyword: self = . wildcardKeyword
59
+ case . identifier: self = . identifier
60
+ case . letKeyword: self = . letKeyword
61
+ case . varKeyword: self = . varKeyword
62
+ default : return nil
63
+ }
64
+ }
65
+
55
66
var rawTokenKind : RawTokenKind {
56
67
switch self {
57
68
case . leftParen: return . leftParen
@@ -213,6 +224,17 @@ extension Parser.Lookahead {
213
224
case varKeyword
214
225
case leftParen
215
226
227
+ init ? ( lexeme: Lexer . Lexeme ) {
228
+ switch lexeme. tokenKind {
229
+ case . identifier: self = . identifier
230
+ case . wildcardKeyword: self = . wildcardKeyword
231
+ case . letKeyword: self = . letKeyword
232
+ case . varKeyword: self = . varKeyword
233
+ case . leftParen: self = . leftParen
234
+ default : return nil
235
+ }
236
+ }
237
+
216
238
var rawTokenKind : RawTokenKind {
217
239
switch self {
218
240
case . identifier: return . identifier
You can’t perform that action at this time.
0 commit comments