I'd expect any decent compiler tool to do so.
But I know for shure that the parser generators in Cocktail do this.
They even generate information to signal fixes, and/or inserts to the user.
Great stuff.

The author has started his own company doing compiler tool development, and
thus he's trying to make a living from cocktail.
But older versions (still very workable) are available from:
ftp.eb.ele.tue.nl:/pub/src/cocktail.*