На wikipedia есть небольшая статья об этом:
http://ru.wikipedia.org/wiki/Синтаксический_анализ
Еще где-то читал, что можно сделать такой анализ ошибок, когда компилятор пытается найти минимальные изменения, которые надо сделать, чтобы программа стала корректной. Однако этот способ может быть достаточно долгим и во многих случаях восстановления в режиме паники бывает достаточно.