You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Documentation/Evolution/RegexSyntaxRunTimeConstruction.md
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@
12
12
13
13
A regex declares a string processing algorithm using syntax familiar across a variety of languages and tools throughout programming history. We propose the ability to create a regex at run time from a string containing regex syntax (detailed here), API for accessing the match and captures, and a means to convert between an existential capture representation and concrete types.
14
14
15
-
The overall story is laid out in [Regex Type and Overview][overview] and each individual component is tracked in [Pitch and Proposal Status](https://github.com/apple/swift-experimental-string-processing/issues/107).
15
+
The overall story is laid out in [SE-0350 Regex Type and Overview][overview] and each individual component is tracked in [Pitch and Proposal Status][pitches].
Precise definitions of character classes is discussed in [Character Classes for String Processing](https://forums.swift.org/t/pitch-character-classes-for-string-processing/52920).
344
+
Precise definitions of character classes is discussed in [Unicode for String Processing][pitches].
345
345
346
346
#### Unicode scalars
347
347
@@ -1009,8 +1009,8 @@ This proposal regards _syntactic_ support, and does not necessarily mean that ev
Copy file name to clipboardExpand all lines: Documentation/Evolution/RegexTypeOverview.md
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -231,7 +231,7 @@ The result builder allows for inline failable value construction, which particip
231
231
232
232
Swift regexes describe an unambiguous algorithm, where choice is ordered and effects can be reliably observed. For example, a `print()` statement inside the `TryCapture`'s transform function will run whenever the overall algorithm naturally dictates an attempt should be made. Optimizations can only elide such calls if they can prove it is behavior-preserving (e.g. "pure").
233
233
234
-
`CustomPrefixMatchRegexComponent`, discussed in [String Processing Algorithms][pitches], allows industrial-strength parsers to be used a regex components. This allows us to drop the overly-permissive pre-parsing step:
234
+
`CustomConsumingRegexComponent`, discussed in [String Processing Algorithms][pitches], allows industrial-strength parsers to be used a regex components. This allows us to drop the overly-permissive pre-parsing step:
235
235
236
236
```swift
237
237
funcprocessEntry(_line: String) -> Transaction? {
@@ -431,7 +431,7 @@ Regular expressions have a deservedly mixed reputation, owing to their historica
431
431
432
432
* "Regular expressions are bad because you should use a real parser"
433
433
- In other systems, you're either in or you're out, leading to a gravitational pull to stay in when... you should get out
434
-
- Our remedy is interoperability with real parsers via `CustomPrefixMatchRegexComponent`
434
+
- Our remedy is interoperability with real parsers via `CustomConsumingRegexComponent`
435
435
- Literals with refactoring actions provide an incremental off-ramp from regex syntax to result builders and real parsers
436
436
* "Regular expressions are bad because ugly unmaintainable syntax"
437
437
- We propose literals with source tools support, allowing for better syntax highlighting and analysis
@@ -516,7 +516,7 @@ Regex are compiled into an intermediary representation and fairly simple analysi
516
516
517
517
### Future work: parser combinators
518
518
519
-
What we propose here is an incremental step towards better parsing support in Swift using parser-combinator style libraries. The underlying execution engine supports recursive function calls and mechanisms for library extensibility. `CustomPrefixMatchRegexComponent`'s protocol requirement is effectively a [monadic parser](https://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf), meaning `Regex` provides a regex-flavored combinator-like system.
519
+
What we propose here is an incremental step towards better parsing support in Swift using parser-combinator style libraries. The underlying execution engine supports recursive function calls and mechanisms for library extensibility. `CustomConsumingRegexComponent`'s protocol requirement is effectively a [monadic parser](https://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf), meaning `Regex` provides a regex-flavored combinator-like system.
520
520
521
521
An issues with traditional parser combinator libraries are the compilation barriers between call-site and definition, resulting in excessive and overly-cautious backtracking traffic. These can be eliminated through better [compilation techniques](https://core.ac.uk/download/pdf/148008325.pdf). As mentioned above, Swift's support for custom static compilation is still under development.
522
522
@@ -565,7 +565,7 @@ Regexes are often used for tokenization and tokens can be represented with Swift
565
565
566
566
### Future work: baked-in localized processing
567
567
568
-
- `CustomPrefixMatchRegexComponent` gives an entry point for localized processors
568
+
- `CustomConsumingRegexComponent` gives an entry point for localized processors
569
569
- Future work includes (sub?)protocols to communicate localization intent
0 commit comments