From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: * X-Spam-Status: No, score=1.0 required=5.0 tests=AWL,SPF_NEUTRAL autolearn=disabled version=3.1.3 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by yquem.inria.fr (Postfix) with ESMTP id 887ADBC6B for ; Sun, 25 Nov 2007 11:37:50 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAABvfSEfAXQInh2dsb2JhbACBW41jAQEBCAop X-IronPort-AV: E=Sophos;i="4.21,463,1188770400"; d="scan'208";a="4874869" Received: from concorde.inria.fr ([192.93.2.39]) by mail1-smtp-roc.national.inria.fr with ESMTP; 25 Nov 2007 11:37:50 +0100 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id lAPAbnVT026897 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Sun, 25 Nov 2007 11:37:50 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8CABvfSEdQDPKKdGdsb2JhbACBW41jAQoEBBE X-IronPort-AV: E=Sophos;i="4.21,463,1188770400"; d="scan'208";a="4874868" Received: from smtp2a.orange.fr ([80.12.242.138]) by mail1-smtp-roc.national.inria.fr with ESMTP; 25 Nov 2007 11:37:50 +0100 Received: from me-wanadoo.net (localhost [127.0.0.1]) by mwinf2a02.orange.fr (SMTP Server) with ESMTP id ED6867000098 for ; Sun, 25 Nov 2007 11:37:49 +0100 (CET) Received: from ausone.inria.fr (ARouen-153-1-72-143.w90-17.abo.wanadoo.fr [90.17.247.143]) by mwinf2a02.orange.fr (SMTP Server) with SMTP id 96B9F700008A; Sun, 25 Nov 2007 11:37:49 +0100 (CET) X-ME-UUID: 20071125103749617.96B9F700008A@mwinf2a02.orange.fr Received: by ausone.inria.fr (sSMTP sendmail emulation); Sun, _d Nov 2007 11:37:00 +0100 From: "Nicolas Pouillard" Cc: caml-list Subject: Re: [Caml-list] How to Write a Pretty Printer for a DSL Using camlp4 To: echinuz echinuz References: <838783.64773.qm@web60123.mail.yahoo.com> In-Reply-To: <838783.64773.qm@web60123.mail.yahoo.com> Date: Sun, 25 Nov 2007 11:37:00 +0100 Message-Id: <1195986928-sup-8134@ausone.local> User-Agent: Sup/0.2 Content-Type: text/plain; charset=UTF-8 X-Miltered: at concorde with ID 4749507D.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; camlp:01 camlp:01 ocaml:01 toplevel:01 syntax:01 sig:01 syntax:01 sig:01 parsing:01 caml-list:01 expression:02 ast:02 ast:02 algebraic:03 module:03 Excerpts from echinuz echinuz's message of Sun Nov 25 09:46:22 +0100 2007: > Hi, > I'm writing a DSL where I'd like to leverage camlp4 for parsing and > printing. Right now, I'm having trouble with the pretty printer. As an > example, let's take the simple calculator example. With the following code, I > can replace the OCaml toplevel and and print the AST for a simple algebraic > expression: [...] > module Make (Syntax : Camlp4.Sig.Syntax) : Camlp4.Sig.Printer(Syntax.Ast).S = module Make (Syntax : Camlp4.Sig.Camlp4Syntax) : Camlp4.Sig.Printer(Syntax.Ast).S = [...] > module M = Camlp4.Register.Printer(Id)(Make) module M = Camlp4.Register.OCamlPrinter(Id)(Make) HTH, -- Nicolas Pouillard aka Ertai