Documented lexer
Refactoring