More robust BPN parse.
A parse_error can now be constructed with a message.