NOTES
=====

Regarding parse_result_t:
If a parse fails, the parse_result_t will be NULL.
If a parse is successful but there's nothing there (i.e., if end_p succeeds), then there's a parse_result_t but its ast is NULL.