From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by walapai.inria.fr (8.13.6/8.13.6) with ESMTP id pA2KZNFg027161 for ; Wed, 2 Nov 2011 21:35:23 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlkBALeosU7RVde2kGdsb2JhbABEqWoIIgEBAQEJCQ0HFAQhggsCLAEbHgMSEF0BEQEFASI1nQyCWwqLVIJghVQ9iHACBQqJBgSIBYwPjTk9g34 X-IronPort-AV: E=Sophos;i="4.69,445,1315173600"; d="scan'208";a="127818772" Received: from mail-ey0-f182.google.com ([209.85.215.182]) by mail1-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-SHA; 02 Nov 2011 21:35:17 +0100 Received: by eyd10 with SMTP id 10so856168eyd.27 for ; Wed, 02 Nov 2011 13:35:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=MyDicN3dqkSBc22qW6sdOe3OmPr9zpRGIqGhfu29/Dc=; b=qfPGr2ixL1kl/PzHqWCxjWWpWBh25/kraBS6uG7/cO5KNtNhFgmSbMhOTDZsVXk8Uo wkmbZu5nTvlNxKdXqB4kaX1bRBo6qZQ/WaunapzMetS8jbGWd+dUhojFo5V4Z02+ANGh EYR7wH669mljLJHfbh0ZqCcSdyHW8Zm3N88j4= MIME-Version: 1.0 Received: by 10.14.15.195 with SMTP id f43mr528989eef.233.1320266064578; Wed, 02 Nov 2011 13:34:24 -0700 (PDT) Received: by 10.14.95.197 with HTTP; Wed, 2 Nov 2011 13:34:24 -0700 (PDT) Date: Thu, 3 Nov 2011 05:34:24 +0900 Message-ID: From: Jun Furuse To: caml-list Content-Type: text/plain; charset=ISO-8859-1 Subject: [Caml-list] Is it possible to extend OCaml lexer rules via Camlp4? Hi, Is it possible for Camlp4 to implement an OCaml syntax extension (i.e. pa_*) which modifies the lexer of OCaml syntax? I have tried to override whole the syntax as follows, but it seems that it changes nothing...: ----------------------------------------------------------- open Camlp4 module Id : Sig.Id = struct let name = "pa_extlex" let version = "1.0" end module XLexer = Xlexer.Make(PreCast.Token) (* XLexer reimplements OCaml lexer with some extra rules *) module XGram = PreCast.MakeGram(XLexer) module Make (Syntax : Sig.Camlp4Syntax) = struct let _ = prerr_endline "Creating OCaml syntax with lexer extension" module M1 = OCamlInitSyntax.Make(PreCast.Ast)(XGram)(PreCast.Quotation) module M2 = Camlp4OCamlRevisedParser.Make(M1) module M3 = Camlp4OCamlParser.Make(M2) include M3 end let module M = Register.OCamlSyntaxExtension(Id)(Make) in () ----------------------------------- Jun