852 lines
39 KiB
Plaintext
852 lines
39 KiB
Plaintext
- [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
|