Changes from 6.07 are:
* Updated for ocaml version 4.01.0
* Added 'MLast.loc_of_with_constr'.
* Fixed bug toplevel with revised syntax; "= 'a" was missing
in output in that example:
# module type A = sig module type S = 'a; end;
module type A = sig module type S; end
* Now accept lowercase ident for module types, like ocaml does.
Accepted also in revised syntax.
* (experimental) Now, in revised syntax, a "." followed by
a newline is interpreted as a ";", allowing to end phrases with ".".
Drawback: will syntax error when writing a record/module access in two
lines ending the first one with "." like:
foo.
bar
* Accept now "match with | | ... end" in revised syntax, with
a required "|" in the first case, as alternative syntax for match.
* Added function 'Pcaml.value greek_ascii_equiv' giving
an ascii equivalent to a greek (utf8) letter representing a type
parameter. E.g. 'a' for 'α', 'b' for 'β', and so on.
* Fixed bug no locations built in some cases of constructors.
* Fixed bug: in toplevel, the highlighting of errors did not work.
* Added option '-dquot' to specify the default quotation name.
and the ability to use "#option" directive with two parameters. Therefore,
we can use either (e.g.):
-dquot "expr"
in the command line of camlp5 or
#option "-dquot" "expr"
inside a file.
* Now 'make' displays a message how to compile, instead
of doing 'make out'. Old behaviour of 'make' must be now 'make out'.
* Now accept identifiers starting with a greek letter as variable names.
* Fixed bug: DEFINE FOO=32 while using pa_macro.cmo did not work
due to a bad order in grammar insertion.
* Fixed bug: parsing greek letters as type variable in
constructor declaration did not work when building Camlp5.
Camlp5 Version 6.06:
--------------------
* [01 Jun 12] Added compatibility with OCaml 4.00.0 and (incoming) 4.01.0.
* [18 Mar 12] Fixed bug in pr_o: [(let module M = ... in x); y] was
displayed without parentheses.
* [14 Mar 12] Added compatibility with OCaml 3.12.2.
* [02 Mar 12] Added compatibility with JoCaml 3.12.0 and 3.12.1.
* [02 Mar 12] Completed with all JoCaml statements in ocaml syntax.
Todo: pretty print.
Camlp5 Version 6.05:
--------------------
* [02 Mar 12] Added compatibility with JoCaml trunk.
* [02 Mar 12] Added option -oname in configure to change ocaml
command name. The bytecode compiler, native compiler and bytecode
runtime are respectively <oname>c, <oname>opt and <oname>run.
The default is 'ocaml', implying that the executables are ocamlc,
ocamlopt and ocamlrun. Setting it to 'jocaml', fo example, use
jocamlc, jocamlopt and jocamlrun.
Camlp5 Version 6.04:
--------------------
* [01 Mar 12] Added option -name in configure to change command name
useful to have transitional and strict versions installed with
different names. Default: camlp5.
* [01 Mar 12] The default mode at configuration time is now 'strict'.
Camlp5 Version 6.03:
--------------------
* [09 Jan 12] Updated compatibility with OCaml trunk version (3.13.0).
Camlp5 Version 6.02.3:
----------------------
* [20 Oct 11] Updated compatibility with OCaml current version 3.13.0.
* [20 Sep 11] Added missing syntax "_" in ending patt records (rev: "_ = _").
ep 11] Fixed bug pattern -1L was refused in normal syntax.
* [21 May 11] Fixed bug impacting files using q_ast.cmo extension (bad ast).
* [03 May 11] Fixed bug: lexeme errors in revised syntax + utf8.
* [24 Mar 11] Fixed bug: M.(a+b) was refused in normal syntax.
* [16 Mar 11] Fixed bug: incorrect compilation of label patterns of the
form ~a:b (or ~{a = b} in revised syntax) in class declarations.
* [16 Mar 11] Fixed bug: error while printing label patterns ~a:b with
pr_o.cmo (error message "labels not pretty printed (in patt)").
Camlp5 Version 6.02.2:
----------------------
* [15 Mar 11] Fixed bug: bad AST generated for class identifier prefixed
by a module.
* [15 Mar 11] Fixed differences of locations between OCaml and camlp5o (e.g.
in .annot files)
* [17 Feb 11] Pretty module now considers strings as utf8 encoded (impacts
computation of strings lengths).
* [04 Feb 11] Revised syntax: completed syntax multi labels, ~{x=y; z=t}
(equivalent to ~{x=y} ~{z=t}) in patterns (in 6.02.1 was implemented
only in expressions).
* [28 Jan 11] Added installed module 'Reloc': relocations and equalities
over syntax trees.
* [26 Jan 11] Fixed bug in camlp5o.opt: did not accept '$' as token.
* [18 Jan 11] Fixed bug: private flags in type manifest were not correctly
treated.
* [06 Dec 10] Fixed bug in pr_o.cmo: label expressions were not correctly
pretty printed: f ~a gave f a.
Camlp5 Version 6.02.1:
----------------------
* [05 Dec 10] In module Grammar.Entry.print, added extra parameter ppf
to print in other formatter than (the default) stdout.
* [21 Nov 10] Revised syntax: added syntax multi labels, ~{x=y; z=t}
equivalent to ~{x=y} ~{z=t}
* [16 Nov 10] Updated compatibility with OCaml version 3.13.0-gadt.
Camlp5 Version 6.02:
--------------------
* [12 Nov 10] Added compatibility with OCaml GADT version.
* [12 Nov 10] pa_macro: added ability to use ELSIFDEF in match cases (the
ending ELSE part being still optional).
* [08 Nov 10] Fixed bugs 1/ in pa_o: !Foo.bar was interpreted as (!Foo).bar
instead of !(Foo.bar) 2/ in top/camlp5_top.cma: the file ast2pt.cmo was
missing.
Camlp5 Version 6.01:
--------------------
* [03 Nov 10] Added in revised syntax for labels ~{lab x = y} as shortcut
for ~{lab = fun x -> y}.
* [30 Oct 10] Fixed bug in 'configure': option -libdir did not work.
Camlp5 Version 6.00:
--------------------
* [28 Oct 10] Updated compatibility with OCaml trunk version (3.13.0).
* [01 Oct 10] Make compilation with "make -j" (parallel make) work.
* [29 Sep 10] Fixed bug when using constructors named 'True' and 'False'.
* [24 Sep 10] Fixed many bugs of parsing comments (typically about quotes).
* [23 Sep 10] Fixed bug in pretty printing comments containing '"'.
* [22 Sep 10] Fixed bug bad result of unary minus functions.
* [22 Sep 10] Fixed bug in printing parameters of types of 'with constraint'.
* [22 Sep 10] Fixed bug in revised syntax for class_types. Now application.
does not need parenthesis any more (like for other entries of that kind).
* [19 Sep 10] In grammars, added list with separator with optional ending
separator (LIST0 .. SEP OPT_SEP and LIST1 .. SEP OPT_SEP).
* [19 Sep 10] Completed missing statements in particular in objects,
classes, and first class modules.
* [08 Sep 10] Added option '-flag O' of pr_r.cmo and pr_o.cmo which
add location comments in the output.
* [08 Sep 10] Added new chapters in the documentation:
- Directives
- Redefining OCaml syntax
* [08 Sep 10] Fixed option '-flag E' (equilibrate cases) of pr_r.cmo and
pr_o.cmo which did not work.
* [06 Sep 10] Changed revised syntax of 'inherit something [params]'
into 'inherit [params] something' (like in normal syntax).
* [06 Sep 10] Added missing statements:
- 'module type of' as module type,
- '(module ... : ...)' as expression,
- '(val ...)' ('value' in revised syntax) as module expression.
* [02 Sep 10] Added directive "#option" (in files, not in toplevel).
* [02 Sep 10] pa_macro.cmo: phrases inside IFDEF statements now are
implementation or interface items, which means:
- ability to use directives which are, therefore, conditional.
- in revised syntax must end with semicolon (incompatibility with
previous versions of Camlp5 where these semicolons are syntax
errors).
- in revised syntax, ability to put several phrases without having
to use "declare .. end".
* [30 Aug 10] pa_macro.cmo: added ability to use ELSIFDEF and ELSIFNDEF
in expressions, structure items and signature items.
* [27 Aug 10] Fixed bug in pa_macro.cmo A AND B computed B AND B.
* [26 Aug 10] Fixed wrong behaviour: char '"' was printed '\"'.
* [25 Aug 10] Added option -no-opt in configure, not to use .opt versions
of OCaml compilers.
* [20 Aug 10] Added compatibility for OCaml version 3.11.3.
* [18 Aug 10] Added function "get" in library module "Ploc", and a
statement "lprintf" similar to "pprintf" added by the syntax
extension kit "pa_pprintf.cmo".
This version is compatible with the ocaml 3.12.0 in tree
Fix pkg/43956 and pkg/43957
Changes:
Camlp5 Version 5.15:
* [09 Aug 10] Updated compatibility for OCaml current version 3.12.1.
* [09 Aug 10] Upgraded compatibility for OCaml released version 3.12.0.
* [29 Jul 10] Added ability to write AST quotations with a colon before
the '<' (e.g. "<:expr:< foo >>") which, in pattern position, generates
a binding of the variable "loc" at the top node:
1/ normal usage (still working):
"fun [ <:expr< x >> -> 0 ]"
which is equivalent to:
"fun [ MLast.ExLid _ (Ploc.VaVal "x") -> 0 ]
2/ new usage:
"fun [ <:expr:< x >> -> 0 ]"
which is equivalent to:
"fun [ MLast.ExLid loc (Ploc.VaVal "x") -> 0 ]
* [21 Jun 10] Added compatibility for OCaml trunk version 3.13.0.
* [29 Apr 10] Fixed bug in pr_depend.cmo: a.B.c did not add module B.
Camlp5 Version 5.14:
* [28 Apr 10] Updated compatibility for OCaml current version 3.12.0.
* [31 Mar 10] Fixed bug in pr_o.cmo: error message when using "#use"
The update lets camlp5 and what depends on it work with the updated ocaml.
Changes:
* Added compatibility with OCaml 3.11.2.
* Updated compatibility with OCaml 3.12.0.
* Added 'lazy' patterns (added in OCaml version 3.11).
* Fixed bug in pr_r.cmo: did not always break after "in" (in
"let..in" statements) even with -flag l.
* Fixed bug in pr_r.cmo: missing case "#use" for structure and
signature items.
Changes are:
- compatibility with recent versions of ocaml
- possible use of IFDEF and IFNDEF in record labels declarations
- addition of Plexer.utf8_lexing
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
Changes:
* [05 Jun 08] Changed all '#!/bin/bash" in shells scripts into '#!/bin/sh'
and changed all $(...) into `...` because there are compatibilities
problems according to Unix versions.
* [31 Mar 08] Fixed bug: "let f ~_x () = ()" generated syntax error.
* [31 Mar 08] Fixed bug: "x $ y" generated syntax error (normal syntax).
* [02 Jan 08] Added compatibility with OCaml 3.10.3.
Camlp5 Version 5.08:
--------------------
* [08 Feb 08] Fixed bug in normal syntax: a.{x,y} (access to big array) was
interpreted as a.{(x,y)}.
* [22 Jan 08] Added missing cases in printers pr_o and pr_r which displayed
the message "unable to print ...".
* [02 Jan 08] Added compatibility with OCaml 3.09.4 and 3.10.2.
* [21 Jan 08] Fixed bug under windows: the file META could not be build
if the library path name contained colons.
* [13 Jan 08] Added missing man page for camlp5sch (link to the same man
page as camlp5).
* [05 Jan 08] Added "pr_extprint.cmo", printer rebuilding EXTEND_PRINTER
statements in their original syntax.
* [05 Jan 08] Fixed bug in EXTEND_PRINTER statement: the match cases with
"when" did not work.
Camlp5 Version 5.07:
--------------------
* [02 Jan 08] Added "pprintf" statement to use the Camlp5 pretty print
system more easily and shortly.
* [27 Dec 07] Added function [Grammar.Entry.parse_all] returning the
list of all solutions when using the parsing algorithm [Backtracking].
Camlp5 Version 5.06:
--------------------
* [19 Dec 07] Upgraded to add compatibilitly with OCaml version 3.10.1.
Camlp5 Version 5.05:
--------------------
* [17 Dec 07] Added function [Pcaml.quotation_location] returning the
location of the quotation in the source in the context of a quotation
expander.
* [04 Dec 07] Added generation of file META for ocamlfind in directory
etc (built but not installed).
* [28 Nov 07] Upgraded to reflect changes done in parse tree in current
OCaml (version 3.11+dev6).
* [27 Nov 07] Fixed bug in installation. Some files where installed in
the bin directory instead of lib directory.
* [27 Nov 07] Fixed bug in parsing comments: comments containing '\' where
incorrectly parsed.
Camlp5 Version 5.04:
--------------------
* [24 Nov 07] Fixed bug in install under MSVC Windows: object and library
files were not installed (using wrong extensions).
* [24 Nov 07] Fixed bug under Windows: line numbers in error messages were
wrong (twice the normal value).
* [24 Nov 07] Added ability to change the parsing algorithm of extensible
grammars, with the function "Grammar.set_algorithm" whose parameter can
be "predictive" or "backtracking".
* [22 Nov 07] Added backtracking parsers. Functions defined in the module
Fstream (already containing functional streams and parsers). Syntax
added in pa_fstream.cmo (already containing syntax for functinal streams
and parsers). The new syntax uses "bparser" instead of "fparser" and
a backtracking parser returns, together with its result and its
remaining stream, the continuation to compute the next solution.
Camlp5 Version 5.03:
--------------------
* [20 Nov 07] Added commands mkcamlp5 and mkcamlp5.opt to build camlp5
executables with predefined loaded modules. Added installation of ocpp
with name ocpp5, instead of just ocpp.
* [19 Nov 07] Added more installed cmx and cmxa files to allow building
native code linking of all combinations of Camlp5.
* [14 Nov 07] Fixed bug in pr_o.cmo: failed with printing "{a.(i) with ...}".
* [14 Nov 07] Fixed bug under Windows for the printers (pr_o.cmo, pr_r.cmo
and pr_scheme.cmo): extra return character '\r' was added at end of
lines.
* [09 Nov 07] Fixed bug in camlp5o.opt in strict mode: did not parse
correctly, in particular type expression (the version "camlp5o" without
".opt" however worked).
* [29 Oct 07] Added [Pcaml.inter_phrases], a way to set, by program,
the value of the "-sep" option of the printers kits.
* [28 Oct 07] Fixed bug in pa_fstream.cmo (functional parsers): the
keyword after "match with" was "parser" instead of "fparser" and
its code was wrong.
* [27 Oct 07] Added a default lexing buffer (in module [Plexing]) for
pa_lexer.cmo: then, the programmer does not need to write it any
more.
Camlp5 Version 5.02:
--------------------
* [14 Oct 07] Changed 'pa_lex.cmo' into 'pa_lexer.cmo' with a different
syntax (see the documentation).
* [14 Oct 07] In the EXTEND statement, added "LIKE s" as possible
level position to specify a level containing a rule containing "s"
in its keywords or tokens.
* [11 Oct 07] Rewritten parsers and printers in Scheme syntax. Deleted
old module Spretty.
Camlp5 is a preprocessor and pretty-printer for OCaml programs. It also
provides parsing and printing tools.
As a preprocessor, it allows to:
- extend the syntax of OCaml,
- redefine the whole syntax of the language.
As a pretty printer, it allows to:
- display OCaml programs in an elegant way,
- convert from one syntax to another,
- check the results of syntax extensions.
Camlp5 also provides some parsing and pretty printing tools:
- extensible grammars
- extensible printers
- stream parsers and lexers
- pretty print module
It works as a shell command and can also be used in the OCaml toplevel.