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