Mercurial > ~dholland > hg > ag > index.cgi
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 © 1993-2002 Parsifal Software<BR> | |
19 Copyright © 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> |