caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Olivier Andrieu <andrieu@ijm.jussieu.fr>
To: Sebastien.Hinderer@ens-lyon.org
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Syntactic inclusion of a.ml in b.ml ?
Date: Sat, 09 Apr 2005 13:55:36 +0200 (CEST)	[thread overview]
Message-ID: <20050409.135536.74751436.oandrieu@nerim.net> (raw)
In-Reply-To: <20050408174142.GA1804@galois>

[-- Attachment #1: Type: Text/Plain, Size: 745 bytes --]

 > Sébastien Hinderer [Fri, 8 Apr 2005]:
 > Dear all,
 > 
 > (How) is it possible to include syntactically a file a.ml in a file
 > b.ml ?
 > 
 > One method that seems to w)rk is to rename b.ml to b.ml.c,
 > and then have in b.ml.c a line saying
 > #include "a.ml"
 > And with this, gcc -E b.ml.c > b.ml
 > produces a file that ocamlc can apparently handle.
 > 
 > But is this considered a good solution, 

not really : IIRC ocaml doesn't follow the same syntactic conventions
as C and the C preprocessor could report errors on valid caml code

 > or is some better solution available ?

you could use camlp4 : the attached syntax extension does this. (Mind
that it works only for parsing, the printer apparently gets confused).

-- 
   Olivier

[-- Attachment #2: pa_inc.ml --]
[-- Type: Text/Plain, Size: 403 bytes --]

#load "pa_extend.cmo";;

let include_file file =
  let ic = open_in file in
  let (implem, _) = !Pcaml.parse_implem (Stream.of_channel ic) in
  close_in ic ;
  (implem, true)

EXTEND
  GLOBAL: Pcaml.implem ;

  Pcaml.implem:
    [ [ "INCLUDE" ; file = STRING ; ";;" -> include_file file
    ] ];
END

(* Local Variables: *)
(* compile-command: "ocamlc -pp camlp4o -I +camlp4 -c pa_inc.ml" *)
(* End: *)

  parent reply	other threads:[~2005-04-09 11:55 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-08 17:41 Sébastien Hinderer
2005-04-09 10:35 ` [Caml-list] " Richard Jones
2005-04-09 13:20   ` Sébastien Hinderer
2005-04-09 14:45     ` [Caml-list] " Radu Grigore
2005-04-09 15:49       ` Sébastien Hinderer
2005-04-09 21:15         ` [Caml-list] " Radu Grigore
2005-04-09 17:51   ` [Caml-list] " Robert Roessler
2005-04-09 21:27     ` William D.Neumann
2005-04-10 16:53     ` Richard Jones
2005-04-09 11:55 ` Olivier Andrieu [this message]
2005-04-09 12:54 ` sejourne_kevin
2005-04-09 21:16 ` Martin Jambon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050409.135536.74751436.oandrieu@nerim.net \
    --to=andrieu@ijm.jussieu.fr \
    --cc=Sebastien.Hinderer@ens-lyon.org \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).