simple (to the point of being inane) recursive descent parser