ArrayParser

Parsing of tokenized input



Data types


type alias Parser src dst = Array src -> Maybe (Result src dst)

Parser


type alias Result src dst = { backlog : Array src, values : Array dst }

Parse result



Basic parsers


array : Array a -> Array a -> Maybe (Result a a)

Parse a fixed array


fail : Array src -> Maybe (Result src dst)

Always fail


succeed : Array dst -> Array src -> Maybe (Result src dst)

Always succeed and produce a fixed list of values



Combinators



optional : Parser src dst -> Array src -> Maybe (Result src dst)

Apply a parser if possible


zeroOrMore : Parser src dst -> Array src -> Maybe (Result src dst)

Apply a parser as often as possible


oneOrMore : Parser src dst -> Array src -> Maybe (Result src dst)

Apply a parser as often as possible, but at least once


accumulate : Parser src dst -> Result src dst -> Result src dst

Accumulate parsed values from a parse backlog in a result structure


oneOf :
Array (Parser src dst)
-> Array src
-> Maybe (Result src dst)

Apply the first successful parser from a list of parsers


sequence :
Array (Parser src dst)
-> Array src
-> Maybe (Result src dst)

Apply several parsers in succession



Transformations


map :
(Array dst1 -> Array dst2) -> Parser src dst1 -> Array src -> Maybe (Result src dst2)

Transform the parsed values


andThen :
(Result src dst1 -> Maybe (Result src dst2)) -> Parser src dst1 -> Array src -> Maybe (Result src dst2)

Transform the result of a parser



Execution


run : Parser src dst -> Array src -> Maybe dst

Apply a parser and produce a final result