Выполнение GLR (следовательно, анализа) исправления ошибок на уровне символов возможно, но усугубляет вашу проблему.
Используемая нами процедура восстановления после ошибки GLR работает с токенами, поэтому она не так плоха.
Но когда на входе имеется огромное количество ошибок, восстановить довольно сложно. Более сложные схемы восстановления после ошибок в основном используют синтаксический анализатор для определения допустимых подстрок языка во входных данных, а затем пытается соединить подстроки вместе, чтобы получить результат. Это довольно амбициозно.
Я создал анализаторы GLR с восстановлением после ошибок. Я не был таким амбициозным. В общем
синтаксический анализатор в основном просто прерывается, когда количество активных анализаторов становится больше «большого числа» (например, 10000), или количество обнаруженных синтаксических ошибок превышает пороговое значение (например, 10 или 20). Вы можете прервать анализатор, если он не продвинул поток ввода в последнюю секунду, что является косвенным признаком того, что у него слишком много живых анализаторов.