First commit: lexer is fully functional