Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: forum@x9c.fr
To: Caml_mailing list <caml-list@yquem.inria.fr>
Subject: Re: [Caml-list] weird behavior with camlp4o
Date: Wed, 09 Apr 2008 10:07:39 +0200	[thread overview]
Message-ID: <1207728459.47fc794b4e6f8@imp.ovh.net> (raw)
In-Reply-To: <1207727460-sup-1852@port-ext16.ensta.fr>

Selon Nicolas Pouillard <nicolas.pouillard@gmail.com>:

> Excerpts from xclerc's message of Wed Apr 09 09:48:22 +0200 2008:
> > Selon Olivier Andrieu <oandrieu@gmail.com>:
> >
> > > On Wed, Apr 9, 2008 at 9:29 AM,  <forum@x9c.fr> wrote:
> > > > Selon "Andrew I. Schein" <andrew@andrewschein.com>:
> > > >  > Greetings list -
> > > >  >
> > > >  > I was playing around with OCaml 3.10.2 camlp4o like this:
> > > >  >
> > > >  > camlp4o pa_breakcont.cmo sample1.ml
> > > >  >
> > > >  > with my macro pa_breakcont.cmo and got the expected macro
> translation
> > > >  > printed to my terminal.  However, when I type:
> > > >  >
> > > >  > camlp4o pa_breakcont.cmo sample1.ml > out.ml
> > > >  >
> > > >  > out.ml contains binary output.  Am I misusing camlp4o?
> > > >
> > > >  I have encountered the same problem a few days ago while working on
> > > >  Ocaml-Java to make it camlp4-compatible.
> > > >
> > > >  The fact is that the kind of output (binary dump of abstract tree or
> > > >  source code in textual form) is chosen according to the nature of the
> > > >  output file descriptor. If the output file descriptor denotes a tty
> > > >  then the textual form is chosen, otherwise the binary form is chosen.
> > > >
> > > >  That being said, I don't know what is the rationale of this choice,
> > > >  as I have not come up with a use case for the binary form.
> > >
> > > It's simply more efficient for ocamlc or ocamlopt when camlp4 is
> > > called via the -pp option: no need to pretty-print and then reparse
> > > the source.
> >
> > Well, this is what I thought at first but, if I am not mistaken, when
> > you use the '-pp' option of a compiler, a command of the following form
> > is executed: "camlp4XXX source-file.ml > tmp-file.ml".
> > Then the "tmp-file.ml" is actually compiled instead of the
> "source-file.ml".
> >
> > So, it seems that compilers go through the textual form.
>
> Nop, the compiler knows both binary and textual formats.

My mistake. Sorry for the noise.
In fact, I mixed up the actual behaviour of camlp4 with the awful
hack I set up to make OCaml-Java camlp4-aware. As I don't know any
pure-Java way to know if a file descriptor denotes a tty, I just
pretend that descriptor "1" is always a tty. As a consequence, camlp4
(when run by OCaml-Java) always outputs the textual form. This in turn
implies that compilers using the '-pp' option will go through the
textual form.

This seemed to work like a charm but I totally missed the location problem
you point out. This should make me craft another hack ...
Thanks for the information.


Xavier Clerc

PS: the 'camlp4' patches for OCaml-Java are not currently applied to the
released version
PPS: if anyone knows a reliable pure-Java way to determine if a Java output
stream is related to a tty, I would just avoid a terrible hack ...


  reply	other threads:[~2008-04-09  8:08 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-09  2:45 Andrew I. Schein
2008-04-09  7:29 ` [Caml-list] " forum
2008-04-09  7:36   ` Olivier Andrieu
2008-04-09  7:48     ` forum
2008-04-09  7:52       ` Nicolas Pouillard
2008-04-09  8:07         ` forum [this message]
2008-04-09  7:50     ` Nicolas Pouillard

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=1207728459.47fc794b4e6f8@imp.ovh.net \
    --to=forum@x9c.fr \
    --cc=caml-list@yquem.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