From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by walapai.inria.fr (8.13.6/8.13.6) with ESMTP id p4S2B7fx013704 for ; Sat, 28 May 2011 04:11:07 +0200 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AigDAIVZ4E3RVaE2imdsb2JhbAA/AQMSmDKGMYdUCBQBAQEKCQ0HEgYhp3yCQowegjeEIzmIYgEBAwaGGASCNoQpiWOLIDuDSA X-IronPort-AV: E=Sophos;i="4.65,284,1304287200"; d="scan'208";a="100030444" Received: from mail-fx0-f54.google.com ([209.85.161.54]) by mail4-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 28 May 2011 04:11:02 +0200 Received: by fxm11 with SMTP id 11so3302821fxm.27 for ; Fri, 27 May 2011 19:11:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=AcPcKbYNf+b7I2qPPVZpeySAXS10wbMMOjOrnYqD7to=; b=ns7RJrSARO6E1EN3YGmd4WQOWlVJWcF0y+Oc76PeTYGW1TZJv6M9y2aQ2c2WY934HG HdihdJOKgeBZAdjy6NLtiIF/Mcir+5MEog2tH4budhM+bK59vTYKRCdPkH5Jr5BiAA6y JcRuuYjzw0uCkt46oRPPM5iOuAW+CZOVC4yvA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=jELeDUI02bZXHUq/QqubkcYtp/gwg6IrZhplKfT880lvX/+orebo7B5Nr1L9xspJR4 g8f9B6iTaApmfyCiubTK2fY9PT2n7V94cFdzwriSlQu1dkuL68+jG3ViGvL1KEaDw+GX DWzgz2eyOpReUAwm5Su4iXuS/Wy+no8fsb/tE= MIME-Version: 1.0 Received: by 10.223.13.10 with SMTP id z10mr3015117faz.69.1306548660750; Fri, 27 May 2011 19:11:00 -0700 (PDT) Received: by 10.223.83.201 with HTTP; Fri, 27 May 2011 19:11:00 -0700 (PDT) Date: Sat, 28 May 2011 11:11:00 +0900 Message-ID: From: Jun Furuse To: caml-list Content-Type: multipart/alternative; boundary=20cf3054a891ce4a6e04a44c905e Subject: [Caml-list] [ANN] Planck: a small monadic parser combinator library for OCaml --20cf3054a891ce4a6e04a44c905e Content-Type: text/plain; charset=ISO-8859-1 Hi, I've released a small monadic parser combinator library for OCaml, Planck version 1.0.0, available at: https://bitbucket.org/camlspotter/planck/get/v1.0.0.tar.gz It is firstly just for my fun to learn what is Parsec/parser combinators, but it is now elaborated to something useful: - input positions by lines and columns - char specialized stream for better performance - operator precedence/associativity resolver - memoization module for efficient backtracks For example I could implement OCaml syntax lexer and parser using Planck. REQUIREMENTS: unfortunately Planck depends on many things: - ocaml 3.12.0 or higher - findlib - omake - type-conv 2.3.0 and sexplib 5.2.1 (available from http://ocaml.janestreet.com/?q=node/13) - spotlib (my small utility functions, available at http://bitbucket.org/camlspotter/spotlib/ ) The followings are required to compiler ocaml syntax parser example: - pa_monad_custom ( http://bitbucket.org/camlspotter/pa_monad_custom/ - ocaml 3.12.0 source tree and lablgtk-2.14.2 source code tree for testing The combinators in Planck are implemented simply as functional monadic combinators over streams (lazy lists). Unfortunately, it is very slow with the current OCaml compiler (3.12.0) due to its huge closure constructions: it is about x100 slower than the traditional ocamllex+ocamlyacc. I hope more aggressive in-lining optimizations in the compiler might speed up the performance of Planck greatly. You can read some of my rough considerations in this topic at: http://camlspotter.blogspot.com/2011/05/planck-small-parser-combinator-library.html Enjoy, Jun --20cf3054a891ce4a6e04a44c905e Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi,

I've released a small monadic parser combinator library for = OCaml, Planck version 1.0.0, available at:

=A0=A0=A0 https://bitbucket.o= rg/camlspotter/planck/get/v1.0.0.tar.gz

It is firstly just for my fun to learn what is Parsec/parser combinator= s, but it is now elaborated to something useful:

=A0=A0=A0 - input p= ositions by lines and columns
=A0=A0=A0 - char specialized stream for be= tter performance
=A0=A0=A0 - operator precedence/associativity resolver
=A0=A0=A0 - memoi= zation module for efficient backtracks

For example I could implement= OCaml syntax lexer and parser using Planck.

REQUIREMENTS: unfortuna= tely Planck depends on many things:

=A0 - ocaml 3.12.0 or higher
=A0 - findlib
=A0 - omake
=A0 - t= ype-conv 2.3.0 and sexplib 5.2.1 (available from http://ocaml.janestreet.com/?q=3Dnode/13)=A0 - spotlib (my small utility functions, available at http://bitbucket.org/camlspotter/spotli= b/ )

=A0 The followings are required to compiler ocaml syntax parser example= :
=A0 - pa_monad_custom ( http://bitbucket.org/camlspotter/pa_monad_custom/
= =A0 - ocaml 3.12.0 source tree and lablgtk-2.14.2 source code tree for test= ing

The combinators in Planck are implemented simply as functional monadic = combinators over streams (lazy lists). Unfortunately, it is very slow with = the current OCaml compiler (3.12.0) due to its huge closure constructions: = it is about x100 slower than the traditional ocamllex+ocamlyacc. I hope mor= e aggressive in-lining optimizations in the compiler might speed up the per= formance of Planck greatly. You can read some of my rough considerations in= this topic at:

=A0=A0=A0 http://camlspotter.blogspot.com/2011/05/= planck-small-parser-combinator-library.html

Enjoy,

Jun
--20cf3054a891ce4a6e04a44c905e--