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 &copy; 1993-2002 Parsifal Software<BR>
+Copyright &copy; 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>