Slide 3
Slide 3 text
// Swift 4.2-5.0 (swiftc runner)
public enum SyntaxTreeParser {
public static func parse(_ url: URL, swiftcURL: URL? = nil) throws
-> SourceFileSyntax {
let swiftcRunner = try SwiftcRunner(sourceFile: url, swiftcURL: swiftcURL)
let result = try swiftcRunner.invoke()
let deserializer = SyntaxTreeDeserializer()
return try deserializer.deserialize(result.stdoutData,
serializationFormat: .json)
}
}
struct SwiftcRunner {
func invoke() throws -> ProcessResult {
var arguments = ["-frontend", "-emit-syntax"]
arguments.append(...)
return run(swiftcURL, arguments: arguments)
}
}