camlp4 (1)





NAME

       camlp4 - Pre-Precessor-Pretty-Printer for OCaml
       mkcamlp4 - Create custom camlp4
       ocpp - Universal preprocessor


SYNOPSIS

       camlp4 [ load-options ] [--] [ other-options ]
       camlp4o [ load-options ] [--] [ other-options ]
       camlp4r [ load-options ] [--] [ other-options ]
       camlp4o.cma
       camlp4r.cma
       mkcamlp4
       ocpp [ load-options ] file

       camlp4o.opt [--] [ other-options ]
       camlp4r.opt [--] [ other-options ]


DESCRIPTION

       camlp4  is  a  Pre-Processor-Pretty-Printer for OCaml, parsing a source
       file and printing some result on standard output.

       camlp4o and camlp4r are versions of  camlp4  with  some  files  already
       loaded (see further).

       camlp4o.cma and camlp4r.cma are files to be loaded in ocaml toplevel to
       use the camlp4 machinery

       mkcamlp4 creates camlp4 executables with almost the same  options  than
       ocamlmktop.  See further.

       ocpp  is  an  universal preprocessor, treating any kind of source file,
       generating the same text with the possible quotations expanded.

       camlp4o.opt and camlp4r.opt are versions of camlp4o  and  camlp4r  com-
       piled  by  the  native-code  compiler ocamlopt. They are faster but not
       extensible. And they are not available in all installations of  camlp4.


LOAD OPTIONS

       The  load options select parsing and printing actions recorded in OCaml
       object files (ending with .cmo or .cma). Several usage of these options
       are authorized. They must precede the other options.

       An optionnal -- may end the load options.

       -I directory
              Add  directory  in  the search path for files loaded. Unless the
              option -nolib is used, the camlp4 library directory is  appended
              to  the  path. Warning: there is no automatic search in the cur-
              rent directory: add "-I ." for this.


OTHER OPTIONS

       The others options are:

       file   Treat  file  as an interface file if it ends with .mli and as an
              implementation file if it ends with .ml.

       -intf file
              Treat file as an interface file, whatever its extension.

       -impl file
              Treat file as an implementation file, whatever its extension.

       -unsafe
              Generate unsafe accesses to arrays and strings.

       -noassert
              Do not compile assertion checks.

       -verbose
              More verbose in parsing errors.

       -QD file
              Dump in file in case of syntax error in the result of  a  quota-
              tion expansion.

       -o out-file
              Print the result on out-file instead of standard output. File is
              opened with open_out_bin (see OCaml library Pervasives).

       -v     Print the version number and exit.

       -help  Print the available options and exit. This  print  includes  the
              options possibly added by the loaded object files.

       The others options can be extended by loaded object files. The provided
       files add the following options:

       -l line-length
              Added by pr_o.cmo and pr_r.cmo: set  the  line  length  (default
              78).

       -sep string
              Added  by  pr_o.cmo  and  pr_r.cmo:  print  this  string between
              phrases instead of comments.

       -no_ss Added by pr_o.cmo: do not print double semicolons

       -D ident
              Added by pa_ifdef.cmo: define the ident.

       -U ident
              Added by pa_ifdef.cmo: undefine the ident.

           pa_r.cmo: revised syntax
           pa_rp.cmo: streams and parsers
           pa_lisp.cmo: lisp syntax
           pa_extend.cmo: syntax extension for grammars
           pa_extfold.cmo: extension of pa_extend with FOLD0 and FOLD1
           pa_extfun.cmo: syntax extension for extensible functions
           pa_fstream.cmo: syntax extension for functional streams
           pa_ifdef.cmo: add ifdef instruction (conditional compilation)
           pa_lefteval.cmo: left-to-right evaluation of parameters
           pa_olabl.cmo: old syntax for labels

       Printing files:
           pr_o.cmo: syntax of OCaml
           pr_op.cmo: try to rebuild streams and parsers syntax
           pr_r.cmo: revised syntax
           pr_rp.cmo: try to rebuild streams and parsers syntax
           pr_extend.cmo: try to rebuild EXTEND statements
           pr_extfun.cmo: try to rebuild extfun statements
           pr_dump.cmo: syntax tree
           pr_depend.cmo: file dependencies
           pr_null.cmo: no output

       Quotation expanders:
           q_MLast.cmo: syntax tree nodes
           q_phony.cmo: keeping quotations for pretty printing

       The command camlp4o is a shortcut for:
           camlp4 pa_o.cmo pa_op.cmo pr_dump.cmo

       The command camlp4r is a shortcut for:
           camlp4 pa_r.cmo pa_rp.cmo pr_dump.cmo

       The file camlp4o.cma can be loaded in the toplevel to start camlp4 with
       OCaml syntax.

       The file camlp4r.cma can be loaded in the toplevel to start camlp4 with
       revised syntax.


MKCAMLP4

       mkcamlp4 creates camlp4 executables with almost the same  options  than
       ocamlmktop.   The  only difference is that the interfaces to be visible
       must be explicitly added in the command line as ".cmi" files. For exam-
       ple, how to add the the OCaml module "str":
           mkcamlp4 -custom str.cmi str.cma -cclib -lstr \
               -o camlp4str


FILES

       Camlp4 library directory in the present installation:
       /usr/lib/ocaml/camlp4


SEE ALSO

       Camlp4 - tutorial
       Camlp4 - reference manual