Component based Lexer