basic lexer (yet to be fully implemented)