HeadlinesBriefing HeadlinesBriefing.com

Combinateurs d'analyseurs expliqués avec des exemples

Hacker News •
×

Les combinateurs d'analyseurs sont des fonctions qui prennent une chaîne en entrée et renvoient une valeur analysée accompagnée de la chaîne restante non analysée. Un Parser<T> est défini comme (input: string) => [T, string]. Par exemple, p Integer analyse "10 20 30" en le nombre 10 et le reste " 20 30". p Hello extrait "Hello" de "Hello 100", laissant " 100". p Ignore Whitespace consomme les espaces, renvoyant " " et "100". p Integer analyse alors "100" en le nombre 100 et une chaîne vide.

Les combinateurs de séquence comme p Seq permettent de combiner des analyseurs : p Seq(p Hello, p Ignore Whitespace, p Integer) analyse "Hello 100" en le tuple ["Hello", null, 100]. Le combinateur p Map transforme les valeurs analysées, par exemple en convertissant ["Hello", null, 100] en {greeting: "Hello", who: 100}. De même, p Seq(p Number, p Semicolon) analyse "10;20;30;" en une liste de nombres en appliquant répétitivement l'analyseur pour consommer chaque paire nombre-point-virgule.

L'article illustre également l'analyse de la sortie d'une commande ping réseau, montrant comment extraire des données structurées d'un texte brut à l'aide de ces combinateurs. Les opérations fold et unfold montrent comment les analyseurs peuvent réduire ou reconstruire des valeurs, par exemple en additionnant une liste ou en convertissant "Hello 100" en ["Hello", " ", 100] et inversement.

Source: Hacker News · Résumé par HeadlinesBriefing