24 stable releases (8 major)
8.1.2 | Jun 25, 2023 |
---|---|
7.0.2 | Jun 24, 2023 |
7.0.0 | Jan 1, 2022 |
6.0.0 | Dec 31, 2021 |
0.1.2 | Mar 24, 2020 |
#88 in Parser tooling
Used in wordshk_tools
1MB
3.5K
SLoC
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.