Straighten out Characters and CharacterSets

This commit is contained in:
Eryn Wells 2016-12-19 08:57:59 -08:00
parent 35a5cf1dc8
commit 59e55a39e4
3 changed files with 66 additions and 34 deletions

View file

@ -93,7 +93,7 @@ extension Lexer: Sequence, IteratorProtocol {
toState(.Identifier)
}
case .Identifier:
if c.isIdentifierSubsequent
break
case .Emit:
// Nothing to do for this state
break
@ -103,36 +103,3 @@ extension Lexer: Sequence, IteratorProtocol {
return token
}
}
extension Character {
static let identifierInitialSet: CharacterSet = {
let letters = CharacterSet.letters
let extras = CharacterSet(charactersIn: "!$%&*/:<=>?~_^")
let initials = letters.union(extras)
return initials
}()
static let identifierSubsequentSet: CharacterSet = {
let initials = Character.identifierInitialSet
let digits = CharacterSet.decimalDigits
let extras = CharacterSet(charactersIn: ".+-")
let subsequents = initials.union(digits).union(extras)
return subsequents
}()
var isLeftParen: Bool {
return self == "("
}
var isRightParen: Bool {
return self == ")"
}
var isIdentifierInitial: Bool {
return false
}
var isIdentifierSubsequent: Bool {
Character.identifierSubsequentSet.contains(<#T##member: UnicodeScalar##UnicodeScalar#>)
}
}