@@ -24,47 +24,6 @@ extension DSLTree._AST.Atom {
24
24
}
25
25
}
26
26
27
- extension Character {
28
- // func generateConsumer(
29
- // _ opts: MatchingOptions
30
- // ) throws -> MEProgram.ConsumeFunction {
31
- // let isCaseInsensitive = opts.isCaseInsensitive
32
- // switch opts.semanticLevel {
33
- // case .graphemeCluster:
34
- // return { input, bounds in
35
- // guard let (char, next) = input.characterAndEnd(
36
- // at: bounds.lowerBound, limitedBy: bounds.upperBound)
37
- // else { return nil }
38
- // if isCaseInsensitive && isCased {
39
- // return char.lowercased() == self.lowercased()
40
- // ? next
41
- // : nil
42
- // } else {
43
- // return char == self
44
- // ? next
45
- // : nil
46
- // }
47
- // }
48
- // case .unicodeScalar:
49
- // // TODO: This should only be reachable from character class emission, can
50
- // // we guarantee that? Otherwise we'd want a different matching behavior.
51
- // let consumers = unicodeScalars.map { s in consumeScalar {
52
- // isCaseInsensitive
53
- // ? $0.properties.lowercaseMapping == s.properties.lowercaseMapping
54
- // : $0 == s
55
- // }}
56
- // return { input, bounds in
57
- // for fn in consumers {
58
- // if let idx = fn(input, bounds) {
59
- // return idx
60
- // }
61
- // }
62
- // return nil
63
- // }
64
- // }
65
- // }
66
- }
67
-
68
27
extension DSLTree . Atom {
69
28
var singleScalarASCIIValue : UInt8 ? {
70
29
switch self {
@@ -78,76 +37,6 @@ extension DSLTree.Atom {
78
37
return nil
79
38
}
80
39
}
81
-
82
- // TODO: If ByteCodeGen switches first, then this is unnecessary for
83
- // top-level nodes, but it's also invoked for `.atom` members of a custom CC
84
- // func generateConsumer(
85
- // _ opts: MatchingOptions
86
- // ) throws -> MEProgram.ConsumeFunction? {
87
- // switch self {
88
- // case let .char(c):
89
- // return try c.generateConsumer(opts)
90
- //
91
- // case let .scalar(s):
92
- // // A scalar always matches the same as a single scalar character. This
93
- // // means it must match a whole grapheme in grapheme semantic mode, but
94
- // // can match a single scalar in scalar semantic mode.
95
- // return try Character(s).generateConsumer(opts)
96
- //
97
- // case .any:
98
- // // FIXME: Should this be a total ordering?
99
- // if opts.semanticLevel == .graphemeCluster {
100
- // return { input, bounds in
101
- // input.index(after: bounds.lowerBound)
102
- // }
103
- // } else {
104
- // return consumeScalar { _ in
105
- // true
106
- // }
107
- // }
108
- //
109
- // case .anyNonNewline:
110
- // switch opts.semanticLevel {
111
- // case .graphemeCluster:
112
- // return { input, bounds in
113
- // input[bounds.lowerBound].isNewline
114
- // ? nil
115
- // : input.index(after: bounds.lowerBound)
116
- // }
117
- // case .unicodeScalar:
118
- // return { input, bounds in
119
- // input[bounds.lowerBound].isNewline
120
- // ? nil
121
- // : input.unicodeScalars.index(after: bounds.lowerBound)
122
- // }
123
- // }
124
- //
125
- // case .dot:
126
- // throw Unreachable(".atom(.dot) should be handled by emitDot")
127
- //
128
- // case .assertion:
129
- // // TODO: We could handle, should this be total?
130
- // return nil
131
- // case .characterClass(let cc):
132
- // return cc.generateConsumer(opts)
133
- //
134
- // case .backreference:
135
- // // TODO: Should we handle?
136
- // return nil
137
- //
138
- // case .symbolicReference:
139
- // // TODO: Should we handle?
140
- // return nil
141
- //
142
- // case .changeMatchingOptions:
143
- // // TODO: Should we handle?
144
- // return nil
145
- //
146
- // case let .unconverted(a):
147
- // return try a.ast.generateConsumer(opts)
148
- // }
149
- //
150
- // }
151
40
}
152
41
153
42
extension DSLTree . Atom . CharacterClass {
@@ -389,28 +278,6 @@ extension DSLTree.CustomCharacterClass {
389
278
}
390
279
)
391
280
}
392
-
393
- // func generateConsumer(
394
- // _ opts: MatchingOptions
395
- // ) throws -> MEProgram.ConsumeFunction {
396
- // // NOTE: Easy way to implement, obviously not performant
397
- // let consumers = try members.map {
398
- // try $0.generateConsumer(opts)
399
- // }
400
- // return { input, bounds in
401
- // for consumer in consumers {
402
- // if let idx = consumer(input, bounds) {
403
- // return isInverted ? nil : idx
404
- // }
405
- // }
406
- // if isInverted {
407
- // return opts.semanticLevel == .graphemeCluster
408
- // ? Swift.min(input.index(after: bounds.lowerBound), bounds.upperBound)
409
- // : input.unicodeScalars.index(after: bounds.lowerBound)
410
- // }
411
- // return nil
412
- // }
413
- // }
414
281
}
415
282
416
283
// NOTE: Conveniences, though not most performant
@@ -519,7 +386,6 @@ extension AST.Atom.CharacterProperty {
519
386
520
387
case . generalCategory( let p) :
521
388
return try p. generateConsumer ( opts)
522
- // fatalError("TODO: Map categories: \(p)")
523
389
524
390
case . binary( let prop, value: let value) :
525
391
let cons = try prop. generateConsumer ( opts)
0 commit comments