update lexer; add a test