From 96da785d50a6063c4835b3081c1457f544344442 Mon Sep 17 00:00:00 2001 From: Richard Wei Date: Mon, 28 Mar 2022 13:09:23 -0700 Subject: [PATCH] Rename _MatchingEngine to _RegexParser and fix CMake. The _MatchingEngine module no longer contains the matching engine. It has the regex AST and parser. This patch renames it to `_RegexParser`. Also fix the CMake build which has been broken for a while. --- Package.swift | 18 +++--- README.md | 9 ++- Sources/CMakeLists.txt | 4 +- .../PatternConverter/PatternConverter.swift | 4 +- Sources/Prototypes/CMakeLists.txt | 2 +- .../Prototypes/Combinators/Combinators.swift | 2 +- Sources/RegexBuilder/Anchor.swift | 2 +- Sources/RegexBuilder/CMakeLists.txt | 10 +++ Sources/RegexBuilder/DSL.swift | 2 +- Sources/RegexBuilder/Variadics.swift | 2 +- .../VariadicsGenerator.swift | 2 +- Sources/_MatchingEngine/CMakeLists.txt | 46 -------------- Sources/_RegexParser/CMakeLists.txt | 28 +++++++++ .../Regex/AST/AST.swift | 0 .../Regex/AST/ASTAction.swift | 0 .../Regex/AST/ASTProtocols.swift | 0 .../Regex/AST/Atom.swift | 0 .../Regex/AST/Conditional.swift | 0 .../Regex/AST/CustomCharClass.swift | 0 .../Regex/AST/Group.swift | 0 .../Regex/AST/MatchingOptions.swift | 0 .../Regex/AST/Quantification.swift | 0 .../Regex/Parse/CaptureStructure.swift | 0 .../CharacterPropertyClassification.swift | 0 .../Regex/Parse/DelimiterLexing.swift | 0 .../Regex/Parse/Diagnostics.swift | 0 .../Regex/Parse/LexicalAnalysis.swift | 0 .../Regex/Parse/Mocking.swift | 0 .../Regex/Parse/Parse.swift | 0 .../Regex/Parse/Source.swift | 0 .../Regex/Parse/SourceLocation.swift | 0 .../Regex/Parse/SyntaxOptions.swift | 0 .../Regex/Printing/DumpAST.swift | 0 .../Regex/Printing/PrettyPrinter.swift | 0 .../Regex/Printing/PrintAsCanonical.swift | 0 .../Regex/Printing/RenderRanges.swift | 0 .../Regex/TreeProtocols.swift | 0 .../Utility/AllScalars.swift | 0 .../Utility/Errors.swift | 0 .../Utility/Misc.swift | 0 .../Utility/MissingUnicode.swift | 0 .../Utility/TypeConstruction.swift | 0 Sources/_StringProcessing/ByteCodeGen.swift | 2 +- Sources/_StringProcessing/CMakeLists.txt | 62 +++++++++++++++---- Sources/_StringProcessing/Capture.swift | 2 +- .../_StringProcessing/CharacterClass.swift | 2 +- Sources/_StringProcessing/Compiler.swift | 2 +- .../_StringProcessing/ConsumerInterface.swift | 2 +- .../_StringProcessing/Engine/MEBuilder.swift | 2 +- .../_StringProcessing/Engine/MECapture.swift | 2 +- .../_StringProcessing/Engine/MEProgram.swift | 2 +- .../_StringProcessing/Engine/Registers.swift | 2 +- .../Engine/Structuralize.swift | 2 +- Sources/_StringProcessing/Executor.swift | 2 +- .../_StringProcessing/MatchingOptions.swift | 2 +- .../_StringProcessing/PrintAsPattern.swift | 2 +- .../Regex/ASTConversion.swift | 2 +- .../Regex/AnyRegexOutput.swift | 2 +- Sources/_StringProcessing/Regex/Core.swift | 2 +- Sources/_StringProcessing/Regex/DSLTree.swift | 2 +- Sources/_StringProcessing/Regex/Options.swift | 2 +- .../Utility/ASTBuilder.swift | 2 +- Sources/_Unicode/CMakeLists.txt | 16 ----- Tests/MatchingEngineTests/UtilTests.swift | 2 +- Tests/PrototypesTests/CombinatorsTests.swift | 2 +- Tests/PrototypesTests/PEGTests.swift | 2 +- Tests/PrototypesTests/PTCaRetTests.swift | 2 +- Tests/RegexTests/CaptureTests.swift | 2 +- Tests/RegexTests/CompileTests.swift | 2 +- Tests/RegexTests/DiagnosticTests.swift | 2 +- Tests/RegexTests/LexTests.swift | 2 +- Tests/RegexTests/MatchTests.swift | 2 +- Tests/RegexTests/ParseTests.swift | 2 +- Tests/RegexTests/SyntaxOptionsTests.swift | 2 +- 74 files changed, 140 insertions(+), 129 deletions(-) create mode 100644 Sources/RegexBuilder/CMakeLists.txt delete mode 100644 Sources/_MatchingEngine/CMakeLists.txt create mode 100644 Sources/_RegexParser/CMakeLists.txt rename Sources/{_MatchingEngine => _RegexParser}/Regex/AST/AST.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/AST/ASTAction.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/AST/ASTProtocols.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/AST/Atom.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/AST/Conditional.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/AST/CustomCharClass.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/AST/Group.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/AST/MatchingOptions.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/AST/Quantification.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/Parse/CaptureStructure.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/Parse/CharacterPropertyClassification.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/Parse/DelimiterLexing.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/Parse/Diagnostics.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/Parse/LexicalAnalysis.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/Parse/Mocking.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/Parse/Parse.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/Parse/Source.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/Parse/SourceLocation.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/Parse/SyntaxOptions.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/Printing/DumpAST.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/Printing/PrettyPrinter.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/Printing/PrintAsCanonical.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/Printing/RenderRanges.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Regex/TreeProtocols.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Utility/AllScalars.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Utility/Errors.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Utility/Misc.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Utility/MissingUnicode.swift (100%) rename Sources/{_MatchingEngine => _RegexParser}/Utility/TypeConstruction.swift (100%) delete mode 100644 Sources/_Unicode/CMakeLists.txt diff --git a/Package.swift b/Package.swift index 71641ae28..e95d98b67 100644 --- a/Package.swift +++ b/Package.swift @@ -14,8 +14,8 @@ let package = Package( name: "Prototypes", targets: ["Prototypes"]), .library( - name: "_MatchingEngine", - targets: ["_MatchingEngine"]), + name: "_RegexParser", + targets: ["_RegexParser"]), .executable( name: "VariadicsGenerator", targets: ["VariadicsGenerator"]) @@ -27,7 +27,7 @@ let package = Package( // Targets are the basic building blocks of a package. A target can define a module or a test suite. // Targets can depend on other targets in this package, and on products in packages which this package depends on. .target( - name: "_MatchingEngine", + name: "_RegexParser", dependencies: [], swiftSettings: [ .unsafeFlags(["-enable-library-evolution"]) @@ -35,19 +35,19 @@ let package = Package( .testTarget( name: "MatchingEngineTests", dependencies: [ - "_MatchingEngine", "_StringProcessing"]), + "_RegexParser", "_StringProcessing"]), .target( name: "_CUnicode", dependencies: []), .target( name: "_StringProcessing", - dependencies: ["_MatchingEngine", "_CUnicode"], + dependencies: ["_RegexParser", "_CUnicode"], swiftSettings: [ .unsafeFlags(["-enable-library-evolution"]), ]), .target( name: "RegexBuilder", - dependencies: ["_StringProcessing", "_MatchingEngine"], + dependencies: ["_StringProcessing", "_RegexParser"], swiftSettings: [ .unsafeFlags(["-enable-library-evolution"]), .unsafeFlags(["-Xfrontend", "-enable-experimental-pairwise-build-block"]) @@ -63,7 +63,7 @@ let package = Package( ]), .target( name: "Prototypes", - dependencies: ["_MatchingEngine", "_StringProcessing"]), + dependencies: ["_RegexParser", "_StringProcessing"]), // MARK: Scripts .executableTarget( @@ -75,14 +75,14 @@ let package = Package( name: "PatternConverter", dependencies: [ .product(name: "ArgumentParser", package: "swift-argument-parser"), - "_MatchingEngine", + "_RegexParser", "_StringProcessing" ]), // MARK: Exercises .target( name: "Exercises", - dependencies: ["_MatchingEngine", "Prototypes", "_StringProcessing", "RegexBuilder"], + dependencies: ["_RegexParser", "Prototypes", "_StringProcessing", "RegexBuilder"], swiftSettings: [ .unsafeFlags(["-Xfrontend", "-enable-experimental-pairwise-build-block"]) ]), diff --git a/README.md b/README.md index 69c545243..e8a6e387e 100644 --- a/README.md +++ b/README.md @@ -12,13 +12,13 @@ See [Declarative String Processing Overview][decl-string] ## Integration with Swift -`_MatchingEngine`, `_CUnicode` and `_StringProcessing` are specially integrated modules that are built as part of apple/swift. +`_RegexParser` and `_StringProcessing` are specially integrated modules that are built as part of apple/swift. -Specifically, `_MatchingEngine` contains the parser for regular expression literals and is built both as part of the compiler and as a core library. `_CUnicode` and `_StringProcessing` are built together as a core library named `_StringProcessing`. +Specifically, `_RegexParser` contains the parser for regular expression literals and is built both as part of the compiler and as a core library. `_CUnicode` and `_StringProcessing` are built together as a core library named `_StringProcessing`. | Module | Swift toolchain component | | ------------------- | ------------------------------------------------------------------------------------ | -| `_MatchingEngine` | `SwiftCompilerSources/Sources/ExperimentalRegex` and `stdlib/public/_MatchingEngine` | +| `_RegexParser` | `SwiftCompilerSources/Sources/_RegexParser` and `stdlib/public/_RegexParser` | | `_CUnicode` | `stdlib/public/_StringProcessing` | | `_StringProcessing` | `stdlib/public/_StringProcessing` | @@ -65,10 +65,9 @@ To integrate the latest changes in apple/swift-experimental-string-processing to ### Development notes -Compiler integration can be tricky. Use special caution when developing `_MatchingEngine`, `_CUnicode` and `_StringProcessing` modules. +Compiler integration can be tricky. Use special caution when developing `_RegexParser` and `_StringProcessing` modules. - Do not change the names of these modules without due approval from compiler and infrastructure teams. - Do not modify the existing ABI (e.g. C API, serialization format) between the regular expression parser and the Swift compiler unless absolutely necessary. - Always minimize the number of lockstep integrations, i.e. when apple/swift-experimental-string-processing and apple/swift have to change together. Whenever possible, introduce new API first, migrate Swift compiler onto it, and then deprecate old API. Use versioning if helpful. - In `_StringProcessing`, do not write fully qualified references to symbols in `_CUnicode`, and always wrap `import _CUnicode` in a `#if canImport(_CUnicode)`. This is because `_CUnicode` is built as part of `_StringProcessing` with CMake. -- In `_MatchingEngine`, do not write fully qualified references to `_MatchingEngine` itself. This is because `_MatchingEngine` is built as `ExperimentalRegex` in `SwiftCompilerSources/` with CMake. diff --git a/Sources/CMakeLists.txt b/Sources/CMakeLists.txt index 19feadbd9..7b4e5e3ed 100644 --- a/Sources/CMakeLists.txt +++ b/Sources/CMakeLists.txt @@ -1,6 +1,6 @@ -add_subdirectory(_Unicode) -add_subdirectory(_MatchingEngine) +add_subdirectory(RegexBuilder) +add_subdirectory(_RegexParser) add_subdirectory(_StringProcessing) add_subdirectory(Prototypes) add_subdirectory(VariadicsGenerator) diff --git a/Sources/PatternConverter/PatternConverter.swift b/Sources/PatternConverter/PatternConverter.swift index 32a4bd8e9..ff47e4be2 100644 --- a/Sources/PatternConverter/PatternConverter.swift +++ b/Sources/PatternConverter/PatternConverter.swift @@ -12,7 +12,7 @@ // swift run PatternConverter import ArgumentParser -import _MatchingEngine +import _RegexParser import _StringProcessing @main @@ -52,7 +52,7 @@ struct PatternConverter: ParsableCommand { let delim = experimentalSyntax ? "|" : "/" print("Converting '\(delim)\(regex)\(delim)'") - let ast = try _MatchingEngine.parse( + let ast = try _RegexParser.parse( regex, experimentalSyntax ? .experimental : .traditional) diff --git a/Sources/Prototypes/CMakeLists.txt b/Sources/Prototypes/CMakeLists.txt index 60768f5a3..f9532c54d 100644 --- a/Sources/Prototypes/CMakeLists.txt +++ b/Sources/Prototypes/CMakeLists.txt @@ -15,4 +15,4 @@ add_library(Prototypes TourOfTypes/CharacterClass.swift TourOfTypes/Literal.swift) target_link_libraries(Prototypes PUBLIC - _MatchingEngine) + _RegexParser) diff --git a/Sources/Prototypes/Combinators/Combinators.swift b/Sources/Prototypes/Combinators/Combinators.swift index eddef70b0..448110c95 100644 --- a/Sources/Prototypes/Combinators/Combinators.swift +++ b/Sources/Prototypes/Combinators/Combinators.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser /* diff --git a/Sources/RegexBuilder/Anchor.swift b/Sources/RegexBuilder/Anchor.swift index ea2dde382..a32d4a8a9 100644 --- a/Sources/RegexBuilder/Anchor.swift +++ b/Sources/RegexBuilder/Anchor.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser @_spi(RegexBuilder) import _StringProcessing public struct Anchor { diff --git a/Sources/RegexBuilder/CMakeLists.txt b/Sources/RegexBuilder/CMakeLists.txt new file mode 100644 index 000000000..c2a0d9738 --- /dev/null +++ b/Sources/RegexBuilder/CMakeLists.txt @@ -0,0 +1,10 @@ + +add_library(RegexBuilder + Anchor.swift + Builder.swift + DSL.swift + Match.swift + Variadics.swift) +target_compile_options(RegexBuilder PRIVATE + -enable-library-evolution + -Xfrontend -enable-experimental-pairwise-build-block) diff --git a/Sources/RegexBuilder/DSL.swift b/Sources/RegexBuilder/DSL.swift index 9107a9719..5efbaa4d9 100644 --- a/Sources/RegexBuilder/DSL.swift +++ b/Sources/RegexBuilder/DSL.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser @_spi(RegexBuilder) import _StringProcessing extension Regex { diff --git a/Sources/RegexBuilder/Variadics.swift b/Sources/RegexBuilder/Variadics.swift index 3cf154627..f59b1f13a 100644 --- a/Sources/RegexBuilder/Variadics.swift +++ b/Sources/RegexBuilder/Variadics.swift @@ -11,7 +11,7 @@ // BEGIN AUTO-GENERATED CONTENT -import _MatchingEngine +import _RegexParser @_spi(RegexBuilder) import _StringProcessing extension RegexComponentBuilder { diff --git a/Sources/VariadicsGenerator/VariadicsGenerator.swift b/Sources/VariadicsGenerator/VariadicsGenerator.swift index e03f81831..ff406e9fb 100644 --- a/Sources/VariadicsGenerator/VariadicsGenerator.swift +++ b/Sources/VariadicsGenerator/VariadicsGenerator.swift @@ -120,7 +120,7 @@ struct VariadicsGenerator: ParsableCommand { // BEGIN AUTO-GENERATED CONTENT - import _MatchingEngine + import _RegexParser @_spi(RegexBuilder) import _StringProcessing diff --git a/Sources/_MatchingEngine/CMakeLists.txt b/Sources/_MatchingEngine/CMakeLists.txt deleted file mode 100644 index f7cb97ce3..000000000 --- a/Sources/_MatchingEngine/CMakeLists.txt +++ /dev/null @@ -1,46 +0,0 @@ - -add_library(_MatchingEngine - Engine/Backtracking.swift - Engine/Builder.swift - Engine/Capture.swift - Engine/Consume.swift - Engine/Engine.swift - Engine/InstPayload.swift - Engine/Instruction.swift - Engine/Processor.swift - Engine/Program.swift - Engine/Registers.swift - Engine/Tracing.swift - Regex/AST/AST.swift - Regex/AST/ASTAction.swift - Regex/AST/ASTProtocols.swift - Regex/AST/Atom.swift - Regex/AST/Conditional.swift - Regex/AST/CustomCharClass.swift - Regex/AST/Group.swift - Regex/AST/MatchingOptions.swift - Regex/AST/Quantification.swift - Regex/Parse/CaptureStructure.swift - Regex/Parse/CharacterPropertyClassification.swift - Regex/Parse/Diagnostics.swift - Regex/Parse/LexicalAnalysis.swift - Regex/Parse/Mocking.swift - Regex/Parse/Parse.swift - Regex/Parse/Source.swift - Regex/Parse/SourceLocation.swift - Regex/Parse/SyntaxOptions.swift - Regex/Printing/DumpAST.swift - Regex/Printing/PrettyPrinter.swift - Regex/Printing/PrintAsCanonical.swift - Regex/Printing/PrintAsPattern.swift - Regex/Printing/RenderRanges.swift - Utility/AllScalars.swift - Utility/Formatting.swift - Utility/Misc.swift - Utility/MissingUnicode.swift - Utility/Protocols.swift - Utility/TypeConstruction.swift - Utility/TypedIndex.swift - Utility/TypedInt.swift) -target_compile_options(_MatchingEngine PRIVATE - -enable-library-evolution) diff --git a/Sources/_RegexParser/CMakeLists.txt b/Sources/_RegexParser/CMakeLists.txt new file mode 100644 index 000000000..48856b453 --- /dev/null +++ b/Sources/_RegexParser/CMakeLists.txt @@ -0,0 +1,28 @@ + +add_library(_RegexParser + AST/AST.swift + AST/ASTAction.swift + AST/ASTProtocols.swift + AST/Atom.swift + AST/Conditional.swift + AST/CustomCharClass.swift + AST/Group.swift + AST/MatchingOptions.swift + AST/Quantification.swift + Parse/CaptureStructure.swift + Parse/CharacterPropertyClassification.swift + Parse/DelimiterLexing.swift + Parse/Diagnostics.swift + Parse/LexicalAnalysis.swift + Parse/Mocking.swift + Parse/Parse.swift + Parse/Source.swift + Parse/SourceLocation.swift + Parse/SyntaxOptions.swift + Printing/DumpAST.swift + Printing/PrettyPrinter.swift + Printing/PrintAsCanonical.swift + Printing/RenderRanges.swift + TreeProtocols.swift) +target_compile_options(_RegexParser PRIVATE + -enable-library-evolution) diff --git a/Sources/_MatchingEngine/Regex/AST/AST.swift b/Sources/_RegexParser/Regex/AST/AST.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/AST/AST.swift rename to Sources/_RegexParser/Regex/AST/AST.swift diff --git a/Sources/_MatchingEngine/Regex/AST/ASTAction.swift b/Sources/_RegexParser/Regex/AST/ASTAction.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/AST/ASTAction.swift rename to Sources/_RegexParser/Regex/AST/ASTAction.swift diff --git a/Sources/_MatchingEngine/Regex/AST/ASTProtocols.swift b/Sources/_RegexParser/Regex/AST/ASTProtocols.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/AST/ASTProtocols.swift rename to Sources/_RegexParser/Regex/AST/ASTProtocols.swift diff --git a/Sources/_MatchingEngine/Regex/AST/Atom.swift b/Sources/_RegexParser/Regex/AST/Atom.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/AST/Atom.swift rename to Sources/_RegexParser/Regex/AST/Atom.swift diff --git a/Sources/_MatchingEngine/Regex/AST/Conditional.swift b/Sources/_RegexParser/Regex/AST/Conditional.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/AST/Conditional.swift rename to Sources/_RegexParser/Regex/AST/Conditional.swift diff --git a/Sources/_MatchingEngine/Regex/AST/CustomCharClass.swift b/Sources/_RegexParser/Regex/AST/CustomCharClass.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/AST/CustomCharClass.swift rename to Sources/_RegexParser/Regex/AST/CustomCharClass.swift diff --git a/Sources/_MatchingEngine/Regex/AST/Group.swift b/Sources/_RegexParser/Regex/AST/Group.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/AST/Group.swift rename to Sources/_RegexParser/Regex/AST/Group.swift diff --git a/Sources/_MatchingEngine/Regex/AST/MatchingOptions.swift b/Sources/_RegexParser/Regex/AST/MatchingOptions.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/AST/MatchingOptions.swift rename to Sources/_RegexParser/Regex/AST/MatchingOptions.swift diff --git a/Sources/_MatchingEngine/Regex/AST/Quantification.swift b/Sources/_RegexParser/Regex/AST/Quantification.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/AST/Quantification.swift rename to Sources/_RegexParser/Regex/AST/Quantification.swift diff --git a/Sources/_MatchingEngine/Regex/Parse/CaptureStructure.swift b/Sources/_RegexParser/Regex/Parse/CaptureStructure.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/Parse/CaptureStructure.swift rename to Sources/_RegexParser/Regex/Parse/CaptureStructure.swift diff --git a/Sources/_MatchingEngine/Regex/Parse/CharacterPropertyClassification.swift b/Sources/_RegexParser/Regex/Parse/CharacterPropertyClassification.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/Parse/CharacterPropertyClassification.swift rename to Sources/_RegexParser/Regex/Parse/CharacterPropertyClassification.swift diff --git a/Sources/_MatchingEngine/Regex/Parse/DelimiterLexing.swift b/Sources/_RegexParser/Regex/Parse/DelimiterLexing.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/Parse/DelimiterLexing.swift rename to Sources/_RegexParser/Regex/Parse/DelimiterLexing.swift diff --git a/Sources/_MatchingEngine/Regex/Parse/Diagnostics.swift b/Sources/_RegexParser/Regex/Parse/Diagnostics.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/Parse/Diagnostics.swift rename to Sources/_RegexParser/Regex/Parse/Diagnostics.swift diff --git a/Sources/_MatchingEngine/Regex/Parse/LexicalAnalysis.swift b/Sources/_RegexParser/Regex/Parse/LexicalAnalysis.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/Parse/LexicalAnalysis.swift rename to Sources/_RegexParser/Regex/Parse/LexicalAnalysis.swift diff --git a/Sources/_MatchingEngine/Regex/Parse/Mocking.swift b/Sources/_RegexParser/Regex/Parse/Mocking.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/Parse/Mocking.swift rename to Sources/_RegexParser/Regex/Parse/Mocking.swift diff --git a/Sources/_MatchingEngine/Regex/Parse/Parse.swift b/Sources/_RegexParser/Regex/Parse/Parse.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/Parse/Parse.swift rename to Sources/_RegexParser/Regex/Parse/Parse.swift diff --git a/Sources/_MatchingEngine/Regex/Parse/Source.swift b/Sources/_RegexParser/Regex/Parse/Source.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/Parse/Source.swift rename to Sources/_RegexParser/Regex/Parse/Source.swift diff --git a/Sources/_MatchingEngine/Regex/Parse/SourceLocation.swift b/Sources/_RegexParser/Regex/Parse/SourceLocation.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/Parse/SourceLocation.swift rename to Sources/_RegexParser/Regex/Parse/SourceLocation.swift diff --git a/Sources/_MatchingEngine/Regex/Parse/SyntaxOptions.swift b/Sources/_RegexParser/Regex/Parse/SyntaxOptions.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/Parse/SyntaxOptions.swift rename to Sources/_RegexParser/Regex/Parse/SyntaxOptions.swift diff --git a/Sources/_MatchingEngine/Regex/Printing/DumpAST.swift b/Sources/_RegexParser/Regex/Printing/DumpAST.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/Printing/DumpAST.swift rename to Sources/_RegexParser/Regex/Printing/DumpAST.swift diff --git a/Sources/_MatchingEngine/Regex/Printing/PrettyPrinter.swift b/Sources/_RegexParser/Regex/Printing/PrettyPrinter.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/Printing/PrettyPrinter.swift rename to Sources/_RegexParser/Regex/Printing/PrettyPrinter.swift diff --git a/Sources/_MatchingEngine/Regex/Printing/PrintAsCanonical.swift b/Sources/_RegexParser/Regex/Printing/PrintAsCanonical.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/Printing/PrintAsCanonical.swift rename to Sources/_RegexParser/Regex/Printing/PrintAsCanonical.swift diff --git a/Sources/_MatchingEngine/Regex/Printing/RenderRanges.swift b/Sources/_RegexParser/Regex/Printing/RenderRanges.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/Printing/RenderRanges.swift rename to Sources/_RegexParser/Regex/Printing/RenderRanges.swift diff --git a/Sources/_MatchingEngine/Regex/TreeProtocols.swift b/Sources/_RegexParser/Regex/TreeProtocols.swift similarity index 100% rename from Sources/_MatchingEngine/Regex/TreeProtocols.swift rename to Sources/_RegexParser/Regex/TreeProtocols.swift diff --git a/Sources/_MatchingEngine/Utility/AllScalars.swift b/Sources/_RegexParser/Utility/AllScalars.swift similarity index 100% rename from Sources/_MatchingEngine/Utility/AllScalars.swift rename to Sources/_RegexParser/Utility/AllScalars.swift diff --git a/Sources/_MatchingEngine/Utility/Errors.swift b/Sources/_RegexParser/Utility/Errors.swift similarity index 100% rename from Sources/_MatchingEngine/Utility/Errors.swift rename to Sources/_RegexParser/Utility/Errors.swift diff --git a/Sources/_MatchingEngine/Utility/Misc.swift b/Sources/_RegexParser/Utility/Misc.swift similarity index 100% rename from Sources/_MatchingEngine/Utility/Misc.swift rename to Sources/_RegexParser/Utility/Misc.swift diff --git a/Sources/_MatchingEngine/Utility/MissingUnicode.swift b/Sources/_RegexParser/Utility/MissingUnicode.swift similarity index 100% rename from Sources/_MatchingEngine/Utility/MissingUnicode.swift rename to Sources/_RegexParser/Utility/MissingUnicode.swift diff --git a/Sources/_MatchingEngine/Utility/TypeConstruction.swift b/Sources/_RegexParser/Utility/TypeConstruction.swift similarity index 100% rename from Sources/_MatchingEngine/Utility/TypeConstruction.swift rename to Sources/_RegexParser/Utility/TypeConstruction.swift diff --git a/Sources/_StringProcessing/ByteCodeGen.swift b/Sources/_StringProcessing/ByteCodeGen.swift index c9599b925..d03a1e382 100644 --- a/Sources/_StringProcessing/ByteCodeGen.swift +++ b/Sources/_StringProcessing/ByteCodeGen.swift @@ -1,4 +1,4 @@ -import _MatchingEngine +import _RegexParser extension Compiler { struct ByteCodeGen { diff --git a/Sources/_StringProcessing/CMakeLists.txt b/Sources/_StringProcessing/CMakeLists.txt index c20dcc240..963b6074c 100644 --- a/Sources/_StringProcessing/CMakeLists.txt +++ b/Sources/_StringProcessing/CMakeLists.txt @@ -12,6 +12,12 @@ add_library(_StringProcessing Algorithms/Consumers/ManyConsumer.swift Algorithms/Consumers/PredicateConsumer.swift Algorithms/Consumers/RegexConsumer.swift + Algorithms/Matching/FirstMatch.swift + Algorithms/Matching/Matches.swift + Algorithms/Matching/MatchingCollectionConsumer.swift + Algorithms/Matching/MatchingCollectionSearcher.swift + Algorithms/Matching/MatchReplace.swift + Algorithms/Matching/MatchResult.swift Algorithms/Searchers/CollectionSearcher.swift Algorithms/Searchers/ConsumerSearcher.swift Algorithms/Searchers/NaivePatternSearcher.swift @@ -19,24 +25,54 @@ add_library(_StringProcessing Algorithms/Searchers/PredicateSearcher.swift Algorithms/Searchers/TwoWaySearcher.swift Algorithms/Searchers/ZSearcher.swift - ASTBuilder.swift + Engine/Backtracking.swift + Engine/Consume.swift + Engine/Engine.swift + Engine/InstPayload.swift + Engine/Instruction.swift + Engine/MEBuilder.swift + Engine/MECapture.swift + Engine/MEProgram.swift + Engine/Processor.swift + Engine/Register.swift + Engine/Structuralize.swift + Engine/Tracing.swift + Regex/AnyRegexOutput.swift + Regex/ASTConversion.swift + Regex/Core.swift + Regex/DSLConsumers.swift + Regex/DSLTree.swift + Regex/Match.swift + Regex/Options.swift + Unicode/CaseConversion.swift + Unicode/CharacterProps.swift + Unicode/Comparison.swift + Unicode/Data.swift + Unicode/Decoding.swift + Unicode/Encodings.swift + Unicode/Formatting.swift + Unicode/Graphemes.swift + Unicode/NecessaryEvils.swift + Unicode/Normalization.swift + Unicode/NumberParsing.swift + Unicode/ScalarProps.swift + Unicode/Transcoding.swift + Unicode/UCD.swift + Unicode/Validation.swift + Utility/ASTBuilder.swift + Utility/Protocols.swift + Utility/Traced.swift + Utility/TypedIndex.swift + Utility/TypedInt.swift + ByteCodeGen.swift Capture.swift CharacterClass.swift Compiler.swift ConsumerInterface.swift Executor.swift - Legacy/HareVM.swift - Legacy/LegacyCompile.swift - Legacy/RECode.swift - Legacy/TortoiseVM.swift - Legacy/VirtualMachine.swift - RegexDSL/Builder.swift - RegexDSL/Concatenation.swift - RegexDSL/Core.swift - RegexDSL/DSL.swift - RegexDSL/DSLCapture.swift - RegexDSL/DynamicCaptures.swift) + MatchingOptions.swift + PrintAsPattern.swift) target_compile_options(_StringProcessing PRIVATE -enable-library-evolution) target_link_libraries(_StringProcessing PUBLIC - _MatchingEngine) + _RegexParser) diff --git a/Sources/_StringProcessing/Capture.swift b/Sources/_StringProcessing/Capture.swift index 55e74684c..f7dff424e 100644 --- a/Sources/_StringProcessing/Capture.swift +++ b/Sources/_StringProcessing/Capture.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser /// A structured capture struct StructuredCapture { diff --git a/Sources/_StringProcessing/CharacterClass.swift b/Sources/_StringProcessing/CharacterClass.swift index 7989c0943..0b95e08b4 100644 --- a/Sources/_StringProcessing/CharacterClass.swift +++ b/Sources/_StringProcessing/CharacterClass.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser // NOTE: This is a model type. We want to be able to get one from // an AST, but this isn't a natural thing to produce in the context diff --git a/Sources/_StringProcessing/Compiler.swift b/Sources/_StringProcessing/Compiler.swift index 1d72a8d27..90192bdaf 100644 --- a/Sources/_StringProcessing/Compiler.swift +++ b/Sources/_StringProcessing/Compiler.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser class Compiler { let tree: DSLTree diff --git a/Sources/_StringProcessing/ConsumerInterface.swift b/Sources/_StringProcessing/ConsumerInterface.swift index 8bddb3a87..0a2d93ff1 100644 --- a/Sources/_StringProcessing/ConsumerInterface.swift +++ b/Sources/_StringProcessing/ConsumerInterface.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser extension DSLTree.Node { /// Attempt to generate a consumer from this AST node diff --git a/Sources/_StringProcessing/Engine/MEBuilder.swift b/Sources/_StringProcessing/Engine/MEBuilder.swift index 78171a001..2b849874b 100644 --- a/Sources/_StringProcessing/Engine/MEBuilder.swift +++ b/Sources/_StringProcessing/Engine/MEBuilder.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine // For errors +import _RegexParser // For errors extension MEProgram where Input.Element: Hashable { struct Builder { diff --git a/Sources/_StringProcessing/Engine/MECapture.swift b/Sources/_StringProcessing/Engine/MECapture.swift index bac632e9e..301212736 100644 --- a/Sources/_StringProcessing/Engine/MECapture.swift +++ b/Sources/_StringProcessing/Engine/MECapture.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser /* diff --git a/Sources/_StringProcessing/Engine/MEProgram.swift b/Sources/_StringProcessing/Engine/MEProgram.swift index 1e58ddf54..a31134cc9 100644 --- a/Sources/_StringProcessing/Engine/MEProgram.swift +++ b/Sources/_StringProcessing/Engine/MEProgram.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser struct MEProgram where Input.Element: Equatable { typealias ConsumeFunction = (Input, Range) -> Input.Index? diff --git a/Sources/_StringProcessing/Engine/Registers.swift b/Sources/_StringProcessing/Engine/Registers.swift index 2cc3cddf5..a2a5be104 100644 --- a/Sources/_StringProcessing/Engine/Registers.swift +++ b/Sources/_StringProcessing/Engine/Registers.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser struct SentinelValue: Hashable, CustomStringConvertible { var description: String { "" } diff --git a/Sources/_StringProcessing/Engine/Structuralize.swift b/Sources/_StringProcessing/Engine/Structuralize.swift index 30e7b9efe..02a03c09c 100644 --- a/Sources/_StringProcessing/Engine/Structuralize.swift +++ b/Sources/_StringProcessing/Engine/Structuralize.swift @@ -1,4 +1,4 @@ -import _MatchingEngine +import _RegexParser extension CaptureStructure { var optionalCount: Int { diff --git a/Sources/_StringProcessing/Executor.swift b/Sources/_StringProcessing/Executor.swift index 15c1fe434..148ddf468 100644 --- a/Sources/_StringProcessing/Executor.swift +++ b/Sources/_StringProcessing/Executor.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser struct Executor { // TODO: consider let, for now lets us toggle tracing diff --git a/Sources/_StringProcessing/MatchingOptions.swift b/Sources/_StringProcessing/MatchingOptions.swift index 073c78b2f..899891184 100644 --- a/Sources/_StringProcessing/MatchingOptions.swift +++ b/Sources/_StringProcessing/MatchingOptions.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser /// A type that represents the current state of regex matching options, with /// stack-based scoping. diff --git a/Sources/_StringProcessing/PrintAsPattern.swift b/Sources/_StringProcessing/PrintAsPattern.swift index f30d8d54b..0cf16ab05 100644 --- a/Sources/_StringProcessing/PrintAsPattern.swift +++ b/Sources/_StringProcessing/PrintAsPattern.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser // TODO: Add an expansion level, both from top to bottom. // After `printAsCanonical` is fleshed out, these two diff --git a/Sources/_StringProcessing/Regex/ASTConversion.swift b/Sources/_StringProcessing/Regex/ASTConversion.swift index 72dd11cdf..5336a1892 100644 --- a/Sources/_StringProcessing/Regex/ASTConversion.swift +++ b/Sources/_StringProcessing/Regex/ASTConversion.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser extension AST { var dslTree: DSLTree { diff --git a/Sources/_StringProcessing/Regex/AnyRegexOutput.swift b/Sources/_StringProcessing/Regex/AnyRegexOutput.swift index b1d9bfafa..2f99470fc 100644 --- a/Sources/_StringProcessing/Regex/AnyRegexOutput.swift +++ b/Sources/_StringProcessing/Regex/AnyRegexOutput.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser extension Regex where Output == AnyRegexOutput { public init(_ pattern: String) throws { diff --git a/Sources/_StringProcessing/Regex/Core.swift b/Sources/_StringProcessing/Regex/Core.swift index c6433ef3e..fb536b28a 100644 --- a/Sources/_StringProcessing/Regex/Core.swift +++ b/Sources/_StringProcessing/Regex/Core.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser /// A type that represents a regular expression. diff --git a/Sources/_StringProcessing/Regex/DSLTree.swift b/Sources/_StringProcessing/Regex/DSLTree.swift index e579828d2..bd3b37a3d 100644 --- a/Sources/_StringProcessing/Regex/DSLTree.swift +++ b/Sources/_StringProcessing/Regex/DSLTree.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser @_spi(RegexBuilder) public struct DSLTree { diff --git a/Sources/_StringProcessing/Regex/Options.swift b/Sources/_StringProcessing/Regex/Options.swift index 7876ae35c..04be79c6e 100644 --- a/Sources/_StringProcessing/Regex/Options.swift +++ b/Sources/_StringProcessing/Regex/Options.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -import _MatchingEngine +import _RegexParser extension RegexComponent { public func caseSensitive(_ isCaseSensitive: Bool) -> Regex { diff --git a/Sources/_StringProcessing/Utility/ASTBuilder.swift b/Sources/_StringProcessing/Utility/ASTBuilder.swift index bbc199d27..8a9af8111 100644 --- a/Sources/_StringProcessing/Utility/ASTBuilder.swift +++ b/Sources/_StringProcessing/Utility/ASTBuilder.swift @@ -25,7 +25,7 @@ AST. */ -import _MatchingEngine +import _RegexParser func alt(_ asts: [AST.Node]) -> AST.Node { return .alternation( diff --git a/Sources/_Unicode/CMakeLists.txt b/Sources/_Unicode/CMakeLists.txt deleted file mode 100644 index 7fdb44628..000000000 --- a/Sources/_Unicode/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ - -add_library(_Unicode - CaseConversion.swift - CharacterProps.swift - Comparison.swift - Decoding.swift - Encodings.swift - Formatting.swift - Graphemes.swift - NecessaryEvils.swift - Normaliation.swift - NumberParsing.swift - ScalarProps.swift - Transcoding.swift - UCD.swift - Validation.swift) diff --git a/Tests/MatchingEngineTests/UtilTests.swift b/Tests/MatchingEngineTests/UtilTests.swift index cb9e22e97..d0b2698a9 100644 --- a/Tests/MatchingEngineTests/UtilTests.swift +++ b/Tests/MatchingEngineTests/UtilTests.swift @@ -10,7 +10,7 @@ //===----------------------------------------------------------------------===// import XCTest -@testable import _MatchingEngine +@testable import _RegexParser class UtilTests: XCTestCase { func testTupleTypeConstruction() { diff --git a/Tests/PrototypesTests/CombinatorsTests.swift b/Tests/PrototypesTests/CombinatorsTests.swift index e34d0f832..bf82b65a2 100644 --- a/Tests/PrototypesTests/CombinatorsTests.swift +++ b/Tests/PrototypesTests/CombinatorsTests.swift @@ -11,7 +11,7 @@ import XCTest @testable import Combinators -import _MatchingEngine +import _RegexParser class CombinatorTests: XCTestCase { func testAdHoc() { diff --git a/Tests/PrototypesTests/PEGTests.swift b/Tests/PrototypesTests/PEGTests.swift index 0fac674f3..5d7516a50 100644 --- a/Tests/PrototypesTests/PEGTests.swift +++ b/Tests/PrototypesTests/PEGTests.swift @@ -11,7 +11,7 @@ import XCTest @testable import Prototypes -import _MatchingEngine +import _RegexParser // Make examples more sane. Need builder typealias Pattern = PEG.Pattern diff --git a/Tests/PrototypesTests/PTCaRetTests.swift b/Tests/PrototypesTests/PTCaRetTests.swift index 0e05e1231..752f13b39 100644 --- a/Tests/PrototypesTests/PTCaRetTests.swift +++ b/Tests/PrototypesTests/PTCaRetTests.swift @@ -11,7 +11,7 @@ import XCTest @testable import Prototypes -import _MatchingEngine +import _RegexParser enum Event: UInt64, Hashable { case authenticate = 0 diff --git a/Tests/RegexTests/CaptureTests.swift b/Tests/RegexTests/CaptureTests.swift index 258aea86d..7d4266071 100644 --- a/Tests/RegexTests/CaptureTests.swift +++ b/Tests/RegexTests/CaptureTests.swift @@ -11,7 +11,7 @@ import XCTest @testable @_spi(RegexBuilder) import _StringProcessing -import _MatchingEngine +import _RegexParser extension StructuredCapture { func formatStringCapture(input: String) -> String { diff --git a/Tests/RegexTests/CompileTests.swift b/Tests/RegexTests/CompileTests.swift index 63e48fa61..bc545d02e 100644 --- a/Tests/RegexTests/CompileTests.swift +++ b/Tests/RegexTests/CompileTests.swift @@ -10,7 +10,7 @@ //===----------------------------------------------------------------------===// -@testable import _MatchingEngine +@testable import _RegexParser @testable import _StringProcessing import XCTest diff --git a/Tests/RegexTests/DiagnosticTests.swift b/Tests/RegexTests/DiagnosticTests.swift index 3b86363cc..428020b80 100644 --- a/Tests/RegexTests/DiagnosticTests.swift +++ b/Tests/RegexTests/DiagnosticTests.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -@testable import _MatchingEngine +@testable import _RegexParser @testable import _StringProcessing import XCTest diff --git a/Tests/RegexTests/LexTests.swift b/Tests/RegexTests/LexTests.swift index 25ced92c2..c50191d05 100644 --- a/Tests/RegexTests/LexTests.swift +++ b/Tests/RegexTests/LexTests.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -@testable import _MatchingEngine +@testable import _RegexParser import XCTest @testable import _StringProcessing diff --git a/Tests/RegexTests/MatchTests.swift b/Tests/RegexTests/MatchTests.swift index 1d5b436ff..52db17aa7 100644 --- a/Tests/RegexTests/MatchTests.swift +++ b/Tests/RegexTests/MatchTests.swift @@ -10,7 +10,7 @@ //===----------------------------------------------------------------------===// import XCTest -@testable import _MatchingEngine +@testable import _RegexParser @testable import _StringProcessing struct MatchError: Error { diff --git a/Tests/RegexTests/ParseTests.swift b/Tests/RegexTests/ParseTests.swift index ced69bb9d..6e511767a 100644 --- a/Tests/RegexTests/ParseTests.swift +++ b/Tests/RegexTests/ParseTests.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -@testable import _MatchingEngine +@testable import _RegexParser import XCTest @testable import _StringProcessing diff --git a/Tests/RegexTests/SyntaxOptionsTests.swift b/Tests/RegexTests/SyntaxOptionsTests.swift index 881eb0cbc..13618488c 100644 --- a/Tests/RegexTests/SyntaxOptionsTests.swift +++ b/Tests/RegexTests/SyntaxOptionsTests.swift @@ -9,7 +9,7 @@ // //===----------------------------------------------------------------------===// -@testable import _MatchingEngine +@testable import _RegexParser @testable import _StringProcessing import XCTest