lexer input output improved