Use bison's error recovery to find the locations of unmatched
delimiters. The trick is realizing that yyerror runs *before* the action
for an error rule, so if yyerror doesn't return (e.g., because it throws
an exception as our old one did) then the error recovery action will
never run.