comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:13d2b8934445
1 <HTML>
2 <HEAD>
3 <TITLE>What's New</TITLE>
4 </HEAD>
5 <BODY
6 BGCOLOR="#ffffff"
7 TEXT="#000000"
8 LINK="#0033CC"
9 VLINK="#CC0033"
10 ALINK="#CC0099"
11 >
12
13 <P align=right>
14 <IMG SRC=html/images/aga6d.gif ALT="AnaGram"><BR>
15 A System for Syntax Directed Programming<BR>
16 Version 2.40<BR>
17 <BR>
18 Copyright &copy; 1993-2002 Parsifal Software<BR>
19 Copyright &copy; 2006, 2007 David A. Holland<BR>
20 All Rights Reserved.
21 </P>
22
23 <H1>What's New</H1>
24 <P>
25 <UL>
26 <LI><A HREF=#ag240>AnaGram 2.40</A></LI>
27 <LI><A HREF=#ag201>AnaGram 2.01</A></LI>
28 </UL>
29 </P>
30
31 <A NAME="ag240"></A>
32 <H2>AnaGram 2.40</H2>
33 <P>
34 <UL TYPE=Disc>
35 <LI><A HREF="#240oss">Open source</A></LI>
36 <LI><A HREF="#240unix">Unix support</A></LI>
37 <LI><A HREF="#240functionality">Improved functionality</A></LI>
38 <LI><A HREF="#240convenience">Increased convenience</A></LI>
39 <LI><A HREF="#240fixes">Bug fixes</A></LI>
40 </UL>
41 </P>
42
43 <P>
44 Most of the changes in AnaGram 2.40 are under the hood - cleanup of
45 source files, reorganization of the source tree, revision of build and
46 test procedures, and so forth, in preparation for the open source
47 release. All of this will, with luck, be invisible to the end user.
48 </P>
49
50 <A NAME="240oss"></A>
51 <H2>Open Source</H2>
52 <P>
53 AnaGram is now <A HREF=license.html>open source</A>. AnaGram itself
54 uses the 4-clause BSD license; the parsing engine, and thus the output
55 files, are licensed with the less restrictive zlib license. Source
56 distributions are available from
57 <A HREF=http://www.parsifalsoft.com>http://www.parsifalsoft.com</A>.
58 </P>
59
60 <P>
61 The manual has been re-typeset using LaTeX instead of WordPerfect.
62 The typographic consistency and formatting has been considerably
63 improved; unfortunately, the pagination is now completely different,
64 so page numbers are not portable to the new version.
65 </P>
66
67 <P>
68 All the logic dealing with registration, trial copies, serial numbers,
69 and so forth has been removed.
70 </P>
71
72 <A NAME="240unix"></A>
73 <H2>Unix Support</H2>
74 <P>
75 The Unix build of the command-line version of AnaGram (agcl) is now
76 supported and available to the public. There is at present no GUI for
77 the Unix version. The long-term goal is to migrate the AnaGram GUI
78 away from the closed (and orphaned) IBM Visual Age class library to
79 something else, probably GTK, so as to support both Windows and Unix.
80 </P>
81
82 <A NAME="240functionality"></A>
83 <H2>Improved Functionality</H2>
84 <P>
85 <B>Examples.</B> The examples have been adjusted to the current
86 dialect of C++ and are now compilable again. The legacy "classlib"
87 code some still depend on is being phased out.
88 </P>
89
90 <A NAME="240convenience"></A>
91 <H2>Increased Convenience</H2>
92 <P>
93 <B>File names.</B> File names in the AnaGram distribution and source
94 tree are no longer limited to 8+3 characters, and quite a few now have
95 less cryptic names. Additionally, all HTML files are now named ".html",
96 not ".htm".
97 </P>
98
99 <P>
100 <B>Installed files.</B> The <TT>AnaGram.cgb</TT> and
101 <TT>AnaGram.hlp</TT> files found in older releases of AnaGram no
102 longer exist; their contents are compiled into the AnaGram executables
103 instead.
104 </P>
105
106 <A NAME="240fixes"></A>
107 <H2>Bug Fixes</H2>
108 <P>
109 <B>Engine compiler error.</B> The <TT>error_message</TT> field of
110 the PCB has been changed to <TT>const char *</TT> so current C++
111 compilers will accept the code generated when <I>diagnose errors</I>
112 is turned off.
113 </P>
114
115 <P>
116 <B>Multiple output header files.</B> Including more than one AnaGram
117 output header file at once used to cause some compilers to issue a
118 warning, because an <TT>#ifndef</TT> directive was checking the wrong
119 symbol. This has been corrected.
120 </P>
121
122 <P>
123 <B>Wrappers and error tokens.</B> AnaGram 2.01 generated uncompilable
124 code if you tried to use the <I>wrapper</I> feature and error token
125 resynchronization at the same time. This has been corrected.
126 </P>
127
128 <P>
129 <B>More than 256 keywords.</B> Build 8 of AnaGram 2.01 fixed certain
130 problems with large keyword tables, but in the process introduced
131 another, which is now fixed.
132 </P>
133
134 <HR>
135 <!-- ------------------------------------------------------------ -->
136
137 <A NAME="ag201"></A>
138 <H2>AnaGram 2.01</H2>
139 <UL TYPE=Disc>
140 <LI><A HREF="#201functionality">Improved functionality</A></LI>
141 <LI><A HREF="#201diagnostics">Improved error diagnostics</A></LI>
142 <LI><A HREF="#201convenience">Increased convenience</A></LI>
143 <LI><A HREF="#201defaults">Changed defaults</A></LI>
144 <LI><A HREF="#201fixes">Bug fixes</A></LI>
145 </UL>
146
147 <P>
148
149
150 <H2><A NAME="201functionality">Improved Functionality</A></H2>
151 <B>Improved support for building thread safe parsers.</B> All
152 nonconstant parser data previously declared as static variables has been
153 moved to the parser control block. When the <I>reentrant parser</I> switch
154 is set, all references to the parser control block are passed to functions
155 via calling sequences. The <I>extend pcb</I> switch provides a mechanism to
156 add user-defined variables to the parser control block.
157 <P>
158 <B>Improved support for C++ parsers.</B> The <I>wrapper</I> statement
159 provides C++ wrapper classes for objects to be stored on the parser value stack.
160 The <I>PCB_TYPE</I> macro allows you to derive a C++ class from the parser control
161 block and to access its members from your reduction procedures.
162 <P>
163 <B>Support for the ISO-Latin-1 character set</B>. When
164 the <I>case sensitive</I> switch is off and the <I>iso latin 1</I> switch
165 is on, case conversion is performed for all ISO Latin 1
166 characters, not just those in the ASCII range.
167 <P>
168 <B>Improved support for error diagnostics.</B> It is now possible for users
169 to provide their own text for the error messages created by the <I>diagnose
170 errors</I> switch. In addition, the <I>token names</I> table option now
171 includes ascii representation of individual characters and keywords instead
172 of only named tokens. The <I>token names only</I> switch can be used for
173 compatibility with previous versions of AnaGram
174
175 <P>
176 <B>More precise determination of error context.</B> The tables used by the
177 error frame option to provide the context of a syntax error have been
178 reworked and now provide a substantially more precise localization of the
179 error.
180 <P>
181 <BR>
182
183 <H2><A NAME="201diagnostics">Improved Error Diagnostics</A></H2>
184
185 <B>Missing reduction procedure diagnostic.</B>
186 In addition to warning that there is a parameter assignment
187 without a reduction procedure, this
188 diagnostic is now provided if the default reduction value
189 does not have the same data type as the reduction token.
190 <P>
191 <B>Command line version.</B> Diagnostics have been reformatted so
192 they can be recognized by the Microsoft Visual C++ IDE.
193
194 <P>
195 <B>Refined keyword anomaly diagnostics.</B> There should
196 now be fewer false alarms.
197 <P>
198 <H2><A NAME="201convenience">Increased Convenience</A></H2>
199
200 <B>File Trace.</B> If your grammar uses semantically determined productions,
201 the File Trace feature will now remember the choices you have
202 made for reduction tokens, so that you do not have to make
203 the same choices over and over again as you work with an example.
204 <P>
205 <B>File paths</B>. The file paths in the #line directives created by the line numbers
206 switch now use forward slashes instead of backslashes.
207 <P>
208 <H2><A NAME="201defaults">Changed Defaults</A></H2>
209
210 <B>Parser stack alignment.</B> Now defaults to long instead of int.
211 <P>
212 <B>Parser stack size.</B> Now defaults to 128 instead of 32.
213 <P>
214 <H2><A NAME="201fixes">Bug Fixes</A></H2>
215
216 <B>Interaction between context tracking and error token. </B>In previous
217 versions of AnaGram, if the first token in a rule was the error token,
218 the value of CONTEXT was the value that corresponded to the location
219 of the error. CONTEXT now correctly shows the context at which the
220 aborted rule began. For instance, in the following example, if a
221 syntax error is encountered while parsing the expression, the error
222 rule will skip over remaining characters to the terminating semicolon.
223 When invoked from handleError(), the CONTEXT macro will return the
224 context as it was at the beginning of the expression.
225 <PRE>
226 expression statement
227 -> expression, ';'
228 -> error, ~(eof + ';')?..., ';' =handleError();
229 </PRE>
230 <B>Distinguish lexemes.</B> Several minor bugs in the implementation of <I>distinguish lexemes</I> have been
231 corrected.
232 <P>
233 <B>Set partition logic.</B> Corrected problems in the interaction between the set partition logic
234 and the implementation of the <I>disregard</I> statement.
235 <P>
236 <B>Table size.</B> Fixed a data sizing problem which occurred when one particular parse table
237 had precisely 256 entries.
238 <P>
239 <B>Keyword recognition.</B> Fixed a problem that could cause difficulties with keyword
240 recognition when the <I>case sensitive</I> switch was turned off.
241 <P>
242 <B>Default conflict resolution.</B> With unresolved shift-reduce conflicts, the shift case was
243 not always being selected. This problem has been corrected.
244 <P>
245 <B>Lockup.</B> It was possible to write an erroneous grammar that would cause
246 AnaGram to lock up. This problem has been corrected.
247 <P>
248 <B>Potential bus error.</B> The error diagnostic funtion created by the <I>diagnose errors</I>
249 switch, could, under some circumstances, access an uninitialized value
250 on the parser value stack. This problem has been corrected.
251 <P>
252 <B>Internal errors.</B> Fixed a number of minor bugs which could cause internal errors
253 while running File Trace.
254
255 </BODY>
256 </HTML>