# Combinaml.0.1 released - a customizable parser combinator library

**URL:** <https://discuss.ocaml.org/t/combinaml-0-1-released-a-customizable-parser-combinator-library/12594>\
**Category:** Community\
**Tags:** announce\
**Created:** [July 11, 2023, 9:09am UTC](https://discuss.ocaml.org/t/combinaml-0-1-released-a-customizable-parser-combinator-library/12594 "2023-07-11T09:09:07Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![traviss](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/traviss/32/4559_2.png) [@traviss](https://discuss.ocaml.org/u/traviss)\
**Post date:** [July 11, 2023, 9:09am UTC](https://discuss.ocaml.org/t/combinaml-0-1-released-a-customizable-parser-combinator-library/12594/1 "2023-07-11T09:09:07Z")

</div>

This is my first public ocaml package. Please let me know if you have any feedback or advice on how I can improve it.

> **[GitHub - travisstaloch/combinaml: a simple, customizable, dependency free...](https://github.com/travisstaloch/combinaml)**
>
> a simple, customizable, dependency free parser combinator library in ocaml - GitHub - travisstaloch/combinaml: a simple, customizable, dependency free parser combinator library in ocaml

Its meant to be similar to angstrom except more easily customizable and with a few api differences here and there which i found useful.

I was using angstrom to parse peg grammars and ran into issues i could only solve by adding a tokenization step. This seemed messy so I decided to write this library and found a solution which solves the problem using an `until` parser like this:

```ocaml
let definition =
  lift2 pair (ident_str <* leftarrow)
    (until (ident_str <* leftarrow) expression)

let grammar =
  spacing *> many1 definition <* is_end_of_input >>| fun defs -> Grammar defs

```

It was just merged into ocaml/opam-repository a couple of hours ago and doesn’t seem to show up in opam search yet. I’m sure its a caching issue and will be there soon.

---

<div class="post-metadata">

**Author:** ![traviss](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/traviss/32/4559_2.png) [@traviss](https://discuss.ocaml.org/u/traviss)\
**Post date:** [July 11, 2023, 11:15pm UTC](https://discuss.ocaml.org/t/combinaml-0-1-released-a-customizable-parser-combinator-library/12594/2 "2023-07-11T23:15:02Z")

</div>

Its up on opam now: [opam - combinaml](https://opam.ocaml.org/packages/combinaml/)
