Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

The Caml Hump: General purpose libraries :: Lexing and parsing

Development tools
Aurochs [03-Dec-2007, version v60, Beta]
Aurochs is a parser generator that uses the parse expression grammar (PEG) or "packrat" approach. It takes a grammar in a BNF-like notation (a .peg file) and produces bytecode (a .nog file) for a stack automaton. This bytecode is later interpreted on the input to parse using a C library. Bindings are given for Ocaml and Java. Aurochs can also directly produce C or Ocaml code for parsing. It is in use at Exalead where we use it daily to parse real-world Javascript.
Author: Berke Durak.
Native OCaml libraries
BNC [20-Feb-2004, version 0.0.1, Development code]
A lexer/parser for turning files tagged for the British National Corpus into something usefully symbolically manipulated in OCaml.
Author: Jeff Heard.
Native OCaml libraries
Camllexer [02-Jul-2012, version 1.1, Stable]
Camllexer is an enhanced lexer for Caml dialects. The lexer has been extracted from the Camlp4 (> 3.10) lexer, which in turns was reimplemented as a derivative of the lexer from the OCaml compiler.
Native OCaml libraries
Config_file [14-Jan-2011, version 1.0, Stable]
This library allows one to save configuration parameters (basic types, lists, user defined, etc.) into a file and load them. The configuration file is human readable, structured and allow (* *) comments.
Native OCaml libraries
Dypgen [23-Oct-2006, version 20061020, Beta] Has a documentation
Dypgen is a GLR parser generator for Objective Caml, it is able to generate dynamically extensible parsers.
Author: Emmanuel Onzon.
Camlp4 extensions
IoXML [01-Feb-2002, version 0.6, Beta]
IoXML allows defining XML parsers and pretty-printers directly from data type definitions.
Native OCaml libraries
JavaLib and Sawja [08-Oct-2012, version 2.2.2/1.4, Stable] Has a documentationHas a tutorial
manipulate, and generate valid .class files.Sawja is a library relying on Javalib to provide a high level representation of Java bytecode programs. Its name stands for Static Analysis Workshop for Java. Whereas Javalib is dedicated to isolated classes, Sawja handles bytecode programs with their class hierarchy and control flow algorithms. Moreover, Sawja provides some stackless intermediate representations of code. The transformation algorithm, common to these representations, has been formalized and proved to be semantics-preserving.An Eclipse plugin for Sawja analyses is also available: it allows developers to add an analysis in Eclipse without requiring any additional Java code generation.
Native OCaml libraries
Jsonm [07-May-2012, version 0.9.0, Beta] Has a documentation
Jsonm is a non-blocking streaming codec to decode and encode the JSON data format. It can process JSON text without blocking on IO and without a complete in-memory representation of the data. The uncut codec also processes whitespace and (non-standard) JSON with JavaScript comments.
Author: Daniel Bunzli.
Development tools
Menhir [09-Sep-2008, version 20080908, Beta] Has a documentation
Menhir is an LR(1) parser generator for the Objective Caml programming language.
Native OCaml libraries
OCaml Iteratees [04-Jul-2011, version 0.3, Beta]
OCaml port of Iteratees (safe, practical, declarative input processing, by Oleg Kiselyov) to OCaml.
Native OCaml libraries
OCaml WordNet [19-Apr-2006, version 0.1, Beta] Has a tutorial
This package contains the OCaml Interface to WordNet 2.1. It enables Ocaml programs to use the Wordnet dictionary for (english) word forms and meanings. This library directly parses the WordNet dictionary files, and does not depend on any other libraries. This library requires WordNet 2.1 to be installed (WordNet is available as a free download).
Author: Ramu Ramamurthy.
Native OCaml libraries
OCaml-Packrat [23-Jan-2007, version 0.5.1, Beta]
Packrat parser generator for OCaml.
OCamllex tutorial [15-Nov-2004, version 2004-11-10]
This is a tutorial on how to use ocamllex.
Author: SooHyoung Oh.
OCamlyacc tutorial [15-Nov-2004, version 2004-11-16, Stable]
This is a tutorial on how to use ocamlyacc.
Author: SooHyoung Oh.
Native OCaml libraries
ocfgc [28-Dec-2005, version 0.4.1, Beta]
A parser generator for ordered context free grammars (OCFG) based on GLR (Generalized LR) parsing, also known as Tomita's parsing.
Author: Stephen Tse.
Native OCaml libraries
Odot [19-Dec-2005, version 0.5, Beta]
Odot is a small OCaml library to parse and print Graphviz dot files. It comes with an additional module defining a Lablgtk2 box to display such graphs, and handle mouse clicks on nodes.
Author: Maxence Guesdon.
Native OCaml libraries
Oni [24-Nov-2010, version 1.00, Stable] Has a Godi package
A modular framework of Objective Caml libraries comprising general purpose utilities and functional data structures, a more flexible abstraction of the system network sockets layer than the standard library, and modules to support the development of concurrent, single-threaded network application services with a functional programming style.
Author: James Woodyatt.
Native OCaml libraries
Ostap [04-May-2006, version 0.1, Beta] Has a documentation
Ostap is an OCaml module to provide a set of parser combinators. The name of this library originates from Ostap Bender --- the central character of Ilya Ilf and Eugene Petrov's comedy "The Twelve Chairs". Bender is generally referred to as "The Great Combinator" since the word "combinator" in Russian also means "a swindler", "a sly man" etc. Additionally to the common set of parser combinators Ostap provides a camlp4 syntax extension pa_ostap.cmo to embed grammar expressions written in BNF-like style into OCaml code. Another feature of pa_ostap is that it allows to consider streams as objects and so makes integration of lexers and parsers simpler. Please have a look at the documentation for details.
Native OCaml libraries
Planck [04-Jul-2011, version 1.0.0, Stable]
A small monadic parser combinator library for OCaml.
Author: Jun Furuse.
Development tools
Ragel [04-Jul-2011, version 6.7, Stable] Has a documentation
Ragel compiles executable finite state machines from regular languages. Ragel targets C, C++, Objective-C, D, Java and Ruby. Ragel state machines can not only recognize byte sequences as regular expression machines do, but can also execute code at arbitrary points in the recognition of a regular language. Code embedding is done using inline operators that do not disrupt the regular language syntax.
Author: ygrek.
Native OCaml libraries
ulex [16-Oct-2003, version 0.4, Beta]
Ulex is a lexer generator for Unicode and OCaml.
Author: Alain Frisch.
Native OCaml libraries
Yacclib [01-Dec-2005, version 0.4, Beta]
Yacclib is a small OCaml library to parse and print OCamlyacc .mly files. It can also print dot graphs from these files. It comes with a graphical editor for .mly files.
Author: Maxence Guesdon.