Plugin based Lexer implementation. We provide premade token kinds that can be customised to add better semantic.