Angenommen, ich habe einen großen Codeblock, den ich bereits lexiert und analysiert habe.
Angenommen, nur ein Zeichen ändert sich. Ich möchte mein Parsing aktualisieren, aber da die Änderung im Vergleich zum Ganzen sehr gering ist, möchte ich wissen, ob es möglich ist, das Ganze nicht noch einmal zu analysieren, sondern ob es Algorithmen gibt, um den zu analysierenden Bereich zu bestimmen , und richtig mit dem Verschieben von Token-Grenzen umzugehen.
Danke im Voraus!
Antworten:
Laut @Agos-Anfrage habe ich den Kommentar in eine Antwort umgewandelt.
Zunächst muss ich zugeben, dass ich mich auf diesem Gebiet nicht wirklich auskenne. Ich schlage jedoch vor, Sie lesen die Artikel Erstellen von benutzerfreundlichen Parsern und Effizientes und flexibles inkrementelles Parsing , um zu sehen, welche Algorithmen vor 2000 für inkrementelles Parsing verwendet wurden .
Informationen zu aktualisierten Behandlungen finden Sie in den folgenden Dokumenten:
Weitere Informationen: Es gibt (mindestens) zwei Ansätze zum Parsen / Kompilieren:
quelle
Wenn Ihr inkrementeller Parser den Status an jedem Zeilenende speichert, wird der aktuelle Parser-Status erneut analysiert (im besten Fall, z. B. nach einer vollständigen Analyse, ist dies nur der Zeilenanfang, an dem die Änderung beginnt) und die Analyse wird am Ende beendet der Zeile, in der die Änderung endet (der interne Parser kann über die Änderung hinaus nach vorne schauen, um die Struktur richtig zu erkennen)
quelle