add +, ? and char ranges
handle escaping
implement dot as char class of all printabe ascii

there's probably a better way to do it.