diff --git a/runtime/Swift/Sources/Antlr4/atn/LexerATNSimulator.swift b/runtime/Swift/Sources/Antlr4/atn/LexerATNSimulator.swift index a057aab44..9875fb3aa 100644 --- a/runtime/Swift/Sources/Antlr4/atn/LexerATNSimulator.swift +++ b/runtime/Swift/Sources/Antlr4/atn/LexerATNSimulator.swift @@ -114,24 +114,23 @@ open class LexerATNSimulator: ATNSimulator { open func match(_ input: CharStream, _ mode: Int) throws -> Int { LexerATNSimulator.match_calls += 1 + self.mode = mode var mark = input.mark() - do { - self.startIndex = input.index() - self.prevAccept.reset() - var dfa = decisionToDFA[mode] - defer { - try! input.release(mark) - } - - if dfa.s0 == nil { - return try matchATN(input) - } else { - return try execATN(input, dfa.s0!) - } + defer { + try! input.release(mark) } + self.startIndex = input.index() + self.prevAccept.reset() + let dfa = decisionToDFA[mode] + if let s0 = dfa.s0 { + return try execATN(input, s0) + } + else { + return try matchATN(input) + } } override