character_either
using `std::vector` for this scanner requires many times of memory allocation and free.