@@ -138,43 +138,42 @@ extension RegexTests {
138
138
139
139
parseTest(
140
140
" abc " , concat( " a " , " b " , " c " ))
141
- // parseTest(
142
- // # " abc \+ d* " #,
143
- // concat( " a " , " b " , " c " , " + " , .zeroOrMore(.greedy, " d " )))
144
- // parseTest(
145
- // " a(b) " , concat( " a " , .group(.capture(), " b " )))
146
- // parseTest(
147
- // " abc(?:de)+fghi*k|j " ,
148
- // alt(
149
- // concat(
150
- // " a " , " b " , " c " ,
151
- // .oneOrMore(
152
- // .greedy, .group(.nonCapture(), concat( " d " , " e " ))),
153
- // " f " , " g " , " h " , .zeroOrMore(.greedy, " i " ), " k " ),
154
- // " j " ))
155
- // parseTest(
156
- // " a(?:b|c)?d " ,
157
- // concat( " a " , .zeroOrOne(
158
- // .greedy, .group(.nonCapture(), alt( " b " , " c " ))), " d " ))
159
- // parseTest(
160
- // " a?b??c+d+?e*f*? " ,
161
- // concat(
162
- // .zeroOrOne(.greedy, " a " ), .zeroOrOne(.reluctant, " b " ),
163
- // .oneOrMore(.greedy, " c " ), .oneOrMore(.reluctant, " d " ),
164
- // .zeroOrMore(.greedy, " e " ), .zeroOrMore(.reluctant, " f " )))
165
- // parseTest(
166
- // " a|b?c " ,
167
- // alt( " a " , concat(.zeroOrOne(.greedy, " b " ), " c " )))
168
- // parseTest(
169
- // " (a|b)c " ,
170
- // concat(.group(.capture(), alt( " a " , " b " )), " c " ))
171
- // parseTest(
172
- // " (.)*(.*) " ,
173
- // concat(
174
- // .zeroOrMore(
175
- // .greedy, .group(.capture(), .any)),
176
- // .group(
177
- // .capture(), .zeroOrMore(.greedy, .any))))
141
+ parseTest(
142
+ # " abc \+ d* " #,
143
+ concat( " a " , " b " , " c " , " + " , zeroOrMore(.greedy, " d " )))
144
+ parseTest(
145
+ " a(b) " , concat( " a " , group(.capture, " b " )))
146
+ parseTest(
147
+ " abc(?:de)+fghi*k|j " ,
148
+ alt(
149
+ concat(
150
+ " a " , " b " , " c " ,
151
+ oneOrMore(
152
+ .greedy, nonCapture(concat( " d " , " e " ))),
153
+ " f " , " g " , " h " , zeroOrMore(.greedy, " i " ), " k " ),
154
+ " j " ))
155
+ parseTest(
156
+ " a(?:b|c)?d " ,
157
+ concat( " a " , zeroOrOne(
158
+ .greedy, nonCapture(alt( " b " , " c " ))), " d " ))
159
+ parseTest(
160
+ " a?b??c+d+?e*f*? " ,
161
+ concat(
162
+ zeroOrOne(.greedy, " a " ), zeroOrOne(.reluctant, " b " ),
163
+ oneOrMore(.greedy, " c " ), oneOrMore(.reluctant, " d " ),
164
+ zeroOrMore(.greedy, " e " ), zeroOrMore(.reluctant, " f " )))
165
+ parseTest(
166
+ " a|b?c " ,
167
+ alt( " a " , concat(zeroOrOne(.greedy, " b " ), " c " )))
168
+ parseTest(
169
+ " (a|b)c " ,
170
+ concat(capture(alt( " a " , " b " )), " c " ))
171
+ parseTest(
172
+ " (.)*(.*) " ,
173
+ concat(
174
+ zeroOrMore(
175
+ .greedy, capture(any)),
176
+ capture(zeroOrMore(.greedy, any))))
178
177
parseTest(
179
178
# " abc \d" #,
180
179
concat( " a " , " b " , " c " , .atom(.escaped(.decimalDigit))))
@@ -244,14 +243,14 @@ extension RegexTests {
244
243
parseTest( " [[[:space:]]] " ,
245
244
charClass(charClass(.atom(posixSet(.space)))))
246
245
247
- // parseTest(
248
- // #" [a[bc]de&&[^bc] \d] + " #,
249
- // . oneOrMore(.greedy, charClass(
250
- // .setOperation(
251
- // [" a " , charClass( " b " , " c " ), " d " , " e " ],
252
- // .intersection,
253
- // [charClass(" b " , " c " , inverted: true), .atom(.escaped(.decimalDigit))]
254
- // ))))
246
+ parseTest(
247
+ # " [a[bc]de&&[^bc] \d] + " #,
248
+ oneOrMore(.greedy, charClass(
249
+ .setOperation(
250
+ [ " a " , charClass( " b " , " c " ), " d " , " e " ],
251
+ .intersection,
252
+ [charClass( " b " , " c " , inverted: true), .atom(.escaped(.decimalDigit))]
253
+ ))))
255
254
256
255
parseTest(
257
256
" [a&&b] " ,
@@ -274,14 +273,14 @@ extension RegexTests {
274
273
// Operators are only valid in custom character classes.
275
274
parseTest(
276
275
" a&&b " , concat( " a " , " & " , " & " , " b " ))
277
- // parseTest(
278
- // " &? " , . zeroOrOne(.greedy, " & " ))
279
- // parseTest(
280
- // " &&? " , concat( " & " , . zeroOrOne(.greedy, " & " )))
281
- // parseTest(
282
- // " --+ " , concat( " - " , . oneOrMore(.greedy, " - " )))
283
- // parseTest(
284
- // " ~~* " , concat( " ~ " , . zeroOrMore(.greedy, " ~ " )))
276
+ parseTest(
277
+ " &? " , zeroOrOne(.greedy, " & " ))
278
+ parseTest(
279
+ " &&? " , concat( " & " , zeroOrOne(.greedy, " & " )))
280
+ parseTest(
281
+ " --+ " , concat( " - " , oneOrMore(.greedy, " - " )))
282
+ parseTest(
283
+ " ~~* " , concat( " ~ " , zeroOrMore(.greedy, " ~ " )))
285
284
286
285
parseTest(
287
286
# " a \Q . \Eb" #,
@@ -294,48 +293,46 @@ extension RegexTests {
294
293
# " a(?#. comment)b " #,
295
294
concat( " a " , " b " ))
296
295
297
- // parseTest(
298
- // # " a{1,2} " #,
299
- // .quantification(.range(.greedy, 1...2), " a " ))
300
- // parseTest(
301
- // # " a{,2} " #,
302
- // .quantification(.upToN(.greedy, 2), " a " ))
303
- // parseTest(
304
- // # " a{1,} " #,
305
- // .quantification(.nOrMore(.greedy, 1), " a " ))
306
- // parseTest(
307
- // # " a{1} " #,
308
- // .quantification(.exactly(.greedy, 1), " a " ))
309
- // parseTest(
310
- // # " a{1,2}? " #,
311
- // .quantification(.range(.reluctant, 1...2), " a " ))
312
-
313
- // // Named captures
314
- // parseTest(
315
- // # " a(?<label>b)c " #,
316
- // concat( " a " , .namedCapture( " label " , " b " ), " c " ))
317
- // parseTest(
318
- // # " a(?'label'b)c " #,
319
- // concat( " a " , .namedCapture( " label " , " b " ), " c " ))
320
- // parseTest(
321
- // # " a(?P<label>b)c " #,
322
- // concat( " a " , .namedCapture( " label " , " b " ), " c " ))
323
- // parseTest(
324
- // # " a(?P<label>b)c " #,
325
- // concat( " a " , .namedCapture( " label " , " b " ), " c " ))
326
- //
327
- // // Other groups
328
- // parseTest(
329
- // # " a(?:b)c " #,
330
- // concat( " a " , .nonCapture( " b " ), " c " ))
331
- // parseTest(
332
- // # " a(?|b)c " #,
333
- // concat( " a " , .nonCaptureReset( " b " ), " c " ))
334
- // parseTest(
335
- // # " a(?>b)c " #,
336
- // concat( " a " , .atomicNonCapturing( " b " ), " c " ))
296
+ parseTest(
297
+ # " a{1,2} " #,
298
+ quant(.range(_fake(1)..._fake(2)), .greedy, " a " ))
299
+ parseTest(
300
+ # " a{,2} " #,
301
+ quant(.upToN(_fake(2)), .greedy, " a " ))
302
+ parseTest(
303
+ # " a{1,} " #,
304
+ quant(.nOrMore(_fake(1)), .greedy, " a " ))
305
+ parseTest(
306
+ # " a{1} " #,
307
+ quant(.exactly(_fake(1)), .greedy, " a " ))
308
+ parseTest(
309
+ # " a{1,2}? " #,
310
+ quant(.range(_fake(1)..._fake(2)), .reluctant, " a " ))
337
311
312
+ // Named captures
313
+ parseTest(
314
+ # " a(?<label>b)c " #,
315
+ concat( " a " , namedCapture( " label " , " b " ), " c " ))
316
+ parseTest(
317
+ # " a(?'label'b)c " #,
318
+ concat( " a " , namedCapture( " label " , " b " ), " c " ))
319
+ parseTest(
320
+ # " a(?P<label>b)c " #,
321
+ concat( " a " , namedCapture( " label " , " b " ), " c " ))
322
+ parseTest(
323
+ # " a(?P<label>b)c " #,
324
+ concat( " a " , namedCapture( " label " , " b " ), " c " ))
338
325
326
+ // Other groups
327
+ parseTest(
328
+ # " a(?:b)c " #,
329
+ concat( " a " , nonCapture( " b " ), " c " ))
330
+ parseTest(
331
+ # " a(?|b)c " #,
332
+ concat( " a " , nonCaptureReset( " b " ), " c " ))
333
+ parseTest(
334
+ # " a(?>b)c " #,
335
+ concat( " a " , atomicNonCapturing( " b " ), " c " ))
339
336
340
337
// TODO: failure tests
341
338
}
0 commit comments