
Parser
Ein Parser ist ein Programmteil, der eine Zeichenkette nach festen Regeln liest und in eine geordnete Struktur übersetzt, mit der ein Computer weiterarbeiten kann. Ohne Parser wären Quelltexte, Webseiten, Konfigurationsdateien und die Antworten von KI-Systemen für Software nur sinnlose Buchstabenfolgen.
Für einen Computer ist Text zunächst nur eine lange Kette von Zeichen. Ein Parser ist ein Programmteil, der diese Kette nach festen Regeln liest und ihre Struktur erkennt. Er stellt fest, was zusammengehört, was untergeordnet ist und wo eine Einheit endet. Am Ende gibt er das Ergebnis in einer Form aus, mit der andere Programmteile rechnen können. Ein Beispiel: Aus der Zeichenfolge « 3 + 4 * 2 » macht ein Parser die Information, dass zuerst multipliziert und dann addiert wird. Der Vorgang selbst heißt Parsen oder Syntaxanalyse.
Der stille Türsteher jeder Software
Fast jedes Programm bekommt seine Eingaben als Text. Eine Webseite kommt als HTML-Datei an, Einstellungen liegen in Konfigurationsdateien, Schnittstellen zwischen Servern tauschen Daten im Format JSON aus. In all diesen Fällen steht am Anfang ein Parser. Er entscheidet, ob die Eingabe überhaupt regelkonform ist und was sie bedeutet.
Deshalb ist ein Parser auch eine Sicherheitsfrage. Er ist die erste Stelle, an der fremde Daten in ein System gelangen. Viele bekannte Sicherheitslücken entstanden, weil ein Parser eine ungewöhnlich gebaute Eingabe falsch verarbeitete. Ein Angreifer schickt dann absichtlich verdrehten Text und bringt das Programm dazu, etwas zu tun, was es nicht tun sollte. Ein sorgfältig geschriebener Parser lehnt alles ab, was nicht exakt den Regeln entspricht.
Auch die Fehlermeldungen, die man beim Programmieren sieht, stammen meist vom Parser. Wenn eine Klammer fehlt, merkt er das als Erster. Die Meldung « Syntax Error in Zeile 42 » ist seine Art zu sagen, dass er den Text nach seinen Regeln nicht deuten kann.
Von Zeichen über Wörter zum Baum
Das Parsen läuft üblicherweise in zwei Schritten ab. Zuerst zerlegt ein Lexer den Text in kleine Einheiten, sogenannte Token. Aus den Zeichen « p », « r », « i », « n », « t » wird ein einziges Token mit der Bedeutung « Befehlsname ». Zahlen, Klammern und Operatoren werden ebenso jeweils zu einem Token. Leerzeichen und Kommentare fallen dabei meist weg.
Im zweiten Schritt ordnet der eigentliche Parser diese Token nach einer Grammatik. Eine Grammatik ist eine Liste von Regeln, die festlegt, welche Kombinationen erlaubt sind. Etwa: Eine Rechnung besteht aus einer Zahl, einem Operator und einer weiteren Rechnung. Das Ergebnis ist ein Syntaxbaum, also eine verschachtelte Struktur mit Ober- und Unterelementen. Er ähnelt einer Satzanalyse im Deutschunterricht, bei der man Hauptsatz und Nebensätze in eine Hierarchie bringt.
Wichtig ist die Abgrenzung: Ein Parser prüft nur die Form, nicht den Sinn. Der Satz « Zahl geteilt durch null » ist grammatikalisch korrekt und wird anstandslos geparst. Dass die Rechnung unmöglich ist, merkt erst ein späterer Schritt. Grammatik und Bedeutung sind in der Informatik streng getrennte Ebenen.
Parser in KI-Systemen und im Alltag
Jeder Browser enthält einen HTML-Parser. Er verwandelt den Quelltext einer Seite in eine Baumstruktur aus Überschriften, Absätzen und Bildern, die dann dargestellt wird. Genauso arbeitet ein Parser, wenn eine App eine Antwort von einem Server verarbeitet oder wenn eine Tabellenkalkulation eine eingetippte Formel auswertet. Man bemerkt ihn nur, wenn er scheitert.
In der KI-Welt ist der Begriff zuletzt wieder häufiger in Nachrichten aufgetaucht. Sprachmodelle geben ihre Antworten als reinen Text aus, auch wenn eine Anwendung eigentlich saubere Daten braucht. Damit ein Modell etwa ein Werkzeug bedienen oder eine Datenbank abfragen kann, muss seine Ausgabe geparst werden. Weil Modelle sich dabei nicht immer exakt an das geforderte Format halten, setzen Entwickler auf strikte Formatvorgaben oder auf besonders nachsichtige Parser.
Ein häufiger Irrtum ist, ein Parser würde Texte verstehen. Das tut er nicht. Er wendet Regeln an, die ein Mensch vorher festgelegt hat, und arbeitet vollkommen vorhersagbar. Genau darin liegt sein Wert: Ein Sprachmodell rät die wahrscheinlichste Fortsetzung, ein Parser liefert bei gleicher Eingabe immer dasselbe Ergebnis.