Mercurial > ~dholland > hg > ag > index.cgi
diff doc/misc/whatsnew.html @ 0:13d2b8934445
Import AnaGram (near-)release tree into Mercurial.
author | David A. Holland |
---|---|
date | Sat, 22 Dec 2007 17:52:45 -0500 |
parents | |
children | 1c9dac05d040 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/misc/whatsnew.html Sat Dec 22 17:52:45 2007 -0500 @@ -0,0 +1,256 @@ +<HTML> +<HEAD> +<TITLE>What's New</TITLE> +</HEAD> +<BODY + BGCOLOR="#ffffff" + TEXT="#000000" + LINK="#0033CC" + VLINK="#CC0033" + ALINK="#CC0099" +> + +<P align=right> +<IMG SRC=html/images/aga6d.gif ALT="AnaGram"><BR> +A System for Syntax Directed Programming<BR> +Version 2.40<BR> +<BR> +Copyright © 1993-2002 Parsifal Software<BR> +Copyright © 2006, 2007 David A. Holland<BR> +All Rights Reserved. +</P> + +<H1>What's New</H1> +<P> +<UL> +<LI><A HREF=#ag240>AnaGram 2.40</A></LI> +<LI><A HREF=#ag201>AnaGram 2.01</A></LI> +</UL> +</P> + +<A NAME="ag240"></A> +<H2>AnaGram 2.40</H2> +<P> +<UL TYPE=Disc> +<LI><A HREF="#240oss">Open source</A></LI> +<LI><A HREF="#240unix">Unix support</A></LI> +<LI><A HREF="#240functionality">Improved functionality</A></LI> +<LI><A HREF="#240convenience">Increased convenience</A></LI> +<LI><A HREF="#240fixes">Bug fixes</A></LI> +</UL> +</P> + +<P> +Most of the changes in AnaGram 2.40 are under the hood - cleanup of +source files, reorganization of the source tree, revision of build and +test procedures, and so forth, in preparation for the open source +release. All of this will, with luck, be invisible to the end user. +</P> + +<A NAME="240oss"></A> +<H2>Open Source</H2> +<P> +AnaGram is now <A HREF=license.html>open source</A>. AnaGram itself +uses the 4-clause BSD license; the parsing engine, and thus the output +files, are licensed with the less restrictive zlib license. Source +distributions are available from +<A HREF=http://www.parsifalsoft.com>http://www.parsifalsoft.com</A>. +</P> + +<P> +The manual has been re-typeset using LaTeX instead of WordPerfect. +The typographic consistency and formatting has been considerably +improved; unfortunately, the pagination is now completely different, +so page numbers are not portable to the new version. +</P> + +<P> +All the logic dealing with registration, trial copies, serial numbers, +and so forth has been removed. +</P> + +<A NAME="240unix"></A> +<H2>Unix Support</H2> +<P> +The Unix build of the command-line version of AnaGram (agcl) is now +supported and available to the public. There is at present no GUI for +the Unix version. The long-term goal is to migrate the AnaGram GUI +away from the closed (and orphaned) IBM Visual Age class library to +something else, probably GTK, so as to support both Windows and Unix. +</P> + +<A NAME="240functionality"></A> +<H2>Improved Functionality</H2> +<P> +<B>Examples.</B> The examples have been adjusted to the current +dialect of C++ and are now compilable again. The legacy "classlib" +code some still depend on is being phased out. +</P> + +<A NAME="240convenience"></A> +<H2>Increased Convenience</H2> +<P> +<B>File names.</B> File names in the AnaGram distribution and source +tree are no longer limited to 8+3 characters, and quite a few now have +less cryptic names. Additionally, all HTML files are now named ".html", +not ".htm". +</P> + +<P> +<B>Installed files.</B> The <TT>AnaGram.cgb</TT> and +<TT>AnaGram.hlp</TT> files found in older releases of AnaGram no +longer exist; their contents are compiled into the AnaGram executables +instead. +</P> + +<A NAME="240fixes"></A> +<H2>Bug Fixes</H2> +<P> +<B>Engine compiler error.</B> The <TT>error_message</TT> field of +the PCB has been changed to <TT>const char *</TT> so current C++ +compilers will accept the code generated when <I>diagnose errors</I> +is turned off. +</P> + +<P> +<B>Multiple output header files.</B> Including more than one AnaGram +output header file at once used to cause some compilers to issue a +warning, because an <TT>#ifndef</TT> directive was checking the wrong +symbol. This has been corrected. +</P> + +<P> +<B>Wrappers and error tokens.</B> AnaGram 2.01 generated uncompilable +code if you tried to use the <I>wrapper</I> feature and error token +resynchronization at the same time. This has been corrected. +</P> + +<P> +<B>More than 256 keywords.</B> Build 8 of AnaGram 2.01 fixed certain +problems with large keyword tables, but in the process introduced +another, which is now fixed. +</P> + +<HR> +<!-- ------------------------------------------------------------ --> + +<A NAME="ag201"></A> +<H2>AnaGram 2.01</H2> +<UL TYPE=Disc> +<LI><A HREF="#201functionality">Improved functionality</A></LI> +<LI><A HREF="#201diagnostics">Improved error diagnostics</A></LI> +<LI><A HREF="#201convenience">Increased convenience</A></LI> +<LI><A HREF="#201defaults">Changed defaults</A></LI> +<LI><A HREF="#201fixes">Bug fixes</A></LI> +</UL> + +<P> + + +<H2><A NAME="201functionality">Improved Functionality</A></H2> +<B>Improved support for building thread safe parsers.</B> All +nonconstant parser data previously declared as static variables has been +moved to the parser control block. When the <I>reentrant parser</I> switch +is set, all references to the parser control block are passed to functions +via calling sequences. The <I>extend pcb</I> switch provides a mechanism to +add user-defined variables to the parser control block. +<P> +<B>Improved support for C++ parsers.</B> The <I>wrapper</I> statement +provides C++ wrapper classes for objects to be stored on the parser value stack. +The <I>PCB_TYPE</I> macro allows you to derive a C++ class from the parser control +block and to access its members from your reduction procedures. +<P> +<B>Support for the ISO-Latin-1 character set</B>. When +the <I>case sensitive</I> switch is off and the <I>iso latin 1</I> switch +is on, case conversion is performed for all ISO Latin 1 +characters, not just those in the ASCII range. +<P> +<B>Improved support for error diagnostics.</B> It is now possible for users +to provide their own text for the error messages created by the <I>diagnose +errors</I> switch. In addition, the <I>token names</I> table option now +includes ascii representation of individual characters and keywords instead +of only named tokens. The <I>token names only</I> switch can be used for +compatibility with previous versions of AnaGram + +<P> +<B>More precise determination of error context.</B> The tables used by the +error frame option to provide the context of a syntax error have been +reworked and now provide a substantially more precise localization of the +error. +<P> +<BR> + +<H2><A NAME="201diagnostics">Improved Error Diagnostics</A></H2> + +<B>Missing reduction procedure diagnostic.</B> +In addition to warning that there is a parameter assignment +without a reduction procedure, this +diagnostic is now provided if the default reduction value +does not have the same data type as the reduction token. +<P> +<B>Command line version.</B> Diagnostics have been reformatted so +they can be recognized by the Microsoft Visual C++ IDE. + +<P> +<B>Refined keyword anomaly diagnostics.</B> There should +now be fewer false alarms. +<P> +<H2><A NAME="201convenience">Increased Convenience</A></H2> + +<B>File Trace.</B> If your grammar uses semantically determined productions, +the File Trace feature will now remember the choices you have +made for reduction tokens, so that you do not have to make +the same choices over and over again as you work with an example. +<P> +<B>File paths</B>. The file paths in the #line directives created by the line numbers +switch now use forward slashes instead of backslashes. +<P> +<H2><A NAME="201defaults">Changed Defaults</A></H2> + +<B>Parser stack alignment.</B> Now defaults to long instead of int. +<P> +<B>Parser stack size.</B> Now defaults to 128 instead of 32. +<P> +<H2><A NAME="201fixes">Bug Fixes</A></H2> + +<B>Interaction between context tracking and error token. </B>In previous +versions of AnaGram, if the first token in a rule was the error token, +the value of CONTEXT was the value that corresponded to the location +of the error. CONTEXT now correctly shows the context at which the +aborted rule began. For instance, in the following example, if a +syntax error is encountered while parsing the expression, the error +rule will skip over remaining characters to the terminating semicolon. +When invoked from handleError(), the CONTEXT macro will return the +context as it was at the beginning of the expression. +<PRE> + expression statement + -> expression, ';' + -> error, ~(eof + ';')?..., ';' =handleError(); +</PRE> +<B>Distinguish lexemes.</B> Several minor bugs in the implementation of <I>distinguish lexemes</I> have been +corrected. +<P> +<B>Set partition logic.</B> Corrected problems in the interaction between the set partition logic +and the implementation of the <I>disregard</I> statement. +<P> +<B>Table size.</B> Fixed a data sizing problem which occurred when one particular parse table +had precisely 256 entries. +<P> +<B>Keyword recognition.</B> Fixed a problem that could cause difficulties with keyword +recognition when the <I>case sensitive</I> switch was turned off. +<P> +<B>Default conflict resolution.</B> With unresolved shift-reduce conflicts, the shift case was +not always being selected. This problem has been corrected. +<P> +<B>Lockup.</B> It was possible to write an erroneous grammar that would cause +AnaGram to lock up. This problem has been corrected. +<P> +<B>Potential bus error.</B> The error diagnostic funtion created by the <I>diagnose errors</I> +switch, could, under some circumstances, access an uninitialized value +on the parser value stack. This problem has been corrected. +<P> +<B>Internal errors.</B> Fixed a number of minor bugs which could cause internal errors +while running File Trace. + +</BODY> +</HTML>