1unitedpower: Demo: JavaScript und Binärdateien, Multimedia

Beitrag lesen

Ein Parser ist per Definition eine Funktion von Strings oder Token-Streams in einen Syntaxbaum unter Berücksichtigung gegebener Grammatik-Regeln.

Um den Satz dennoch einen Sinn zu verleihen,

apropos, könntest du bitte

Wie könnte ich diesen Wunsch abschlagen?

Parser haben ein theoretisches Fundament, dieses lässt relativ wenig Spielraum für die Interpreation seiner Aufgaben. Ein Parser ist demnach eine Software-Komponente, die Text einliest und ihm eine Struktur verleiht.

Das ist nichts schwieriges, wir machen es ständig unterbewusst wenn wir Texte lesen. Manchmal machen wir es auch bewusst: Zum Beisiel als wir in der Grundschule Subjekt/Prädikat/Objekt im Satz unterscheiden mussten: "Papa liebt Mama".

Genau das macht auch ein formaler Parser. Er zerlegt Texte in seine einzelnen Bausteine. Statt Text spricht ein/e Theoretiker/in aber lieber von Strings oder Token-Streams. Statt von einem Baustein lieber von einer Token-Klasse. Darin ist eine kleine vereinfachende Annahme versteckt: Man kümmert sich nicht um die Details: Das Wort "Apfel" ist für einen Parser keine Aneinanderreihung von fünf Buchstaben, sondern nur ein einzelnes Token. Ein Token kann man sich als ein gestempeltes Wort vorstellen. Eine Token-Klasse wäre dann der Stempel (der Vergleich hinkt leider, sobald man ihn vertiefen möchte).

Die Ähnlichkeit mit der Linguistik ist dabei kein Zufall. Der Satz "Papa liebt Mama" weist ein relativ flache Strutkur auf: Der Satz "Papa hat Mama geheiratet" ist strukturell interessanter, weil das Prädikat zweiteilig ist. Diese Strukturen lassen sich sehr schön als Bäume veranschaulichen: Die sogenannten Syntax-Bäume. Trotzdem gilt es die Analogien mit der Linguistik nicht zu weit zu spinnen. Formale Sprachen sind in der Regel sehr viel tiefer verschachtelt als natürliche Sprachen.

Das alles geschieht natürlich auf Grundlage einer vorgegebenen Grammatik. Unzweifelthaft liegt den beiden Beispielen die deutsche Grammatik zu Grunde. Die Regeln für formale Sprachen sind typischerweise noch sehr viel einfacher. Wir sprechen wirklich von extrem einfachen Dingen, auch wenn wir sie manchmal kompliziert Ausdrücken.

Genauso ist es auch nur sehr kompliziert ausgedrückt, wenn ich sage: Ein Parser ist eine Funktion von Token-Streams in einen Syntaxbaum. Damit meine ich nur, dass ein Parser einen Text als Eingabe bekommt und einen Syntaxbaum als Ausgabe erzeugt. Warum überhaupt kompliziert, wenn es auch einfach geht? Weil wir Theoretiker uns oft selber zu gerne zuhören und weil wir manchmal eine gewisse Präzision einfordern müssen, um Missverständnisse zu vermeiden. Wenn wir miteinander diskutieren, würde ich den ersten Punkt natürlich nie zugeben und immer alles mit dem zweiten Teil begründen.