HeadlinesBriefing HeadlinesBriefing.com

Combinadores de parsers explicados com exemplos

Hacker News •
×

Combinadores de parsers são funções que recebem uma string de entrada e retornam um valor analisado junto com a string restante não processada. Um Parser<T> é definido como (input: string) => [T, string]. Por exemplo, p Integer analisa "10 20 30" como o número 10 e o restante " 20 30". p Hello extrai "Hello" de "Hello 100", deixando " 100". p Ignore Whitespace consome os espaços, retornando " " e "100". Em seguida, p Integer analisa "100" como o número 100 e uma string vazia.

Combinadores de sequência como p Seq permitem combinar parsers: p Seq(p Hello, p Ignore Whitespace, p Integer) analisa "Hello 100" como a tupla ["Hello", null, 100]. O combinador p Map transforma valores analisados, como converter ["Hello", null, 100] em {greeting: "Hello", who: 100}. Da mesma forma, p Seq(p Number, p Semicolon) analisa "10;20;30;" em uma lista de números, aplicando repetidamente o parser para consumir cada par número-ponto e vírgula.

O artigo também ilustra a análise da saída do comando ping de rede, mostrando como dados estruturados podem ser extraídos de texto bruto usando esses combinadores. As operações fold e unfold demonstram como os parsers podem reduzir ou reconstruir valores, como somar uma lista ou converter "Hello 100" em ["Hello", " ", 100] e vice-versa.

Fonte: Hacker News · Resumido por HeadlinesBriefing