Lip provides powerful parser combinators for creating reusable and flexible parsers.


Keywords
parser, combinator, functional
License
MIT

Documentation

lip logo

Lip

Lip provides powerful parser combinators for creating reusable and flexible parsers.

Why Lip?

  • Easy to understand - uses intuitive combinators like keep and skip
  • Compact - takes less than an hour to learn this library fully
  • Flexible and composable parser combinators
  • Efficient - minimal backtracking
  • Built-in support for precise, located error messages
  • Keep track of extra states like line number and instruction index
  • Extensible - create your own combinators if needed
// Parse an (x, y) position pair
use lip::*;
let position = succeed!(|x, y| (x, y))
  .keep(int())
  .skip(token(","))
  .keep(int())
  .run("2,3", ()); // run this parser on string "2,3" without extra states
// when parsing finished, position == (2, 3)

Tutorial

Reading the parser combinator by Bodil is an excellent way to know how parser combinators work.

License

MIT

Credits

Based on Bodil's Parser Combinator Tutorial and Evan's elm/paser.