Refactoring 'SpLexer' and 'SpToken'