comparison doc/misc/buildnotes.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
comparison
equal deleted inserted replaced
-1:000000000000 0:13d2b8934445
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
2 <HTML>
3 <HEAD>
4 <TITLE>AnaGram Build Notes</TITLE>
5 </HEAD>
6 <BODY
7 BGCOLOR="#ffffff"
8 BACKGROUND="html/tilbl6h.gif"
9 TEXT="#000000"
10 LINK="#0033CC"
11 VLINK="#CC0033"
12 ALINK="#CC0099"
13 >
14
15 <P align=right>
16 <IMG SRC=html/images/aga6d.gif ALT="AnaGram"><BR>
17 A System for Syntax Directed Programming<BR>
18 Version 2.40<BR>
19 <BR>
20 Copyright &copy; 1993-2002 Parsifal Software<BR>
21 Copyright &copy; 2006, 2007 David A. Holland<BR>
22 All Rights Reserved.
23 </P>
24
25 <H1>Build/Release Notes</H1>
26 <P>
27 Version 2.40:
28 <UL>
29 <LI><A HREF=#24000>AnaGram 2.40.00</A>
30 </UL>
31 From version 2.01:
32 <UL>
33 <LI><A HREF=#20108>AnaGram 2.01.08</A>
34 <LI><A HREF=#20107>AnaGram 2.01.07</A>
35 <LI><A HREF=#20106>AnaGram 2.01.06</A>
36 </UL>
37 </P>
38
39 <A NAME="24000"></A>
40 <H2>AnaGram 2.40.00 Build Notes</H2>
41 <P>
42 AnaGram 2.40.00 is the first release build of AnaGram 2.40, and the
43 first open source release. See <A HREF=whatsnew.html>whatsnew.html</A>
44 for details.
45 </P>
46
47 <!-- ------------------------------------------------------------>
48 <HR>
49
50 <A NAME="20108"></A>
51 <H2>AnaGram 2.01.08 Build Notes</H2>
52 AnaGram 2.01.08 is a maintenance build devoted primarily to bug fixes.
53 <P>
54 <H3>Warning Messages</H3>
55 Use of a <I>void</I> token as a reduction procedure parameter is now properly
56 diagnosed.
57 <P>
58 Some problems associated with identifying "circular definitions" were fixed.
59 <P>
60 <H3>Parsing Syntax Files</H3>
61 There was a problem that would occasionally manifest itself as a spurious
62 "unexpected end of file" if the last line of a syntax file contained a
63 "//" comment. This problem has now been corrected.
64 <P>
65 Character set ranges defined by the form 'a'..'z' are now allowed.
66 <P>
67 Continuation lines in "wrapper" statements are now allowed.
68 <P>
69 An empty "virtual production", e.g., { }..., now causes a syntax error.
70 <P>
71
72 <H3>Syntax Analysis</H3>
73 A problem was corrected that sometimes caused incorrect partition set
74 analysis when the "case sensitive" switch was turned off.
75 <P>
76 Any token that is used in the definition of a lexeme is now treated as
77 a lexeme when it appears in any rule that is <I>not</I> part of the
78 definition of a lexeme.
79 <P>
80 When <I>disregard white space</I> and <I>distinguish lexeme</I> statements
81 are in effect, rules that are part of the definition of white space or of the
82 definition of a lexeme are not reduced by keywords that are <I>not</I>
83 themselves lexemes.
84 <P>
85 <H3>Code Generation</H3>
86 Parser files with an automatically generated <I>main()</I> program now
87 have a newline character at the end of file.
88 <P>
89 The use of template classes with more than one parameter, e.g.,<CODE>
90 template &lt;class Foo, class Bar> class Foobar {...}</CODE> for token value
91 types caused errors at compile time. When the type name was used as
92 a parameter in a macro invocation, the comma embedded in angle
93 brackets appeared to the macro preprocessor as an argument delimiter, thus
94 causing it to see an incorrect number of arguments.
95 <P>
96 A subtle interaction between wrapper classes and immediate actions was
97 fixed.
98 <P>
99 Some unnecessary <I>#include</I> statements were removed from the generated code.
100 <P>
101 If any token has type <I>double</I>, the parser stack alignment is now set to
102 <I>double</I>.
103 <P>
104 The definition of the AgObjectWrapper template class is now protected from
105 multiple definition by an <I>#ifndef</I> statement.
106 <P>
107 Incorrect keyword recognition tables were generated for grammars with
108 256 or more keywords. They are now generated correctly, regardless of the
109 number of keywords.
110 <P>
111 An error in the keyword recognition functions has been fixed. There was a
112 possibility of unpredictable behavior in a grammar with both keywords and
113 input codes greater than 255 decimal.
114 <P>
115 <H3>Miscellaneous Problems</H3>
116 When the command line executable, <I>agcl</I>, was invoked without an
117 explicit path, relying on the PATH environment variable, AnaGram was
118 unable to find its support files. This has now been corrected.
119 <P>
120
121 <!-- ------------------------------------------------------------>
122 <HR>
123
124 <A NAME="20107"></A>
125 <H2>2.01.07 Build Notes</H2>
126 AnaGram 2.01.07 is a maintenance build which corrects a few minor bugs,
127 modifies warning messages introduced in Build 2.01.06, and corrects a
128 few help messages.
129 <P>
130 <H3>Corrected Error Token Handling</H3>
131 Under certain circumstances, versions of AnaGram prior to the current
132 version could generate instructions in the error token handling code which
133 could cause bus errors. As far as we have been able to determine,
134 actual instances of this problem have been rare. The problem has now
135 been corrected.
136 <P>
137 <H3>Placement Delete Function</H3>
138 C++ parsers that specified the wrapper option would get warnings from
139 some compilers complaining about the absence of a "placement delete"
140 operator for the wrapper classes. Conditional definition of "placement
141 delete" operator has now been provided. Please see the on-line help
142 for AG_PLACEMENT_DELETE_REQUIRED for details.
143 <P>
144 <H3>Modified Warning Messages</H3>
145 The warning messages concerning grammars with "infinite recursion" and the
146 possibility
147 of consequent infinite loops in the generated parser have been changed
148 to refer to "empty recursion" which we believe to be a more appropriate
149 description of the problem.
150
151 <H3>Incorrect Warning</H3>
152 Version 2.01.06 would issue a diagnostic for "infinite recursion" in
153 certain cases of center recursion which were not, in fact, in error.
154 The diagnosis is now more precise.
155
156 <H3>Warning instead of Error</H3>
157
158 "Empty recursion", formerly known as "infinite recursion", was handled as a
159 grammar error in version 2.01.06, so that further analysis of a grammar with
160 this problem was not possible. In version 2.01.07, empty recursion causes
161 only a warning, so that analysis of the grammar may continue. Note that if
162 you ignore the warning and actually build a parser incorporating empty
163 recursion, the parser could go into an infinite loop during operation.
164 <P>
165 In the presence of empty
166 recursion, AnaGram's Keyword Anomaly analysis and File Trace are disabled.
167 This is because AnaGram could easily get into an infinite loop while
168 attempting to parse sample input for a grammar incorporating empty
169 recursion.
170 <P>
171
172 <!-- ------------------------------------------------------------>
173 <HR>
174
175 <A NAME="20106"></A>
176 <H2>2.01.06 Build Notes</H2>
177 AnaGram 2.01.06 is a maintenance build which corrects a few minor bugs
178 and introduces two new error messages.
179 <P>
180
181 <H3>Corrected "Wrapper" Feature Problems</H3>
182 Under certain circumstances, in a grammar that used wrappers to encapsulate
183 C++ class objects on the parser value stack, AnaGram would cause the wrapper
184 for the first token in a rule to be deleted, even though the data was still
185 needed. This bug was introduced in AnaGram 2.01.05 and has now been corrected.
186 <P>
187 If wrappers were enabled and <B>error token </B> resynchronization was also
188 enabled, AnaGram generated incorrect code for deleting wrappers. This has been
189 corrected.
190
191 <H3>New Error Messages</H3>
192 It is possible, with null productions or other zero length tokens, to write
193 recursive rules which translate into infinite loops in a parser. AnaGram now
194 identifies such <B>infinitely recursive rules</B> and provides an error message
195 for each such rule. AnaGram also terminates the analysis with an <B>infinite
196 recursion</B> warning, since the analysis could also get into an infinite loop.
197
198 <H3>Thread Execution Priority</H3>
199 AnaGram performs its analysis and build processes in separate background
200 threads. The thread priority previously was set too low, so that thread
201 execution could be delayed by power saving software running at the lowest
202 priority level. The priority of the background thread was increased.
203
204 <H3>Short Reduction Procedures and the Reentrant Parser Switch</H3>
205 Reduction procedures of the form<CODE> ={ return x;}</CODE> are now
206 handled correctly even if both the <B>reentrant parser</B> switch and the
207 <B>allow macros</B> switches are set. Previously there was a possibility of
208 a compiler error when the parser module was compiled.
209
210 <H3>Default Value for Null Productions</H3>
211 The default definition of the NULL_INITIALIZER macro was changed for parsers
212 which have a simple integer value stack in order to avoid
213 a compiler diagnostic generated by the Sun C++ 5.0 compiler.
214 <P>
215 </BODY>
216 </HTML>