SYNOPSIS

camlp5 [ load-options ] [--] [ other-options ]

camlp5o [ load-options ] [--] [ other-options ]

camlp5r [ load-options ] [--] [ other-options ]

camlp5sch [ load-options ] [--] [ other-options ]

camlp5o.cma

camlp5r.cma

camlp5sch.cma

mkcamlp5

mkcamlp5.opt

ocpp5 [ load-options ] file

camlp5o.opt [--] [ other-options ]

camlp5r.opt [--] [ other-options ]

DESCRIPTION

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

camlp5o, camlp5r and camlp5sch are versions of camlp5 with some files already loaded (see further).

camlp5o.cma, camlp5r.cma and camlp5sch.cma are files to be loaded in ocaml toplevel to use the camlp5 machinery

mkcamlp5 and mkcamlp5.opt creates camlp5 executables with almost the same options than ocamlmktop. See further.

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

camlp5o.opt and camlp5r.opt are versions of camlp5o and camlp5r compiled by the native-code compiler ocamlopt. They are faster but not extensible. And they are not available in all installations of camlp5.

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 optional -- may end the load options.

-Idirectory

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

-where

Print camlp5 library directory name and exit.

-nolib

No automatic search for objects files in camlp5 library directory.

object-file

The file is loaded in camlp5 core.

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.

-intffile

Treat file as an interface file, whatever its extension.

-implfile

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.

-QDfile

Dump in file in case of syntax error in the result of a quotation expansion.

-oout-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:

-lline-length

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

-sepstring

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

-Dident

Added by pa_macro.cmo: define the ident.

-Uident

Added by pa_macro.cmo: undefine the ident.

PROVIDED FILES

These files are installed in the directory /usr/lib/ocaml/camlp5.

Parsing files:

	pa_r.cmo: revised syntax
	pa_rp.cmo: streams and parsers
	pa_lexer.cmo: lexers
	pa_o.cmo: normal syntax
	pa_op.cmo: streams and parsers
	pa_oop.cmo: streams and parsers (without code optimization)
	pa_scheme.cmo: scheme 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_extprint.cmo: syntax extensions for extensible printers
	pa_pprintf.cmo: syntax extension for pprintf statement
	pa_fstream.cmo: syntax extension for functional streams
	pa_macro.cmo: add macros (ifdef, define) like in C
	pa_lefteval.cmo: left-to-right evaluation of parameters
	pa_pragma.cmo: directive #pragma

Printing files:

	pr_r.cmo: revised syntax without objects and labels
	pr_ro.cmo: revised syntax for objects and labels
	pr_rp.cmo: try to rebuild streams and parsers syntax
	pr_o.cmo: normal syntax
	pr_op.cmo: try to rebuild streams and parsers syntax
	pr_scheme.cmo: Scheme syntax
	pr_schemep.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_extprint.cmo: try to rebuild EXTEND_PRINTER statements
	pr_dump.cmo: dump syntax tree for ocaml compiler
	pr_depend.cmo: file dependencies
	pr_null.cmo: no output

Quotation expanders:

	q_MLast.cmo: syntax tree nodes (in revised syntax)
	q_ast.cmo: syntax tree nodes in user full syntax
	q_phony.cmo: keeping quotations for pretty printing

The command camlp5o is a shortcut for:

	camlp5 pa_o.cmo pa_op.cmo pr_dump.cmo

The command camlp5r is a shortcut for:

	camlp5 pa_r.cmo pa_rp.cmo pr_dump.cmo

The command camlp5sch is a shortcut for:

	camlp5 pa_scheme.cmo pr_dump.cmo

The file camlp5o.cma can be loaded in the toplevel to start camlp5 with OCaml syntax.

The file camlp5r.cma can be loaded in the toplevel to start camlp5 with revised syntax.

The file camlp5sch.cma can be loaded in the toplevel to start camlp5 with Scheme syntax.

MKCAMLP5

mkcamlp5 and mkcamlp5.opt creates camlp5 executables with almost the same options than ocamlmktop. The version mkcamlp5.opt can create native code executables, faster but not extensible.

For mkcamlp5, the interfaces to be visible must be explicitly added in the command line as ".cmi" files. For example, how to add the the OCaml module "str":

	mkcamlp5 -custom str.cmi str.cma -cclib -lstr -o camlp5str

ENVIRONMENT VARIABLE

The following environment variable is also consulted:

CAMLP5PARAM

Set the grammars parsing algorithm parameters. This variable must be a sequence of parameter specifications. A parameter specification is a letter optionally followed by an = and a value. There are four possible parameters:

b(backtrack)

Set the backtrack algorithm as default.

t(trace)

Trace symbols (terminals and non-terminals) while parsing with backtracking.

y(trace-stalling)

In backtracking, trace the advance in the input stream (number of unfrozen tokens) and the possible stalling (number of tokens tests).

l(maximum-stalling)

Set the maximum stalling value.

FILES

Library directory of camlp5 in the present installation:

/usr/lib/ocaml/camlp5

RELATED TO camlp5sch…

Camlp5 - Reference Manual

ocamlc(1), ocaml(1), ocamlmktop(1).

AUTHOR

Daniel de Rauglaudre, INRIA Rocquencourt.