Skip to content

Instantly share code, notes, and snippets.

@santoshrajan
Created October 11, 2017 07:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save santoshrajan/8cb786802f37a352d148de0dda3505ae to your computer and use it in GitHub Desktop.
Save santoshrajan/8cb786802f37a352d148de0dda3505ae to your computer and use it in GitHub Desktop.
String Parser in Swift 4
import Foundation
typealias ParseResult = (output: Any, rest: Substring)?
func stringParser(input: Substring) -> ParseResult {
if input[input.startIndex] != "\"" {
return nil
}
var isEscape = true
func inspectChar(char: Character) -> Bool {
if char == "\"" && !isEscape {
return true
}
if char == "\\" {
isEscape = true
} else {
isEscape = false
}
return false
}
if let index = input.index(where: inspectChar) {
return (input[input.index(after: input.startIndex)...input.index(before: index)],
input[input.index(after: index)...])
}
return nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment