improvement to recursive descend parser: more generic, static hashes