|
.cmo
'' or ``.cma
'').camlp4
'' runs the Camlp4 program. The first
options are objects (``.cmo
'') or library (``.cma
'')
files which are loaded, selecting different parsing and printing
operations. Among these first options, it is also possible to use the
option ``-I
'' to select directories where objects and library
files are searched. But, important remark: by default, the system does not searches in the current directory: to select some object file,
e.g. ``foo.cmo
'' in the current directory, write
``./foo.cmo
'' or add the option ``-I .
''.
|
/usr/local/lib/camlp4
: in the whole document, this
directory is named camlp4-lib-dir
). The provided files are:
pa_o.cmo
: OCaml.
pa_r.cmo
: Revised: this is an alternative syntax for the
language (chapter 6).
pr_o.cmo
: Pretty print with OCaml syntax. Add an
option -l
to the command line to specify a line length.
pr_r.cmo
: Pretty print with revised syntax. Add this option
-l
too.
pr_dump.cmo
: Dump the syntax tree
pa_oop.cmo
: (to be loaded after ``pa_o.cmo
'')
Parsers and streams, with OCaml syntax, without code
optimization, corresponding to what is internally generated by
the OCaml compiler.
pa_op.cmo
: (to be loaded after ``pa_o.cmo
'')
Parsers and streams, with OCaml syntax, with code optimization.
pa_rp.cmo
: (to be loaded after ``pa_r.cmo
'')
Parsers and streams, with revised syntax and code optimization.
pa_extend.cmo
: (to be loaded either after
``pa_o.cmo
'' or ``pa_r.cmo
'') Syntax extensions for the
Camlp4 grammar system (Chapter 4).
pa_ocamllex.cma
: (to be loaded after ``pa_o.cmo
''
or ``pa_r.cmo
'': ocamllex syntax (see section ??).
pa_macro.cmo
: add macros and IFDEF
statements
(conditional compilation) like C, in expressions or structure items. Add
the options -D
and -U
to the camlp4 command line. To
define the symbol FOO
, either use ``-DFOO
'' in the
camlp4 command line, e.g.:
camlp4o pa_macro.cmo -DFOO file.mlor make a file, e.g. ``
foo.ml
'', holding
Pa_macro.define "FOO";;compile it and load its corresponding object file:
camlp4o pa_macro.cmo ./foo.cmo file.mlTo undefine the symbol
FOO
, use either ``-UFOO
'' or
the function ``Pa_macro.undef
''. The statement
``IFDEF
'' can be used in a place of a structure item or an expression:
in this last case, ``ELSE
'' is mandatory:
IFDEF FOO THEN type t = A of int END;; let f x = IFDEF FOO THEN x + 1 ELSE x - 1 END;;
pa_ru.cmo
: (to be loaded after ``pa_r.cmo
'' only)
Add type constraints of type unit
inside sequences.
pr_op.cmo
:
Try to rebuild parsers and streams in OCaml syntax.
pr_rp.cmo
: Try to rebuild parsers and streams in revised syntax.
pr_extend.cmo
: Try to rebuilt EXTEND instructions.
pr_depend.cmo
: Print file dependencies.
camlp4o
'' is equivalent to:
camlp4 pa_o.cmo pa_op.cmo pr_dump.cmo
camlp4r
'' is equivalent to:
camlp4 pa_r.cmo pa_rp.cmo pr_dump.cmo
|
|
pr_dump.cmo
''. The OCaml compiler
``ocamlc
'' recognizes it as a dump, and does not apply another
parsing. In case of typing errors, the error is normally showed
in the input file.ocaml
'' has an option
``-pp
'' for calling a preprocessor which automatically deals
with intermediate files (see the documentation of OCaml). So,
the normal use of the combination Camlp4-OCaml is done by the
command:
ocamlc -pp "camlp4 camlp4-options" ocaml-options input-filesIt is often necessary to add the Camlp4 library directory in ocaml's path, using option ``
-I
''. For information, the Camlp4
command has an option ``-where
'' echoing the full name of this
directory.
|
pr_o.cmo
'', instead of
``pr_dump.cmo
'' for OCaml preprocessing, but it is not
recommended, for:
pa_o.cmo
accepts a syntax larger than OCaml's (some
syntax restriction is done in pr_dump.cmo
)
pr_o.cmo
'' for OCaml preprocessing. When the error is located
in a quotation (chapter 3) or in a syntax extension
(chapter 5), it is not always obvious to understand where
the error is exactly located, and there may be no location for the
error. Using temporarily camlp4 with ``pr_o.cmo
'' allows to see
the exact location of the error, which can be understood by the
programmer of the quotation expander or the syntax extension.
|
ocaml
'' can use Camlp4. In the toplevel,
you can load:
camlp4o.cma
'' to continue with
OCaml syntax.
camlp4r.cma
'' to continue with
the Revised syntax.
#load
'' and ``#use
'': for example, each
load of ``pa_o.cmo
'' or ``pa_r.cmo
'' would change
the current input syntax to be used in the next sentences.#use
'' are treated by the
current Camlp4 syntax too. Important remark: a syntax modification
takes place after the complete load of a file, not after each sentence
inside the file.
|
pr_dump.cmo
'', the other
printing files, displaying source text, are just provided for
convenience and their behaviors are not (yet) modifiable.