Ein Parser, der auf einen Syntaxfehler stößt, hat zwei Optionen: abbrechen, oder raten und weitermachen. Fast jeder Parser in Produktion wählt Option zwei, aus gutem Grund, ein Editor, der bei jedem Tippfehler die komplette Syntaxhervorhebung verliert, wäre unbenutzbar. Das Problem ist, was "raten" tatsächlich bedeutet.
Fehlerkorrektur in Parsern funktioniert meist über Heuristiken: Wenn ein erwartetes Token fehlt, füge es gedanklich ein und mach weiter. Wenn ein unerwartetes Token auftaucht, überspringe es und mach weiter. Diese Heuristiken sind darauf optimiert, für den häufigsten Fall, einen simplen Tippfehler, den richtigen Baum zu rekonstruieren. Für den unwahrscheinlichen Fall, eine tiefere strukturelle Mehrdeutigkeit, rekonstruieren sie einen Baum, der syntaktisch vollkommen gültig aussieht und trotzdem nicht das ist, was der Autor meinte.
Der Baum sagt nicht, dass er geraten hat
Das eigentliche Problem ist nicht die Heuristik selbst, es ist, dass ihr Ergebnis identisch aussieht wie ein sauber geparster Baum. Es gibt in den meisten Parser-Ausgaben kein Flag, das sagt: "diese drei Knoten sind eine Rekonstruktion, keine direkte Ableitung aus dem Input." Alles, was nachgelagert mit dem Baum arbeitet, ein Compiler, ein Linter, ein Analyzer, behandelt geratene und tatsächlich geparste Struktur exakt gleich. Der Fehler pflanzt sich fort, ohne je wieder als Fehler markiert zu sein.
Ein Parser, der nie abbricht, hat nicht weniger Fehler. Er hat nur aufgehört, sie zu melden.
Notiz am Rand eines Grammatik-Reviews, 2026Wo das wirklich wehtut
Für einen Editor ist ein falsch rekonstruierter Baum ein kurzzeitig falsches Syntax-Highlighting, meist für eine Zeile, meist für eine Sekunde. Für einen Parser, der Vertragstext, Konfigurationsdateien oder, siehe das Projekt, das gerade den Hauptpreis von FINALITY 2026 gewonnen hat, Gesetzestext liest, ist ein falsch rekonstruierter Baum eine falsch verstandene Pflicht, die als korrekt verstandene Pflicht weitergereicht wird. Die einzige robuste Antwort ist unbequem: Fehlerkorrektur ist erlaubt, aber jeder rekonstruierte Knoten muss als solcher markiert bleiben, bis explizit ein Mensch bestätigt, dass die Rekonstruktion stimmt. Alles andere ist eine Lüge, die gut genug aussieht, um nie hinterfragt zu werden.