a general purpose parsing framework