You need to design your grammar with checkpoints in mind. By checkpoints, I mean the semicolon for C, a line break for Python or a period for COBOL (as examples). This checkpointing is how many compilers recover so that they can report more than just the first error found.
I've not used Bison but YACC allows you to override the error handling and I would hope the equivalent GNU tool was at least as powerful as our old UNIX clunkers.
I've done this before with a config file YACC grammar. Say you have the following correctly formed segment:
item = "bread" {
quantity = 7
price = 1.50
taxrate = 10
}
and for some bizarre reason, the user mis-spells "quantity", rendering it incorrect. At that point in your callbacks, you could just raise an error flag which would prevent further processing until the checkpoint was reached. You let the parser keep going (catching and ignoring further errors) and make sure your callbacks don't do anything in response to any spurious successes in the damaged syntax.
This could be by simply ignoring all further stanzas up to the closing brace or even by setting a default value for price and only ignoring up to the line break (so that you at least get a partially formed object).
However you do it, just reset the error flag when you get to the checkpoint so you can continue processing.
I'd still make sure that the user was notified, it's sometimes considered bad form to continue with data the customer didn't want :-).