replaced Lexeme protocol with Token

This commit is contained in:
Ilya Puchka
2017-12-26 15:28:46 +01:00
parent 218822fcb0
commit 8d68edd725
7 changed files with 35 additions and 54 deletions

View File

@@ -56,7 +56,7 @@ struct Lexer {
return tokens
}
func lexemeLine(_ lexeme: Lexeme) -> (content: String, number: Int, offset: String.IndexDistance) {
func tokenLine(_ token: Token) -> (content: String, number: Int, offset: String.IndexDistance) {
var lineNumber: Int = 0
var offset = 0
var lineContent = ""
@@ -64,9 +64,9 @@ struct Lexer {
for line in templateString.components(separatedBy: CharacterSet.newlines) {
lineNumber += 1
lineContent = line
if let rangeOfLine = templateString.range(of: line), rangeOfLine.contains(lexeme.range.lowerBound) {
if let rangeOfLine = templateString.range(of: line), rangeOfLine.contains(token.range.lowerBound) {
offset = templateString.distance(from: rangeOfLine.lowerBound, to:
lexeme.range.lowerBound)
token.range.lowerBound)
break
}
}
@@ -76,11 +76,6 @@ struct Lexer {
}
protocol Lexeme {
var contents: String { get }
var range: Range<String.Index> { get }
}
class Scanner {
let originalContent: String
var content: String
@@ -111,7 +106,7 @@ class Scanner {
let result = content.substring(to: index)
if returnUntil {
range = range.lowerBound..<originalContent.index(range.upperBound, offsetBy: until.length)
range = range.lowerBound..<originalContent.index(range.upperBound, offsetBy: until.characters.count)
content = substring.substring(from: until.endIndex)
return result + until
}