From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 703B97F720 for ; Tue, 15 Apr 2014 15:16:01 +0200 (CEST) Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of tom.j.ridge@googlemail.com) identity=pra; client-ip=209.85.192.170; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="tom.j.ridge@googlemail.com"; x-sender="tom.j.ridge@googlemail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of tom.j.ridge@googlemail.com designates 209.85.192.170 as permitted sender) identity=mailfrom; client-ip=209.85.192.170; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="tom.j.ridge@googlemail.com"; x-sender="tom.j.ridge@googlemail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-pd0-f170.google.com) identity=helo; client-ip=209.85.192.170; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="tom.j.ridge@googlemail.com"; x-sender="postmaster@mail-pd0-f170.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsYBAC4wTVPRVcCqlGdsb2JhbABZg0FXgxDBMggWDgEBAQEHCwsJEiqCTx0BATgQFQ8CJgIkEgEFASIbh18BAxENnSSLGHaDXwEFl1MKGScNhmMRAgSBKZAwgUmUeYNtkFYYKYFngnk8 X-IPAS-Result: AsYBAC4wTVPRVcCqlGdsb2JhbABZg0FXgxDBMggWDgEBAQEHCwsJEiqCTx0BATgQFQ8CJgIkEgEFASIbh18BAxENnSSLGHaDXwEFl1MKGScNhmMRAgSBKZAwgUmUeYNtkFYYKYFngnk8 X-IronPort-AV: E=Sophos;i="4.97,864,1389740400"; d="scan'208";a="57223921" Received: from mail-pd0-f170.google.com ([209.85.192.170]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 15 Apr 2014 15:16:00 +0200 Received: by mail-pd0-f170.google.com with SMTP id v10so9462649pde.29 for ; Tue, 15 Apr 2014 06:15:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=mime-version:sender:from:date:message-id:subject:to:content-type; bh=jsawG7xp+HPrRAnEhPDx6osqNAh8Hy6U1MZt7FH+m18=; b=EmRn2xRC06TR8cImaAOmyhgrRElcNPEG/OkVqcJYpVtBxRe1A9qaXw2Kbl7hZbEx2w wmzyrt+rJNNtyDqUR6hoWzYauJCDngmfxZXodknmDj/2yK1vRhVn5MkPOmLNGkX3IcuS ScwkkaZ8YNTHrl0pCKEThtjHgiHFbsgLossPmZXzDaY4ECkmsKo/CDmARpBGKgiXv6t1 c8+TqfS4RY0r/aQyWHhXCjIH5KqvSHDXZh1g3NZn35a1pGLLLiBtSSI9dN4zf0r+OlJg yvNZXAYouhMIV2BMaPtqrCcivqsEHphb8IfB+mKanZH5/XgSDjoZ6uU3jax0W5KBCx5O 8lqA== X-Received: by 10.67.8.102 with SMTP id dj6mr1986858pad.10.1397567758969; Tue, 15 Apr 2014 06:15:58 -0700 (PDT) MIME-Version: 1.0 Sender: tom.j.ridge@googlemail.com Received: by 10.70.89.225 with HTTP; Tue, 15 Apr 2014 06:15:38 -0700 (PDT) From: Tom Ridge Date: Tue, 15 Apr 2014 14:15:38 +0100 X-Google-Sender-Auth: GmiwJHQX9FcMtjH0QvZXpo_5DqQ Message-ID: To: caml-list Content-Type: text/plain; charset=UTF-8 Subject: [Caml-list] [ANN] P3 v. 2014-04-15d Dear All, I'm pleased to announce a new release of the P3 combinator parser library, and parser generator. It is essentially a synthesis of Earley parsing with combinator parsing. This release is not available on opam. The github url is: https://github.com/tomjridge/p3 The main features are: * handles all context free grammars * fast (when memoized) * correct (hopefully) * simple (depending on your viewpoint) * scannerless (for simplicity), or can work with an external lexer (for performance/disambiguation) * parsers implemented via combinators can be integrated easily with the core language (OCaml in this case), allowing full use of host language features eg modules etc Current example performance figures are detailed here: https://github.com/tomjridge/p3/wiki/P3#performance There is also a large real-world grammar example (the OCaml grammar) in examples/ocamlyacc. This can parse a moderately sized (279 lines) OCaml file in about 1 second. This is notable because we are using a highly ambiguous grammar: we do not use precedence or associativity restrictions, nor take advantage of shift/shift, shift/reduce conflict resolution etc. It is also worth noting that P3 is a fully-online parser, in the sense that it processes the grammar at parse time (in order to make interactive development possible). Traditional parser generators do a significant amount of work offline, when generating the parser, and so the actual work they do at parse time is potentially much reduced. Thanks Tom