Здравствуйте, WolfHound, Вы писали:
WH>Там в отличии от LL(k) парсеров предсказание ветвления строится динамически. WH>Делается это всё исключительно из-за того, что нельзя в общем случае построить предсказатель перехода статически. А во время исполнения у нас всегда конечное множество префиксов из которого всегда можно сделать ДКА.
...
WH>Ничего общего с Эрли оно не имеет. Ибо Эрли вообще не использует предсказание, а тупо парсит все альтернативы одновременно.
Как бы очевидно ложное утверждение. Из того, что есть отличия нельзя вывести отсутствия общего. Это явная логическая ошибка.
Никто не утверждал, что общее у них построение ДКА.
Общее у них динамическая природа. Наличие очень похожих структур данных (записи Эрли и ATN).
И это делает возможным использование идей из АНТЛР4 в Эрли. Добавляем динамический ДКА к Эрли и получаем алгоритм которому не нужно перебирать все возможные варинты.
WH>Главная проблема с восстановлением — это понять какой текст нужно выкинуть и какой терминал придумать. Как тут поможет предсказатель ветвления не понимаю.
Главная проблема в нашем варианте восстановления заключается в том, что нам нужно сделать слишком большое число переборов. Если ДКА поможет их сократить, это даст приемлемую скорость.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.