@@ -193,7 +193,11 @@ extension PrettyPrinter {
193
193
}
194
194
195
195
if let pattern = a. _patternBase ( & self ) {
196
- print ( pattern)
196
+ if pattern. canBeWrapped {
197
+ print ( " One( \( pattern. 0 ) ) " )
198
+ } else {
199
+ print ( pattern. 0 )
200
+ }
197
201
}
198
202
199
203
case . trivia:
@@ -387,9 +391,9 @@ extension PrettyPrinter {
387
391
if let lhs = lhs. _patternBase ( & self ) , let rhs = rhs. _patternBase ( & self ) {
388
392
indent ( )
389
393
output ( " ( " )
390
- output ( lhs)
394
+ output ( lhs. 0 )
391
395
output ( " ... " )
392
- output ( rhs)
396
+ output ( rhs. 0 )
393
397
output ( " ) " )
394
398
}
395
399
@@ -1029,33 +1033,35 @@ extension DSLTree.CustomCharacterClass {
1029
1033
}
1030
1034
1031
1035
extension DSLTree . Atom {
1032
- func _patternBase( _ printer: inout PrettyPrinter ) -> String ? {
1036
+ func _patternBase(
1037
+ _ printer: inout PrettyPrinter
1038
+ ) -> ( String , canBeWrapped: Bool ) ? {
1033
1039
switch self {
1034
1040
case . any:
1035
- return " .any "
1041
+ return ( " .any " , true )
1036
1042
1037
1043
case let . char( c) :
1038
- return String ( c) . _quoted
1044
+ return ( String ( c) . _quoted, false )
1039
1045
1040
1046
case let . scalar( s) :
1041
1047
let hex = String ( s. value, radix: 16 , uppercase: true )
1042
- return " \\ u{ \( hex) } " . _quoted
1048
+ return ( " \\ u{ \( hex) } " . _quoted, false )
1043
1049
1044
1050
case let . unconverted( a) :
1045
1051
if a. ast. isUnprintableAtom {
1046
- return " #/ \( a. ast. _regexBase) /# "
1052
+ return ( " #/ \( a. ast. _regexBase) /# " , false )
1047
1053
} else {
1048
- return a. ast. _dslBase. 0
1054
+ return a. ast. _dslBase
1049
1055
}
1050
1056
1051
1057
case . assertion( let a) :
1052
- return a. ast. _patternBase
1058
+ return ( a. ast. _patternBase, false )
1053
1059
1054
1060
case . backreference( _) :
1055
- return " /* TOOD: backreferences */"
1061
+ return ( " /* TOOD: backreferences */" , false )
1056
1062
1057
1063
case . symbolicReference:
1058
- return " /* TOOD: symbolic references */"
1064
+ return ( " /* TOOD: symbolic references */" , false )
1059
1065
1060
1066
case . changeMatchingOptions( let matchingOptions) :
1061
1067
for add in matchingOptions. ast. adding {
0 commit comments