Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Caml-list] Issue to compile a program with camlp4 in OCaml 3.10.0

14 views
Skip to first unread message

David MENTRE

unread,
Sep 22, 2008, 4:42:01 PM9/22/08
to caml...@inria.fr
Hello,

I'm trying to compile an OCaml program I haven't written. I'm compiling
it on an Ubuntu 8.04, OCaml 3.10.0.

The compilation fails with following error:
"""
ocamlopt -pp "camlp4o pa_op.cmo" -I src -c src/common.ml
File "src/common.ml", line 5, characters 101-102:
Parse error: "in" expected after [binding] (in [expr])
Preprocessor error
"""

Here is the beginning of the relevant file:
"""
(** Common utility functions. *)

(* space *)

let heap_size () : float = float_of_int (Gc.stat ()).Gc.heap_words *. float_of_int (Sys.word_size / 8) (* in bytes *)

"""

This expression seems correct to me. Is this issue related to one of the
fixes on camlp4 that where made in 3.10.1?

Any idea how to work around this issue (without recompiling latest ocaml
and all the needed libraries)?

Sincerly yours,
david
--
GPG/PGP key: A3AD7A2A David MENTRE <dme...@linux-france.org>
5996 CC46 4612 9CA4 3562 D7AC 6C67 9E96 A3AD 7A2A

_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

Gabriel Kerneis

unread,
Sep 23, 2008, 2:53:19 AM9/23/08
to David MENTRE, caml...@inria.fr
On Mon, Sep 22, 2008 at 10:41:52PM +0200, David MENTRE wrote:
> ocamlopt -pp "camlp4o pa_op.cmo" -I src -c src/common.ml
> File "src/common.ml", line 5, characters 101-102:
> Parse error: "in" expected after [binding] (in [expr])
> Preprocessor error
>
> let heap_size () : float = [...]

Does the following solve the problem?

val heap_size () : float = [...]

If it does, it has to do with revised syntax and you should change the flags
of camlp4 (but it believe camlp4o loads the classic syntax, so it might be a
bug as well).

Regards,
--
Gabriel Kerneis

Сергей Плаксин

unread,
Sep 23, 2008, 4:08:49 AM9/23/08
to David MENTRE, caml...@inria.fr
On Mon, 2008-09-22 at 22:41 +0200, David MENTRE wrote:
> Hello,
>
> I'm trying to compile an OCaml program I haven't written. I'm compiling
> it on an Ubuntu 8.04, OCaml 3.10.0.
>
> The compilation fails with following error:
> """
> ocamlopt -pp "camlp4o pa_op.cmo" -I src -c src/common.ml
> File "src/common.ml", line 5, characters 101-102:
> Parse error: "in" expected after [binding] (in [expr])
> Preprocessor error
> """
>
> Here is the beginning of the relevant file:
> """
> (** Common utility functions. *)
>
> (* space *)
>
> let heap_size () : float = float_of_int (Gc.stat ()).Gc.heap_words *. float_of_int (Sys.word_size / 8) (* in bytes *)

This code successfuly compiled on my ocaml 3.10.2 without any
"pa_op.cmo", what is pa_op.cmo?

Richard Jones

unread,
Sep 23, 2008, 6:18:40 AM9/23/08
to David MENTRE, caml...@inria.fr
On Mon, Sep 22, 2008 at 10:41:52PM +0200, David MENTRE wrote:
> I'm trying to compile an OCaml program I haven't written. I'm compiling
> it on an Ubuntu 8.04, OCaml 3.10.0.

3.10.0 contains quite a few camlp4 parsing bugs which are fixed in
version 3.10.2. (But unfortunately I still have to workaround them
because Fedora 8 is stuck at 3.10.0 ...)

Best to upgrade if you can.

Rich.

--
Richard Jones
Red Hat

David MENTRE

unread,
Sep 23, 2008, 12:22:38 PM9/23/08
to caml...@inria.fr
Hello Gabriel,

On Tue, Sep 23, 2008 at 08:53, Gabriel Kerneis <ker...@enst.fr> wrote:
> Does the following solve the problem?
>
> val heap_size () : float = [...]
>
> If it does, it has to do with revised syntax and you should change the flags
> of camlp4 (but it believe camlp4o loads the classic syntax, so it might be a
> bug as well).

No, it gives me another error:


"""
ocamlopt -pp "camlp4o pa_op.cmo" -I src -c src/common.ml

File "src/common.ml", line 5, characters 0-3:
Parse error: illegal begin of implem
Preprocessor error
"""

Yours,
d.

David MENTRE

unread,
Sep 23, 2008, 12:30:31 PM9/23/08
to Сергей Плаксин, caml...@inria.fr
Hello Сергей,

On Tue, Sep 23, 2008 at 10:08, Сергей Плаксин <se...@stork.ru> wrote:
>> Here is the beginning of the relevant file:
>> """
>> (** Common utility functions. *)
>>
>> (* space *)
>>
>> let heap_size () : float = float_of_int (Gc.stat ()).Gc.heap_words *. float_of_int (Sys.word_size / 8) (* in bytes *)
>
> This code successfuly compiled on my ocaml 3.10.2 without any
> "pa_op.cmo",

Could you compile it with 'ocamlopt -pp "camlp4o pa_op.cmo"', just to
check that the error is fixed using ocaml 3.10.2?

> what is pa_op.cmo?

I don't know.

Yours,
d.

David MENTRE

unread,
Sep 23, 2008, 12:31:59 PM9/23/08
to Richard Jones, caml...@inria.fr
Hello Richard,

On Tue, Sep 23, 2008 at 12:18, Richard Jones <ri...@annexia.org> wrote:
> Best to upgrade if you can.

That's the answer I feared. ;-) As next Ubuntu should be released in a
few weeks and has OCaml 3.10.2, I'll give it a try.

Yours,
d.

Michel Mauny

unread,
Sep 24, 2008, 2:56:49 AM9/24/08
to Сергей Плаксин, caml...@inria.fr, David MENTRE
Hi,

2008/9/23 О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ <se...@stork.ru>

>
> what is pa_op.cmo?


It's a CamlP4 parser for the extension of ocaml classical syntax with
streams parsers. Decoding proceeds as follows:

"pa_" stands for parser, "o" for ocaml syntax, and "p" for stream parsers.

-- MM

0 new messages