HeadlinesBriefing HeadlinesBriefing.com

Parser-Kombinatoren erklärt mit Beispielen

Hacker News •
×

Parser-Kombinatoren sind Funktionen, die einen Eingabestring entgegennehmen und einen geparsten Wert zusammen mit dem verbleibenden, nicht verarbeiteten String zurückgeben. Ein Parser<T> ist definiert als (input: string) => [T, string]. Zum Beispiel parst p Integer "10 20 30" in die Zahl 10 und den Rest " 20 30". p Hello extrahiert "Hello" aus "Hello 100" und lässt " 100" übrig. p Ignore Whitespace konsumiert Leerzeichen und gibt " " und "100" zurück. Anschließend parst p Integer "100" in die Zahl 100 und einen leeren String.

Sequenz-Kombinatoren wie p Seq ermöglichen es, Parser zu kombinieren: p Seq(p Hello, p Ignore Whitespace, p Integer) parst "Hello 100" in das Tupel ["Hello", null, 100]. Der Kombinator p Map transformiert geparste Werte, etwa ["Hello", null, 100] in {greeting: "Hello", who: 100}. Ebenso parst p Seq(p Number, p Semicolon) "10;20;30;" in eine Liste von Zahlen, indem der Parser wiederholt angewendet wird, um jedes Zahl-Semikolon-Paar zu konsumieren.

Der Artikel zeigt außerdem das Parsen der Ausgabe eines Netzwerk-Pings und verdeutlicht, wie sich mit diesen Kombinatoren strukturierte Daten aus rohem Text gewinnen lassen. Fold- und Unfold-Operationen veranschaulichen, wie Parser Werte reduzieren oder rekonstruieren können, etwa das Summieren einer Liste oder das Umwandeln von "Hello 100" in ["Hello", " ", 100] und zurück.

Quelle: Hacker News · Zusammengefasst von HeadlinesBriefing