summaryrefslogtreecommitdiff
path: root/ocaml-binary-annot/camlp4/CHANGES
diff options
context:
space:
mode:
Diffstat (limited to 'ocaml-binary-annot/camlp4/CHANGES')
-rw-r--r--ocaml-binary-annot/camlp4/CHANGES898
1 files changed, 898 insertions, 0 deletions
diff --git a/ocaml-binary-annot/camlp4/CHANGES b/ocaml-binary-annot/camlp4/CHANGES
new file mode 100644
index 0000000000..ef48fc4251
--- /dev/null
+++ b/ocaml-binary-annot/camlp4/CHANGES
@@ -0,0 +1,898 @@
+- [...]
+ In the revised syntax of parsers the "?" is now a "??" like in the orignal
+ syntax to not conflict with optional labels.
+
+- [29 Jun 05] Add private row types. Make "private" a type constructor
+ "TyPrv" rather than a flag. (Jacques)
+
+- [09 Jun 04] Moved "-no_quot" option from pa_o to camlp4, enabling to
+ use it indepently fom pa_o.cmo.
+
+- [17 Nov 04] Renamed "loc" into "_loc", introducing an incompatibility
+ with existing code (3.08.x and before). Such code can generally run
+ unmodified using the -loc option (camlp4 -loc "loc").
+
+Camlp4 Version 3.08.2
+------------------------
+- [07 Oct 04] Changes in the interfaces plexer.mli and pcaml.mli:
+ - plexer.mli: introduced a new lexer building function `make_lexer',
+ similar to `gmake', but returning a triple of references in addition
+ (holding respectively the character number of the beginning of the
+ current line, the current line number and the name of the file being
+ parsed).
+ - pcaml.mli: a new value `position'. A global reference to a triple like
+ the one mentioned above.
+- [07 Sep 04] Camlp4 grammars `error recovery mode' now issues a warning
+ when used (but this warning is disabled by default).
+
+Camlp4 Version 3.08.[01]
+------------------------
+- [05 Jul 04] creation of the `unmaintained' directory:
+ pa_format, pa_lefteval, pa_ocamllex, pa_olabl, pa_scheme and pa_sml
+ go there, each in its own subdir. Currently, they compile fine.
+- [05 Jul 04] pa_ifdef, subsumed by pa_macro since 3.07, prints a warning
+ when loaded, encouraging use of pa_macro.
+- [01 July 04] profiled versions of Camlp4 libs are *NOT* installed
+ by default (not even built). To build and install them, uncomment
+ the line PROFILING=prof in camlp4/config/Makefile.tpl, and then
+ make opt.opt && make install
+- [22-23 June 04] `make install' now installs also pa_[or].cmx, pa_[or]p.cmx,
+ pa_[or]_fast.cmx, and odyl.cmx
+- [12 may 04] Added to the camlp4 tools the -version option that prints
+ the version number, in the same way as the other ocaml tools.
+- [12 may 04] Locations are now handled as in OCaml. The main benefit
+ is that line numbers are now correct in error messages. However, this
+ slightly changes the interface of a few Camlp4 modules (see ICHANGES).
+ ** Warning: Some contribs of the camlp4 distribution are broken because
+ of this change. In particular the scheme/lisp syntaxes.
+- [20 nov 03] Illegal escape sequences in strings now issue a warning.
+
+Camlp4 Version 3.07
+___________________
+
+- [29 Sep 03] Camlp4 code now licensed under the LGPL minus clause 6.
+- [09 Sep 03] Added tokens LABEL and OPTLABEL in plexer, and use them in
+ both parsers (ocaml and revised). There was, afaik, no other way to fix
+ ambiguities (bugs) in parsing labels and type constraints.
+
+Camlp4 Version 3.07 beta1
+________________________
+
+- [July 03] Updated the ocaml/camlp4 CVS tree with the camlp4
+ "parallel" CVS tree, which becomes obsolete from now on.
+ Added support for recursive modules, private data constructors, and
+ new syntaxes for integers (int32, nativeint, ...).
+
+Camlp4 Version 3.06++
+-----------------------
+
+- [02 Dec 02] In AST predefined quotation, changed antiquotations for
+ "rec", "mutable": now all are with coercion "opt": $opt:...$ (instead
+ of "rec" and "mut"). Added antiquotation for "private". Cleaned up
+ the entries for "methods" and for labelled and optional parameters.
+- [29 Nov 02] Removed all "extract_crc" stuff no more necessary with
+ the new interface of Dynlink.
+- [26 Nov 02] Added ability to use "#use" directives in compiled files.
+- [21 Nov 02] Changed Scheme syntax for directives: now, e.g. #load "file"
+ is written: # (load "file"). Added directives in "implem", "interf" and
+ "use" directive.
+- [20 Nov 02] Added Grammar.glexer returning the lexer used by a
+ grammar. Also added a field in Token.glexer type to ask lexers to
+ record the locations of the comments.
+- [04 Nov 02] Added option -no_quot with normal syntax (pa_o.cmo):
+ don't parse quotations (it allows to use e.g. <:> as a valid token).
+- [31 Oct 02] Added pa_macro.cmo (to replace pa_ifdef.cmo which is
+ kept for compatibility, but deprecated). The extended statements
+ allow de definitions of macros and conditional compilation like
+ in C.
+- [29 Oct 02] Changed pretty printers of the three main syntaxes: if
+ the locations of input are not correct, do no more raise End_of_file
+ when displaying the inter-phrases (return: the input found up to eof
+ if not empty, otherwise the value of the -sep parameter if not empty,
+ otherwise the string "\n").
+- [25 Oct 02] Added option -records in pa_sml.cmo: generates normal
+ OCaml records instead of objects (the user must be sure that there
+ are no names conflicts).
+- [22 Oct 02] Added Plexer.specific_space_dot: when set to "true", the
+ next call to Plexer.gmake returns a lexer where the dot preceded by
+ spaces (space, tab, newline, etc.) return a different token than when
+ not preceded by spaces.
+- [19 Oct 02] Added printer in Scheme syntax: pr_scheme.cmo and the
+ extension pr_schemep.cmo which rebuilts parsers.
+- [15 Oct 02] Now, in case of syntax error, the real input file name is
+ displayed (can be different from the input file, because of the possibility
+ of line directives, typically generated by /lib/cpp).
+ Changed interface of Stdpp.line_of_loc: now return also a string: the name
+ of the real input file name.
+- [14 Oct 02] Fixed bug in normal syntax (pa_o.cmo): the constructors
+ with currification of parameters (C x y) were accepted.
+- [14 Oct 02] Fixed many problems of make under Windows (in particular if
+ installations directories contain spaces).
+- [11 Oct 02] In ocaml syntax (pa_o.cmo), fixed 3 bugs (or incompatibilities
+ with the ocaml yacc version of the compiler): 1/ "ref new foo" was
+ interpreted as "ref;; new foo" instead of "ref (new foo)" 2/ unary
+ minuses did not work correctly (nor in quotation of syntax trees), in
+ particular "-0.0" 3/ "begin end" was a syntax error, instead of being "()".
+- [Sep-Oct 02] Many changes and improvements in Scheme syntax.
+- [07 Oct 02] Added definition of Pcaml.type_declaration which is
+ now visible in the interface, allowing to change the type declarations.
+- [07 Oct 02] Added Pcaml.syntax_name to allow syntax extensions to test
+ it and take different decision. In revised syntax, its value is "Revised",
+ in normal syntax "OCaml" and in Scheme syntax "Scheme".
+- [03 Oct 02] Added lexing of '\xHH' where HH is hexadecimal number.
+- [01 Oct 02] In normal syntax (camlp4o), fixed problem of lexing
+ comment: (* bleble'''*)
+- [23 Sep 02] Fixed bug: input "0x" raised Failure "int_of_string"
+ without location (syntaxes pa_o and pa_r).
+- [14 Sep 02] Added functions Grammar.iter_entry and Grammar.fold_entry
+ to iterate a grammar entry and transitively all the entries it calls.
+- [12 Sep 02] Added "Pcaml.rename_id", a hook to allow parsers to give
+ ability to rename their identifiers. Called in Scheme syntax (pa_scheme.ml)
+ when generating its identifiers.
+- [09 Sep 02] Fixed bug under toplevel, the command:
+ !Toploop.parse_toplevel_phrase (Lexing.from_buff "1;;");;
+ failed "End_of_file".
+- [06 Sep 02] Added "Pcaml.string_of". Combined with Pcaml.pr_expr,
+ Pcaml.pr_patt, and so on, allow to pretty print syntax trees in string.
+ E.g. in the toplevel:
+ # #load "pr_o.cmo";
+ # Pcaml.string_of Pcaml.pr_expr <:expr< let x = 3 in x + 2 >>;;
+ - : string = "let x = 3 in x + 2"
+
+Camlp4 Version 3.06
+--------------------
+
+- [24 Jul 02] Added Scheme syntax: pa_scheme.ml, camlp4sch.cma (toplevel),
+ camlp4sch (command).
+
+Camlp4 Version 3.05
+-----------------------
+
+- [12 Jul 02] Better treatment of comments in option -cip (add comments
+ in phrases) for both printers pr_o.cmo (normal syntax) and pr_r.cmo
+ (revised syntax); added comments before let binding and class
+ structure items; treat comments inside sum and record type definitions;
+ the option -tc is now deprecated and equivalent to -cip.
+- [13 Jun 02] Added pa_lefteval.cmo: add let..in expressions to guarantee
+ left evaluation of functions parameters, t-uples, and so on (instead of
+ the default non-specified-but-in-fact-right-to-left evaluation).
+- [06 Jun 02] Changed revised syntax (pa_r) of variants types definition;
+ (Jacques Garrigue's idea):
+ old syntax new syntax
+ [| ... |] [ = ... ]
+ [| < ... |] [ < ... ]
+ [| > ... |] [ > ... ]
+ This applies also in predefined quotations of syntax tree for types
+ <:ctyp< ... >>
+- [05 Jun 02] Added option -ss in pr_o.cmo: print with double semicolons;
+ and the option -no_ss is now by default.
+- [30 May 02] Improved SML syntax (pa_sml).
+- [30 May 02] Changed the AST for the "with module" construct (was with
+ type "module_type"; changed into type "module_expr").
+- [26 May 02] Added missing abstract module types.
+- [21 Apr 02] Added polymorphic types for polymorphic methods:
+ revised syntax (example): ! 'a 'b . type
+ ctyp quotation: <:ctyp< ! $list:pl$ . $t$ >>
+- [17 Apr 02] Fixed bug: in normal syntax (pa_o.cmo) made a parse error on
+ the "dot" on (in interface file file):
+ class c : a * B.c -> object val x : int end
+- [03 Apr 02] Fixed bug: (* "(*" *) resulted in "comment not terminated".
+- [03 Apr 02] Fixed incompatibility with ocaml: ''' and '"' must be
+ displayed as '\'' and '\"' in normal syntax printer (pr_o.cmo).
+- [03 Apr 02] When there are several tokens parsed together (locally LL(n)),
+ the location error now highlights all tokens, resulting in a more clear
+ error message (e.g. "for i let" would display "illegal begin of expr"
+ and highlight the 3 tokens, not just "for").
+- [30 Mar 02] Added pa_extfold.cmo extending pa_extend.cmo by grammar
+ symbols FOLD0 and FOLD1. Work like LIST0 and LIST1 but have two initial
+ parameters: a function of type 'a -> 'b -> 'b doing the fold and an
+ initial value of type 'b. Actually, LIST0 now is like
+ FOLD0 (fun x y -> x :: y) []
+ with an reverse of the resulting list.
+- [20 Mar 02] Fixed problem: when running a toplevel linked with camlp4
+ as a script, the camlp4 welcome message was displayed.
+- [14 Mar 02] The configure shell and the program now test the consistency
+ of OCaml and Camlp4. Therefore 1/ if trying to compile this version with
+ an incompatible OCaml version or 2/ trying to run an installed Camlp4 with
+ a incompatible OCaml version: in both cases, camlp4 fails.
+- [14 Mar 02] When make opt.opt is done, the very fast version is made for
+ the normal syntax ("compiled" version). The installed camlp4o.opt is that
+ version.
+- [05 Mar 02] Changed the conversion to OCaml syntax tree for <:expr< x.val >>
+ and <:expr< x.val := e >> which generates now the tree of !x and x := e,
+ no more x.contents and x.contents <- e. This change was necessary because
+ of a problem if a record has been defined with a field named "contents".
+
+- [16 Feb 02] Changed interface of grammars: the token type is now
+ customizable, using a new lexer type Token.glexer, parametrized by
+ the token type, and a new functor GMake. This was accompanied by
+ some cleanup. Become deprecated: the type Token.lexer (use Token.glexer),
+ Grammar.create (use Grammar.gcreate), Unsafe.reinit_gram (use
+ Unsafe.gram_reinit), the functor Grammar.Make (use Grammar.GMake).
+ Deprecated means that they are kept during some versions and removed
+ afterwards.
+- [06 Feb 02] Added missing infix "%" in pa_o (normal syntax).
+- [06 Feb 02] Added Grammar.print_entry printing any kind of (obj) entry
+ and having the Format.formatter as first parameter (Grammar.Entry.print
+ and its equivalent in functorial interface call it).
+- [05 Feb 02] Added a flag Plexer.no_quotations. When set to True, the
+ quotations are no more lexed in all lexers built by Plexer.make ()
+- [05 Feb 02] Changed the printing of options so that the option -help
+ aligns correctly their documentation. One can use now Pcaml.add_option
+ without having to calculate that.
+- [05 Feb 02] pr_r.cmo: now the option -ncip (no comments in phrases) is
+ by default, because its behaviour is not 100% sure. An option -cip has
+ been added to set it.
+- [03 Feb 02] Added function Stdpp.line_of_loc returning the line and
+ columns positions from a character location and a file.
+- [01 Feb 02] Fixed bug in token.ml: the location function provided by
+ lexer_func_of_parser, lexer_func_of_ocamllex and make_stream_and_location
+ could raise Invalid_argument "Array.make" for big files if the number
+ of read tokens overflows the maximum arrays size (Sys.max_array_length).
+ The bug is not really fixed: in case of this overflow, the returned
+ location is (0, 0) (but the program does not fail).
+- [28 Jan 02] Fixed bug in pa_o when parsing class_types. A horrible hack
+ had to be programmed to be able to treat them correctly.
+- [28 Jan 02] Fixed bug in OCaml toplevel when loading camlp4: the directives
+ were not applied in the good order.
+- [26 Jan 02] The printer pr_extend.cmo try now also to rebuild GEXTEND
+ statements (before it tried only the EXTEND).
+- [23 Jan 02] The empty functional stream "fstream [: :]" is now of type
+ 'a Fstream.t thanks to the new implementation of lazies allowing to
+ create polymorphic lazy values.
+- [11 Jan 02] Added a test in grammars using Plexer that a keyword is not
+ used also as parameter of a LIDENT or a UIDENT.
+- [04 Jan 02] Fixed bug in pa_sml (SML syntax): the function definitions
+ with several currified parameters did not work. It works now, but the
+ previous code was supposed to treat let ("fun" in SML syntax) definitions
+ of infix operators, what does not work any more now.
+- [04 Jan 02] Alain Frisch's contribution:
+ Added pa_ocamllex.cma, syntax for ocamllex files. The command:
+ camlp4 pa_ocamllex.cmo pr_o.cmo -ocamllex -impl foo.mll > foo.ml
+ does the same thing as:
+ ocamllex foo.mll
+ Allow to compile directly mll files. Without option -ocamllex, allow
+ to insert lex rules in a ml file.
+- [29 Dec 01] Added variable "inter_phrases" in Pcaml, of type ref (option
+ string) to specify the string to print between phrases in pretty printers.
+ The default is None, meaning to copy the inter phrases from the source
+ file.
+
+Camlp4 Version 3.04
+-------------------
+
+- [07 Dec 01] Added Pcaml.parse_interf and Pcaml.parse_implem, hooks to
+ specify the parsers tof use, i.e. now can use other parsing technics
+ than the Camlp4 grammar system.
+- [27 Nov 01] Fixed functions Token.eval_char and Token.eval_string which
+ returned bad values, resulting lexing of backslash sequences incompatible
+ with OCaml (e.g. "\1" returned "\001" (one character) but OCaml returns
+ the string of the two characters \ and 1).
+- [15 Nov 01] In revised syntax, in let binding in sequences, the "in"
+ can be replaced by a semicolon; the revised syntax printer pr_r.cmo
+ now rather prints a semicolon there.
+- [07 Nov 01] Added the ability to use $ as token: was impossible so far,
+ because of AST quotation uses it for its antiquotation. The fix is just
+ a little (invisible) change in Plexer.
+- [05 Nov 01] Added option -tc (types comment) when using pr_o or pr_r
+ try to print comments inside sum and record types like they are in
+ the source (not by default, because may work incorrectly).
+- [05 Nov 01] Added option -ca (comment after) when using pr_o or pr_r:
+ print ocamldoc comments after the declarations, when they are before.
+- [04 Nov 01] Added locations for variants and labels declarations in AST
+ (file MLast.mli).
+- [03 Nov 01] In pretty printers pr_o and pr_r, skip to next begin of line
+ when displaying the sources between phrase, to prevent e.g. the displaying
+ of the possible last comment of a sum type declaration (the other comment
+ being not displayed anyway).
+- [24 Oct 01] Fixed incorrect locations in sequences.
+- [24 Oct 01] Was erroneously compiled by the OCaml boot compiler instead
+ of the generated ocamlc. Fixed.
+- [15 Oct 01] Fixed some parsing differences between pa_o and ocamlyacc:
+ in parsers, in labels.
+- [12 Oct 01] Added missing bigarray syntax a.{b} (and Cie) in standard
+ syntax (pa_o).
+
+Camlp4 Version 3.03
+-------------------
+
+- [09 Oct 01] Fixed bug: the token !$ did not work. Fixed and completed
+ some syntaxes of labels patterns. Added missing case in exception
+ declaration (exception rebinding).
+- [05 Oct 01] Fixed bug in normal syntax: when defining a constructor
+ named "True" of "False" (capitalized, i.e. not like the booleans), it
+ did not work.
+- [04 Oct 01] Fixed some revised and quotation syntaxes in objects classes
+ and types (cleaner). Cleaned up also several parts of the parsers.
+- [02 Oct 01] In revised syntax, the warning for using old syntax for
+ sequences is now by default. To remove it, the option -no-warn-seq
+ of camlp4r has been added. Option -warn-seq has been removed.
+- [07 Sep 01] Included Camlp4 in OCaml distribution.
+- [06 Sep 01] Added missing pattern construction #t
+- [05 Sep 01] Fixed bug in pa_o: {A.B.c = d} was refused.
+- [26 Aug 01] Fixed bug: in normal and revised syntaxes, refused -1.0
+ (minus float) as pattern.
+- [24 Aug 01] Fixed bug: (a : b :> c) and ((a : b) :> c) were parsed
+ identically.
+- [20 Aug 01] Fixed configure script for Windows configuration.
+- [10 Aug 01] Fixed bug: <:expr< 'a' >> did not work because of a typing
+ problem.
+- [10 Aug 01] Fixed bug in compilation process under Windows: the use of
+ the extension .exe was missing in several parts in Makefiles and shell
+ scripts.
+- [09 Aug 01] Changed message error in grammar: in the case when the rule
+ is: ....; tok1; tok2; .. tokn; ... (n terminal tokens following each other),
+ where the grammar is locally LL(n), it displays now:
+ tok1 tok2 .. tokn expected
+ instead of just
+ tok1 expected
+ because "tok1" can be correct in the input, and in this case, the message
+ underscored the tok1 and said "tok1 expected".
+- [07 Aug 01] When camlp4r.cma is loaded in the toplevel, the results are
+ now displayed in revised syntax.
+- [04 Aug 01] Added syntax "declare..end" in quotations class_str_item and
+ class_sig_item to be able to generate several items from one only item
+ (like in str_item and sig_item).
+
+Camlp4 Version 3.02
+-------------------
+
+- [21 Jul 01] Fixed bug: <:expr< { l = x } >> was badly built and resulted
+ in a typing error.
+- [13 Jul 01] Fixed bug: did not accept floats in patterns.
+- [11 Jul 01] Added function Pcaml.top_printer to be able to use the
+ printers Pcaml.pr_expr, Pcaml.pr_patt, and so on for the #install_printer
+ of OCaml toplevel. Ex:
+ let f = Pcaml.top_printer Pcaml.pr_expr;;
+ #install_printer f;;
+ #load "pr_o.cmo";;
+- [24 Jun 01] In grammars, added symbol ANY, returning the current token,
+ whichever it is.
+- [24 Jun 01] In grammars, a rule list of the form [ s1 | s2 | .. | sn ]
+ is interpreted as [ x = s1 -> x | x = s2 -> x | .. x = sn -> x ]
+ instead of [ _ = s1 -> () | _ = s2 -> () .. ]
+- [24 Jun 01] Moved the functions [Plexer.char_of_char_token] and
+ [Plexer.string_of_string_token] into module [Token] with names
+ [Token.eval_char] and [Token.eval_string].
+- [22 Jun 01] Added warning when using old syntax for sequences, while
+ and do (do..return, do..done) in predefined quotation expr.
+- [22 Jun 01] Changed message for unbound quotations (more clear).
+
+Camlp4 Version 3.01.6:
+----------------------
+
+- [22 Jun 01] Changed the module Pretty into Spretty.
+- [21 Jun 01] Camlp4 can now be compiled even if OCaml is not installed:
+ in the directory "config", the file "configure_batch" is a possibility
+ to configure the compilation (alternative of "configure" of the top
+ directory) and has a parameter "-ocaml-top" to specify the OCaml top
+ directory (relative to the camlp4/config directory).
+- [21 Jun 01] The interactive "configure" now tests if the native-code
+ compilers ocamlc.opt and ocamlopt.opt are accessible and tell the
+ Makefile to preferably use them if they are.
+- [16 Jun 01] The syntax tree for strings and characters now represent their
+ exact input representation (the node for characters is now of type string,
+ no more char). For example, the string "a\098c" remains "a\098c" and is
+ *not* converted into (the equivalent) "abc" in the syntax tree. The
+ convertion takes place when converting into OCaml tree representation.
+ This has the advantage that the pretty print now display them as they
+ are in the input file. To convert from input to real representation
+ (if needed), two functions have been added: Plexer.string_of_string_token
+ and Plexer.char_of_char_token.
+- [10 Jun 01] In revised syntax, added ability to write {foo x = y} as short
+ form for {foo = fun x -> y}.
+- [08 Jun 01] Completed missing cases in pa_extfun.cmo for variants.
+- [06 Jun 01] Completed missing cases in abstract syntax tree and in normal
+ syntax parser pa_o.ml (about classes).
+- [06 Jun 01] Fixed bug in pa_o.cmo (parser of normal syntax): (~~) did not
+ work, and actually all prefix operators between parentheses.
+
+Camlp4 Version 3.01.5:
+----------------------
+
+- [04 Jun 01] Fixed bug: when using "include" in a structure item the rest
+ of the structure was lost.
+- [31 May 01] Added ability to user #load and #directory inside ml or mli
+ files to specify a cmo file to be loaded (for syntax extension) or the
+ directory path (like option -I). Same semantics than in toplevel.
+- [29 May 01] The name of the location variable used in grammars (action
+ parts of the rules) and in the predefined quotations for OCaml syntax
+ trees is now configurable in Stdpp.loc_name (string reference). Added also
+ option -loc to set this variable. Default: loc.
+- [26 May 01] Added functional streams: a library module Fstream and a syntax
+ kit: pa_fstream.cmo. Syntax:
+ streams: fstream [: ... :]
+ parsers: fparser [ [: ... :] -> ... | ... ]
+- [25 May 01] Added function Token.lexer_func_of a little bit more general
+ than Token.lexer_func_of_parser.
+
+Camlp4 Version 3.01.4:
+----------------------
+
+- [20 May 01] Fixed bug: pr_rp and pr_op could generate bound variables
+ resulting incorrect program:
+ (e.g. fun s -> parser [: `_; x :] -> s x was printed:
+ fun s -> parser [: `_; s :] -> s s)
+- [19 May 01] Small improvement in pretty.ml resulting a faster print (no
+ more stacked HOVboxes which printers pr_r and pr_o usually generate in
+ expr, patt, ctyp, etc.)
+- [18 May 01] Added [lexer_func_of_parser] and [lexer_func_of_ocamllex]
+ in module [Token] to create lexers functions from char stream parsers
+ or from [ocamllex] lexers.
+- [16 May 01] Pretty printing with pr_r.cmo (revised syntax) now keep
+ comments inside phrases.
+- [15 May 01] Changed pretty printing system, using now new extensible
+ functions of Camlp4.
+- [15 May 01] Added library module Extfun for extensible functions,
+ syntax pa_extfun, and a printer pr_extfun.
+- [12 May 01] Fixed bug: missing cases in pr_o and pr_r for in cases of
+ "for", "while", and some other expressions, when between parentheses.
+
+Camlp4 Version 3.01.3:
+----------------------
+
+- [04 May 01] Put back the syntax "do ... return ..." in predefined
+ quotation "expr", to be able to compile previous programs. Work
+ only if the quotation is in position of expression, not in pattern.
+- [04 May 01] Added lisp syntax pa_lisp.cmo (not terminated).
+- [01 May 01] Fixed bug: in toplevel, in case of syntax error in #use,
+ the display was incorrect: it displayed the input, instead of the
+ file location.
+
+Camlp4 Version 3.01.2:
+----------------------
+
+- [27 Apr 01] Added variable Grammar.error_verbose and option -verbose of
+ command camlp4 to display more information in case of parsing error.
+- [27 Apr 01] Fixed bug: the locations in sequences was not what expected
+ by OCaml, resulting on bad locations displaying in case of typing error.
+- [27 Apr 01] Fixed bug: in normal syntax, the sequence was parsed
+ of left associative instead of right associative, resulting bad pretty
+ printing.
+
+Camlp4 Version 3.01.1:
+----------------------
+
+- [19 Apr 01] Added missing new feature "include" (structure item).
+- [17 Apr 01] Changed revised syntax of sequences. Now:
+ do { expr1; expr2 ..... ; exprn }
+ for patt = expr to/downto expr do { expr1; expr2 ..... ; exprn }
+ while expr do { expr1; expr2 ..... ; exprn }
+ * If holding a "let ... in", the scope applies up to the end of the sequence.
+ * The old syntax "do .... return ..." is still accepted.
+ * In expr quotation, it is *not* accepted. To ensure backward
+ compatibility, use ifdef NEWSEQ, which answers True from this version.
+ * The printer pr_r.cmo by default prints with this new syntax.
+ * To print with old syntax, use option -old_seq.
+ * To get a warning when using old syntax, use option -warn_seq.
+
+Camlp4 Version 3.01:
+--------------------
+
+- [5 Mar 01] In pa_o.ml fixed problem, did not parse:
+ class ['a, 'b] cl a b : ['a, 'b] classtype
+- [9 Oct 00] Raise now Stream.Error when parsing with an empty entry (meaning
+ that the user probably forgot to initialize it).
+- [21 Jul 00] Fixed (pr_o.cmo) pb of bad printing of
+ let (f : unit -> int) = fun () -> 1
+- [10 Jun, 21 Jul 00] Added Pcaml.sync to synchronize after syntax error in
+ toplevel.
+- [24 May 00] Changed the "make opt", returning to what was done in the
+ previous releases, i.e. just the compilation of the library (6 files).
+ The native code compilation of "camlp4o" and "camlp4r" are not absolutely
+ necessary and can create problems in some systems because of too long code.
+ The drawbacks are more important than the advantages.
+- [19 May 00] Changed option -split_gext (when pa_extend.cmo is loaded) into
+ -split_ext: it applies now also for non functorial grammars (extended by
+ EXTEND instead of GEXTEND).
+- [12 May 00] Fixed problem in pr_rp.cmo and pr_op.cmo: the pretty printing
+ of the construction "match x with parser" did not work (because of the
+ type constraint "Stream.t _" added some versions ago).
+
+Camlp4 Version 3.00:
+--------------------
+
+- [Apr 19, 00] Added "pa_olabl" for labels with old Olabl syntax.
+- [Apr 18, 00] Make opt now builds camlp4o.opt and camlp4r.opt
+- [Apr 17, 00] Added support for labels and variants.
+- [Mar 28, 00] Improved the grammars: now the rules starting with n
+ terminals are locally LL(n), i.e. if any of the terminal fails, it is
+ not Error but just Failure. Allows to write the Ocaml syntax case:
+ ( operator )
+ ( expr )
+ with the problem of "( - )" as:
+ "("; "-"; ")"
+ "("; operator; ")"
+ "("; expr; ")"
+ after factorization of the "(", the rule "-"; ")" is locally LL(2): it
+ works for this reason. In the previous implementation, a hack had to be
+ added for this case.
+
+ To allow this, the interface of "Token" changed. The field "tparse" is
+ now of type "pattern -> option (Stream.t t -> string)" instead of
+ "pattern -> Stream.t t -> string". Set it to "None" for standard pattern
+ parsing (or if you don't know).
+
+Camlp4 Version 2.04:
+--------------------
+
+- [Nov 23, 99] Changed the module name Config into Oconfig, because of
+ conflict problem when applications want to link with the module Config of
+ Ocaml.
+
+Camlp4 Version 2.03:
+--------------------
+
+* pr_depend:
+ - [Jun 25, 99] Added missing case in "pr_depend.cmo": pattern A.B.C.
+ - [Jun 5, 99] Fixed in "pr_depend.ml" case expression "Foo.Bar" displaying a
+ bad dependency with file "bar.ml" if existed. And changed "pa_r.ml"
+ (revised syntax parsing) to generate a more logical ast for case
+ "var.Mod.lab".
+ - [Apr 29, 99] Added missing cases in "pr_o.cmo" and in "pr_depend.cmo".
+ - [Mar 11, 99] Added missing cases in "pr_depend.cmo".
+ - [Mar 9, 99] Added missing case in pr_depend.ml.
+
+* Other:
+ - [Sep 10, 99] Updated from current Ocaml new interfaces.
+ - [Jul 9, 99] Added stream type constraint in pa_oop.ml to reflect the same
+ change in Ocaml.
+ - [Jun 24, 99] Added missing "constraint" construction in types
+ - [Jun 15, 99] Added option -I for command "mkcamlp4".
+ - [May 14, 99] Added man pages (links) for camlp4o, camlp4r, mkcamlp4, ocpp
+ - [May 10, 99] Added shell script "configure_batch" in directory "config".
+ - [May 10, 99] Changed LICENSE to BSD.
+ - [Apr 29, 99] Added "ifdef" for mli files.
+ - [Apr 11, 99] Changed option "-no_cp" into "-sep" in pr_r.cmo and pr_o.cmo.
+ - [Apr 11, 99] Fixed (old) bug: too long strings where bad pretty printed.
+ - [Mar 24, 99] Added missing stream type constraint for parsers.
+ - [Mar 17, 99] Changed template Makefile to use ocamlc.opt and ocamlopt.opt
+ by default, instead of ocamlc and ocamlopt.
+ - [Mar 9, 99] Added ifndef in pa_ifdef.ml.
+ - [Mar 7, 99] Completed and fixed some cases in pr_extend.ml.
+
+Camlp4 Version 2.02:
+--------------------
+
+* Parsing:
+ - [Feb 27, 99] Fixed 2 bugs, resulting of incorrect Ocaml parsing of the
+ program example: "type t = F(B).t"
+ - [Jan 30, 99] Fixed bug "pa_op.ml", could not parse "parser | [<>] -> ()".
+ - [Jan 16, 99] Added "define" and "undef" in "pa_ifdef.cmo".
+ - [Dec 22, 98] Fixed precedence of "!=" in Ocaml syntax
+
+* Printing:
+ - [Mar 4, 99] Added pr_depend.cmo for printing file dependencies.
+ - [Dec 28, 98] Fixed pretty printing of long strings starting with spaces;
+ used to display "\\n<spaces>..." instead of "<spaces>\\n...".
+
+* Camlp4:
+ - [Feb 19, 99] Sort command line argument list in reverse order to
+ avoid argument names conflicts when adding arguments.
+
+* Olabl:
+ - [Feb 26, 99] Started extensions for Olabl: directory "lablp4" and some
+ changes in MLast. Olabl programs can be preprocessed by:
+ camlp4 pa_labl.cma pr_ldump.cmo
+
+* Internal:
+ - Use of pr_depend.cmo instead of ocamldep for dependencies.
+
+Camlp4 Version 2.01:
+--------------------
+
+Token interface
+* Big change: the type for tokens and tokens patterns is now (string * string)
+ the first string being the constructor name and the second its possible
+ parameters. No change in EXTEND statements using Plexer. But lexers
+ have:
+ - a supplementary parameter "tparse" to specify how to parse token
+ from token patterns.
+ - fields "using" and "removing" replacing "add_keyword" and
+ "remove_keyword".
+ See the file README-2.01 for how to update your programs and the interface
+ of Token.
+
+Grammar interface
+* The function "keywords" have been replaced by "tokens". The equivalent
+ of the old statement:
+ Grammar.keywords g
+ is now:
+ Grammar.tokens g ""
+
+Missing features added
+* Added "lazy" statement (pa_r.cmo, pa_o.cmo, pr_r.cmo, pr_o.cmo)
+* Added print "assert" statement (pr_o.cmo, pr_r.cmo)
+* Added parsing of infix operators like in Ocaml (e.g. |||) in pa_o.cmo
+
+Compilation
+* Added "make scratch"
+* Changed Makefile. No more "make T=../", working bad in some systems.
+* Some changes to make compilation in Windows 95/98 working better (thanks
+ to Patricia Peratto).
+
+Classes and objects
+* Added quotations for classes and objects (q_MLast.ml)
+* Added accessible entries in module Pcaml (class_type, class_expr, etc.)
+* Changed classes and objects types in definition (module MLast)
+
+Miscelleneous
+* Some adds in pa_sml.cmo. Thanks to Franklin Chen.
+* Added option "-no_cp" when "pr_o.cmo" or "pr_r.cmo" is loaded: do
+ not print comments between phrases.
+* Added option "-split_gext" when "pa_extend.cmo" is loaded: split GEXTEND
+ by functions to turn around a PowerPC problem.
+
+Bug fixes
+* Fixed pa_r.cmo, pa_o.cmo to parse, and pr_r.cmo, pr_o.cmo to print "(x:#M.c)"
+* Fixed printing pr_o.cmo of "(a.b <- 1)::1"
+* Extended options with parameters worked only when the parameter was sticked.
+ Ex:
+ camlp4o pr_o.cmo -l120 foo.ml
+ worked, but not:
+ camlp4o pr_o.cmo -l 120 foo.ml
+
+Camlp4 Version 2.00:
+--------------------
+
+* Designation "righteous" has been renamed "revised".
+* Added class and objects in Ocaml printing (pr_o.cmo), revised parsing
+ (pa_r.cmo) and printing (pr_r.cmo).
+* Fixed bug in Ocaml syntax: let _, x = 1, 2;; was refused.
+
+Camlp4 Version 2.00--1:
+-----------------------
+
+* Added classes and objects in Ocaml syntax (pa_o.cmo)
+* Fixed pr_r.cmo et pr_r.cmo which wrote on stdout, even when option -o
+
+Camlp4 Version 2.00--:
+----------------------
+
+* Adapted for Ocaml 2.00.
+* No objects and classes in this version.
+
+* Added "let module" parsing and printing.
+* Added arrays patterns parsing and printing.
+* Added records with "with" "{... with ...}" parsing and printing
+
+* Added # num "string" in plexer (was missing).
+* Fixed bug in pr_o.cmo: module A = B (C);; was printed module A = B C;;
+* Added "pa_sml.cmo", SML syntax + "lib.sml"
+* Fixed bug in pa_r.ml and pa_o.ml: forgot to clear let_binding
+* Changed Plexer: unknown keywords do not raise error but return Tterm
+* q_MLast.cmo: suppressed <:expr< [$list:el$] >> (cannot work)
+* Added option "-no_ss" (no ;;) when "pr_o.cmo" loaded
+* Many changes and bug fixing in pretty printing pr_o.cmo and pr_r.cmo
+* Command ocpp works now without having to explicitely load
+ "/usr/local/lib/ocaml/stdlib.cma" and
+ "/usr/local/lib/camlp4/gramlib.cma"
+
+* Fixed problem of pretty print "&" and "or" in normal and righteous syntaxes
+* Added missing statement "include" in signature item in normal and righteous
+ syntaxes
+* Changed precedence of ":=" and "<-" in normal syntax (pa_o et pr_o):
+ now before "or", like in Ocaml compiler.
+* Same change in righteous syntax, by symmetry.
+
+Camlp4 Version 1.07.2:
+----------------------
+
+Errors and missings in normal and righteous syntaxes.
+
+* Added forgotten syntax (righteous): type constraints in class type fields.
+* Added missing syntax (normal): type foo = bar = {......}
+* Added missing syntax (normal): did not accept separators before ending
+ constructions (many of them).
+* Fixed bug: "assert false" is now of type 'a, like in Ocaml.
+* Fixed to match Ocaml feature: "\^" is "\^" in Ocaml, but just "^" in Camlp4.
+* Fixed bug in Windows NT/95: problem in backslash before newlines in strings
+
+Grammars, EXTEND, DELETE_RULE
+
+* Added functorial version for grammars (started in version 1.07.1,
+ completed in this version).
+* Added statements GEXTEND and GDELETE_RULE in pa_extend.cmo for functorial
+ version.
+* EXTEND statement is added AFTER "top" instead of LEVEL "top" (because
+ of problems parsing "a; EXTEND...")
+* Added ability to have expressions (in antiquotation form) of type string in
+ EXTEND after keywords "LIDENT", "UIDENT", "IDENT", "ANTIQUOT", "INT" as
+ in others constructions inside EXTEND.
+* A grammar rule hidden by another is not deleted but just masked. DELETE_RULE
+ will restore the old version.
+* DELETE_RULE now raises Not_found if no rule matched.
+* Fixed bug: DELETE_RULE did not work when deleting a rule which is a prefix of
+ another rule.
+* Some functions for "system use" in [Grammar] become "official":
+ [Entry.obj], [extend], [delete_rule].
+
+Command line, man page
+
+* Added option -o: output on file instead of standard output, necessary
+ to allow compilation in Windows NT/95 (in fact, this option exists since
+ 1.07.1 but forgotten in its "changes" list).
+* Command line option -help more complete.
+* Updated man page: camlp4 options are better explained.
+* Fixed bug: "camlp4 [other-options] foo.ml" worked but not
+ "camlp4 foo.ml [other-options]".
+* Fixed bug: "camlp4 foo" did not display a understandable error message.
+
+Camlp4's compilation
+
+* Changes in compilation process in order to try to make it work better for
+ Windows NT under Cygnus.
+
+Miscellaneous
+
+* Added [Pcaml.add_option] for adding command line options.
+
+Camlp4 Version 1.07.1:
+----------------------
+
+* Added forgotten syntax in pr_o: type x = y = A | B
+* Fixed bug negative floats parsing in pa_o => error while pretty printing
+* Added assert statement and option -noassert.
+* Environment variable CAMLP4LIB to change camlp4 library directory
+* Grammar: empty rules have a correct location instead of (-1, -1)
+* Compilation possible in Windows NT/95
+* String constants no more shared while parsing Ocaml
+* Fixed bug in antiquotations in q_MLast.cmo (bad errors locations)
+* Fixed bug in antiquotations in q_MLast.cmo (EOI not checked)
+* Fixed bug in Plexer: could not create keywords with iso 8859 characters
+
+Camlp4 Version 1.07:
+--------------------
+
+* Changed version number + configuration script
+* Added iso 8859 uppercase characters for uidents in plexer.ml
+* Fixed bug factorization IDENT in grammars
+* Fixed bug pr_o.cmo was printing "declare"
+* Fixed bug constructor arity in Ocaml syntax (pa_o.cmo).
+* Changed "lazy" into "slazy".
+* Completed pa_ifdef.cmo.
+
+Camlp4 Version 1.06:
+--------------------
+
+* Adapted to Ocaml 1.06.
+* Changed version number to match Ocaml's => 1.06 too.
+* Deleted module Gstream, using Ocaml's Stream.
+* Generate different AST for C(x,y) and C x y (change done in Ocaml's compiler)
+* No more message "Interrupted" in toplevel in case of syntax error.
+* Added flag to suppress warnings while extending grammars.
+* Completed some missing statements and declarations (objects)
+* Modified odyl implementation; works better
+* Added ability to extend command line specification
+* Added "let_binding" as predefined (accessible) entry in Pcaml.
+* Added construction FUNCTION in EXTEND statement to call another function.
+* Added some ISO-8859-1 characters in lexer identifiers.
+* Fixed bug "value x = {val = 1};" (righteous syntax)
+* Fixed bug "open A.B.C" was interpreted as "open B.A.C"
+* Modified behavior of "DELETE_RULE": the complete rule must be provided
+* Completed quotations MLast ("expr", "patt", etc) to accept whole language
+* Renamed "LIKE" into "LEVEL" in grammar EXTEND
+* Added "NEXT" as grammar symbol in grammar EXTEND
+* Added command "mkcamlp4" to make camlp4 executables linked with C code
+* Added "pr_extend.cmo" to reconstitute EXTEND instructions
+
+Camlp4 Version 0.6:
+-------------------
+
+--- Installing
+
+* To compile camlp4, it is no more necessary to have the sources of the
+ Objective Caml compiler available. It can be compiled like any other
+ Objective Caml program.
+
+--- Options of "camlp4"
+
+* Added option -where: "camlp4 -where" prints the name of the standard
+ library directory of Camlp4 and exit. So, the ocaml toplevel and the
+ compiler can use the option:
+ -I `camlp4 -where`
+
+* Added option -nolib to not search for objects files in the installed
+ library directory of Camlp4.
+
+--- Interface of grammar library modules
+
+* The function Grammar.keywords returns now a list of pairs. The pair is
+ composed of a keyword and the number of times it is used in entries.
+
+* Changed interface of Token and Grammar for lexers, so user lexers have
+ to be changed.
+
+--- New features in grammars
+
+* New instruction "DELETE_RULE" provided by pa_extend.cmo to delete rules.
+ Ex:
+ DELETE_RULE Pcaml.expr: "if" END;
+ deletes the "if" instruction of the language.
+
+* Added the ability to parse some specific integer in grammars: a possible
+ parameter to INT, like the ones for LIDENT and UIDENT.
+
+* In instruction EXTEND, ability to omit "-> action", default is "-> ()"
+
+* Ability to add antiquotation (between $'s) as symbol rule, of type string,
+ interpreted as a keyword, in instruction EXTEND.
+
+* Ability to put entries with qualified names (Foo.bar) in instruction EXTEND.
+
+--- Quotations
+
+* The module Ast has been renamed MLast. The quotation expander "q_ast.cmo"
+ has been renamed "q_MLast.cmo".
+
+* Quotation expanders are now of two kinds:
+ - The "classical" type for expanders returning a string. These expanders
+ have now a supplementary parameter: a boolean value set to "True"
+ when the quotation is in a context of an expression an to "False"
+ when the quotation is in a context of a pattern. These expanders,
+ returning strings which are parsed afterwards, may work for some
+ language syntax and/or language extensions used (e.g. may work for
+ Righteous syntax and not for Ocaml syntax).
+ - A new type of expander returning directly syntax trees. A pair
+ of functions, for expressions and for patterns must be provided.
+ These expanders are independant from the language syntax and/or
+ extensions used.
+
+* The predefined quotation expanders "ctyp_", "patt_" and "expr_" has
+ been deleted; one can use "ctyp", "patt", and "expr" in position of
+ pattern or expression.
+
+--- Ocaml and Righteous syntaxes
+
+* Fixed bug: "open Foo.Bar" was converted (pr_dump.cmo) into "open Bar.Foo"
+
+* Corrected behavior different from Ocaml's: "^" and "@" were at the same
+ level than "=": now, like Ocaml, they have a separated right associative
+ level.
+
+--- Grammars behavior
+
+* While extending entries: default position is now "extension of the
+ first level", instead of "adding a new level at the end".
+
+* Another Change: in each precedence level, terminals are inserted before
+ other symbols (non terminals, lists, options, etc), LIDENT "foo" before
+ LIDENT (alone) and UIDENT "foo" before UIDENT (alone). New rules not
+ factorizable are now inserted before the other rules.
+
+* Changed algorithm of entries parsing: each precedence level is tested
+ against the stream *before* its next precedences levels (instead of
+ *after*):
+ EXTEND e: [[ LIDENT "a" -> "xxx" ] | [ i = LIDENT -> i ]]; END;
+ Now, parsing the entry e with the string "a" returns "xxx" instead of "a"
+
+* Less keywords in instruction EXTEND (LEFTA, LIDENT, etc), which can be
+ used now as normal identifiers.
+
+* When inserting a new rule, a warning appears if a rule with the
+ same production already existed (it is deleted).
+
+* Parse error messages (Gstream.Error) are formatted => spaces trigger
+ Format.print_space and newlines trigger Format.force_newline.
+
+
+Camlp4 Version 0.5:
+-------------------
+
+* Possible creation of native code library (make opt)
+
+* Ocaml and Righteous Syntax more complete
+
+* Added pa_ru.cmo for compiling sequences of type unit (Righteous)
+
+* Quotations AST
+ - No more quotation long_id
+ - Antiquotations for identifiers more simple
+
+* Lot of small changes
+
+
+Camlp4 Version 0.4:
+-------------------
+
+* First distributed version