elm/parser

Regular expressions are quite confusing and difficult to use. This library provides a coherent alternative that handles more cases and produces clearer code.

(Readme.md from the package)

type alias Point =
  { x : Float
  , y : Float
  }

point : Parser Point
point =
  succeed Point
    |. symbol "("
    |. spaces
    |= float
    |. spaces
    |. symbol ","
    |. spaces
    |= float
    |. spaces
    |. symbol ")"

This is a summary of the talk Demystifying Parsers by Tereza Sokol.

Basics

Function

Description

Runs the Parser on a String

Parser for Int

Parser for Float

Trys different Parsers. Uses the first that succeeds.

Once the parser matches the first element, there is no going back!

Applys the first parser and if successful applies the second. Fails if one of the parsers fails.

Pipeline

This subject is explained at 4:48 in the Video.

Function

Description

Starts the Pipeline. a -> Parser a is the constructor.

For a record Point use the structur called Point .

Keeps an element.

Eats a character and throws it away.

Represents whitespace

Strings

This subject is explained at 7:20 in the Video.

Function

Description

Looks for zero or more characters that succeeds the check. Stops as soon as the check fails.

Reads one symbols.

Returnes the string that got chomped

Loops

This subject is explained at 14:10 in the Video.

Function

Description

Takes an initial state and a parser step and returns a parser.

A parser step just specifies if it should continue looping or stop.

Error messages

This subject is explained at 17:04 in the Video.

Function

Description

Returns the error message and ends the parsing. The argument is the actuall message.

Further Reading

Last updated