|
9 | 9 | // |
10 | 10 | //===----------------------------------------------------------------------===// |
11 | 11 |
|
12 | | -struct Delimiter: Hashable { |
| 12 | +public struct Delimiter: Hashable { |
13 | 13 | let kind: Kind |
14 | 14 | let poundCount: Int |
15 | 15 |
|
@@ -74,26 +74,26 @@ extension Delimiter { |
74 | 74 | } |
75 | 75 | } |
76 | 76 |
|
77 | | -struct DelimiterLexError: Error, CustomStringConvertible { |
78 | | - enum Kind: Hashable { |
| 77 | +public struct DelimiterLexError: Error, CustomStringConvertible { |
| 78 | + public enum Kind: Hashable { |
79 | 79 | case unterminated |
80 | 80 | case invalidUTF8 // TODO: better range reporting |
81 | 81 | case unknownDelimiter |
82 | 82 | case unprintableASCII |
83 | 83 | case multilineClosingNotOnNewline |
84 | 84 | } |
85 | 85 |
|
86 | | - var kind: Kind |
| 86 | + public var kind: Kind |
87 | 87 |
|
88 | 88 | /// The pointer at which to resume lexing. |
89 | | - var resumePtr: UnsafeRawPointer |
| 89 | + public var resumePtr: UnsafeRawPointer |
90 | 90 |
|
91 | 91 | init(_ kind: Kind, resumeAt resumePtr: UnsafeRawPointer) { |
92 | 92 | self.kind = kind |
93 | 93 | self.resumePtr = resumePtr |
94 | 94 | } |
95 | 95 |
|
96 | | - var description: String { |
| 96 | + public var description: String { |
97 | 97 | switch kind { |
98 | 98 | case .unterminated: return "unterminated regex literal" |
99 | 99 | case .invalidUTF8: return "invalid UTF-8 found in source file" |
@@ -462,3 +462,9 @@ func lexRegex( |
462 | 462 | var lexer = DelimiterLexer(start: start, end: end, delimiters: delimiters) |
463 | 463 | return try lexer.lex() |
464 | 464 | } |
| 465 | + |
| 466 | +public func lexRegex( |
| 467 | + start: UnsafeRawPointer, end: UnsafeRawPointer |
| 468 | +) throws -> (contents: String, Delimiter, end: UnsafeRawPointer) { |
| 469 | + return try lexRegex(start: start, end: end, delimiters: Delimiter.enabledDelimiters) |
| 470 | +} |
0 commit comments