Powiedzmy, że mam duży blok kodu, który już sprawdziłem i przeanalizowałem.
Załóżmy, że zmienia się tylko jedna postać; Chciałbym zaktualizować parsowanie, ale ponieważ modyfikacja jest bardzo niewielka w porównaniu do całości, chciałbym wiedzieć, czy nie można ponownie przeanalizować całości, ale czy istnieją algorytmy określające zakres do ponownej analizy i odpowiednio radzić sobie z przesuwaniem granic tokenów.
Z góry dziękuję!
Odpowiedzi:
Zgodnie z prośbą @Agos zmieniłem komentarz w odpowiedź.
Po pierwsze, muszę przyznać, że nie jestem tak naprawdę kompetentny w tej dziedzinie. Jednak sugeruję przeczytanie artykułów Budowanie przyjaznych parserów oraz wydajnego i elastycznego analizowania przyrostowego, aby zobaczyć, jakie algorytmy były używane do analizowania przyrostowego przed 2000 rokiem.
Aby uzyskać zaktualizowane metody leczenia, możesz zapoznać się z tymi dokumentami:
Więcej informacji: Istnieją (przynajmniej) dwa podejścia do parsowania / kompilacji:
źródło
jeśli twój przyrostowy parser zapisuje stan na każdym końcu linii, ponownie analizujesz tylko od ostatniego poprawnego stanu analizatora (w najlepszym przypadku, np. po pełnej analizie jest to tylko początek linii, w której rozpoczyna się modyfikacja) i przestajesz analizować na końcu linii, w której kończy się modyfikacja (wewnętrzny parser może patrzeć w przyszłość poza modyfikację, aby poprawnie rozpoznać strukturę)
źródło