StringParser

Parsing string input



Data types


type alias Parser a = String -> Maybe (Result a)

Parser


type alias Result a = { backlog : String, values : Array a }

Parse result



Basic parsers


string : String -> String -> Maybe (Result String)

Parse a fixed string


fail : String -> Maybe (Result a)

Always fail


succeed : Array a -> String -> Maybe (Result a)

Always succeed and produce a fixed list of values



Combinators



optional : Parser a -> String -> Maybe (Result a)

Apply a parser if possible


zeroOrMore : Parser a -> String -> Maybe (Result a)

Apply a parser as often as possible


oneOrMore : Parser a -> String -> Maybe (Result a)

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


oneOf : Array (Parser a) -> String -> Maybe (Result a)

Apply the first successful parser from a list of parsers


sequence : Array (Parser a) -> String -> Maybe (Result a)

Apply several parsers in succession



Transformations


map :
(Array a -> Array b)
-> Parser a
-> String
-> Maybe (Result b)

Transform the parsed values


andThen :
(Result a -> Maybe ( Result b))
-> Parser a
-> String
-> Maybe (Result b)

Transform the result of a parser



Execution


run : Parser a -> String -> Maybe a

Apply a parser and produce a final result