add table driven lexer