After I solved the initial problem, I now believe I have parsed everything, and it now seems to be choking on the very end of the input:
Failure: [9.1] failure: string matching regex `\z' expected but `' found ^
Um, it is finding no characters at the very end. Should I append my own "\z" EOF somehow?