Допустим, у меня есть большой блок кода, который я уже проанализировал и проанализировал.
Предположим, что меняется только один символ; Я хотел бы обновить мой синтаксический анализ, но поскольку модификация очень мала по сравнению со всем этим, я хотел бы знать, возможно ли не анализировать все заново, но есть ли алгоритмы для определения диапазона для повторного анализа и правильно справляться с перемещением границ токенов.
Заранее спасибо!
Ответы:
По запросу @Agos я превратил комментарий в ответ.
Во-первых, я должен признать, что я не очень осведомлен в этой области. Тем не менее, я предлагаю вам прочитать статьи Создание дружественных парсеров и Эффективный и гибкий пошаговый анализ, чтобы узнать, какие алгоритмы использовались для пошагового разбора до 2000 года.
Для обновленных методов лечения вы можете взглянуть на эти документы:
Больше информации: Есть (по крайней мере) два подхода к синтаксическому анализу / компиляции:
источник
если ваш инкрементный синтаксический анализатор сохраняет состояние на каждом конце строки, вы выполняете повторный анализ только из последнего действительного состояния синтаксического анализатора (в лучшем случае, например, после полного анализа это только начало строки, где начинается модификация) и прекращаете анализ в конце строки, где заканчивается модификация (внутренний синтаксический анализатор может смотреть вперед за пределы модификации, чтобы правильно распознать структуру)
источник