@@ -319,21 +319,6 @@ extension CharacterClass {
319319 }
320320}
321321
322- extension AST . Node {
323- /// If this has a character class representation, whether built-in or custom, return it.
324- ///
325- /// TODO: Not sure if this the right model type, but I suspect we'll want to produce
326- /// something like this on demand
327- var characterClass : CharacterClass ? {
328- switch self {
329- case let . customCharacterClass( cc) : return cc. modelCharacterClass
330- case let . atom( a) : return a. characterClass
331-
332- default : return nil
333- }
334- }
335- }
336-
337322extension DSLTree . Node {
338323 var characterClass : CharacterClass ? {
339324 switch self {
@@ -502,66 +487,6 @@ extension DSLTree.CustomCharacterClass {
502487 }
503488}
504489
505- extension AST . CustomCharacterClass {
506- /// The model character class for this custom character class.
507- var modelCharacterClass : CharacterClass ? {
508- typealias Component = CharacterClass . CharacterSetComponent
509- func getComponents( _ members: [ Member ] ) -> [ Component ] ? {
510- var result = Array < Component > ( )
511- for m in members {
512- switch m {
513- case . custom( let cc) :
514- guard let cc = cc. modelCharacterClass else {
515- return nil
516- }
517- result. append ( . characterClass( cc) )
518- case . range( let r) :
519- result. append ( . range(
520- r. lhs. literalCharacterValue! ...
521- r. rhs. literalCharacterValue!) )
522-
523- case . atom( let a) :
524- if let cc = a. characterClass {
525- result. append ( . characterClass( cc) )
526- } else if let lit = a. literalCharacterValue {
527- result. append ( . character( lit) )
528- } else {
529- return nil
530- }
531-
532- case . quote( let q) :
533- // Decompose quoted literal into literal characters.
534- result += q. literal. map { . character( $0) }
535-
536- case . trivia:
537- // Not semantically important.
538- break
539-
540- case . setOperation( let lhs, let op, let rhs) :
541- // FIXME: CharacterClass wasn't designed for set operations with
542- // multiple components in each operand, we should fix that. For now,
543- // just produce custom components.
544- guard let lhs = getComponents ( lhs) ,
545- let rhs = getComponents ( rhs)
546- else {
547- return nil
548- }
549- result. append ( . setOperation( . init(
550- lhs: . characterClass( . custom( lhs) ) ,
551- op: op. value,
552- rhs: . characterClass( . custom( rhs) ) ) ) )
553- }
554- }
555- return result
556- }
557- guard let comps = getComponents ( members) else {
558- return nil
559- }
560- let cc = CharacterClass . custom ( comps)
561- return self . isInverted ? cc. inverted : cc
562- }
563- }
564-
565490extension CharacterClass {
566491 // FIXME: Calling on inverted sets wont be the same as the
567492 // inverse of a boundary if at the start or end of the
0 commit comments