]> git.saurik.com Git - bison.git/blame - NEWS
Java parser improvements
[bison.git] / NEWS
CommitLineData
6780ca7a
DM
1Bison News
2----------
3af4feb2 3
8fa36911 4Changes in version ?.? (????-??-??):
7bd1665a
JD
5
6*
7
72c5b982 8Changes in version 2.3b (2008-05-27):
35fe0834 9
d9df47b6
JD
10* The quotes around NAME that used to be required in the following directive
11 are now deprecated:
12
13 %define NAME "VALUE"
14
15* The directive `%pure-parser' is now deprecated in favor of:
16
17 %define api.pure
18
19 which has the same effect except that Bison is more careful to warn about
20 unreasonable usage in the latter case.
21
c373bf8b
JD
22* Push Parsing
23
24 Bison can now generate an LALR(1) parser in C with a push interface. That
ef1b4273 25 is, instead of invoking `yyparse', which pulls tokens from `yylex', you can
c373bf8b
JD
26 push one token at a time to the parser using `yypush_parse', which will
27 return to the caller after processing each token. By default, the push
28 interface is disabled. Either of the following directives will enable it:
29
30 %define api.push_pull "push" // Just push; does not require yylex.
31 %define api.push_pull "both" // Push and pull; requires yylex.
32
33 See the new section `A Push Parser' in the Bison manual for details.
34
59da312b
JD
35 The current push parsing interface is experimental and may evolve. More user
36 feedback will help to stabilize it.
37
c373bf8b 38* The -g and --graph options now output graphs in Graphviz DOT format,
8e55b3aa
JD
39 not VCG format. Like --graph, -g now also takes an optional FILE argument
40 and thus cannot be bundled with other short options.
c373bf8b 41
59da312b
JD
42* Java
43
44 Bison can now generate an LALR(1) parser in Java. The skeleton is
45 `data/lalr1.java'. Consider using the new %language directive instead of
46 %skeleton to select it.
47
48 See the new section `Java Parsers' in the Bison manual for details.
49
50 The current Java interface is experimental and may evolve. More user
51 feedback will help to stabilize it.
52
53* %language
54
55 This new directive specifies the programming language of the generated
d43f77e7
PB
56 parser, which can be C (the default), C++, or Java. Besides the skeleton
57 that Bison uses, the directive affects the names of the generated files if
58 the grammar file's name ends in ".y".
59da312b
JD
59
60* XML Automaton Report
61
62 Bison can now generate an XML report of the LALR(1) automaton using the new
63 `--xml' option. The current XML schema is experimental and may evolve. More
64 user feedback will help to stabilize it.
c373bf8b
JD
65
66* The grammar file may now specify the name of the parser header file using
67 %defines. For example:
68
69 %defines "parser.h"
70
d80fb37a
JD
71* When reporting useless rules, useless nonterminals, and unused terminals,
72 Bison now employs the terms "useless in grammar" instead of "useless",
73 "useless in parser" instead of "never reduced", and "unused in grammar"
74 instead of "unused".
cff03fb2 75
c373bf8b
JD
76* Unreachable State Removal
77
78 Previously, Bison sometimes generated parser tables containing unreachable
31984206
JD
79 states. A state can become unreachable during conflict resolution if Bison
80 disables a shift action leading to it from a predecessor state. Bison now:
75ad86ee
JD
81
82 1. Removes unreachable states.
83
84 2. Does not report any conflicts that appeared in unreachable states.
85 WARNING: As a result, you may need to update %expect and %expect-rr
86 directives in existing grammar files.
87
88 3. For any rule used only in such states, Bison now reports the rule as
cff03fb2 89 "useless in parser due to conflicts".
75ad86ee 90
31984206
JD
91 This feature can be disabled with the following directive:
92
93 %define lr.keep_unreachable_states
94
95 See the %define entry in the `Bison Declaration Summary' in the Bison manual
96 for further discussion.
97
c373bf8b 98* Lookahead Set Correction in the `.output' Report
b1cc23c4 99
c373bf8b 100 When instructed to generate a `.output' file including lookahead sets
88c78747
JD
101 (using `--report=lookahead', for example), Bison now prints each reduction's
102 lookahead set only next to the associated state's one item that (1) is
103 associated with the same rule as the reduction and (2) has its dot at the end
104 of its RHS. Previously, Bison also erroneously printed the lookahead set
105 next to all of the state's other items associated with the same rule. This
106 bug affected only the `.output' file and not the generated parser source
107 code.
108
59da312b
JD
109* --report-file=FILE is a new option to override the default `.output' file
110 name.
1bb2bd75 111
16dc6a9e 112* The `=' that used to be required in the following directives is now
02975b9a
JD
113 deprecated:
114
115 %file-prefix "parser"
116 %name-prefix "c_"
117 %output "parser.c"
118
c373bf8b
JD
119* An Alternative to `%{...%}' -- `%code QUALIFIER {CODE}'
120
121 Bison 2.3a provided a new set of directives as a more flexible alternative to
8e0a5e9e
JD
122 the traditional Yacc prologue blocks. Those have now been consolidated into
123 a single %code directive with an optional qualifier field, which identifies
124 the purpose of the code and thus the location(s) where Bison should generate
125 it:
126
16dc6a9e
JD
127 1. `%code {CODE}' replaces `%after-header {CODE}'
128 2. `%code requires {CODE}' replaces `%start-header {CODE}'
129 3. `%code provides {CODE}' replaces `%end-header {CODE}'
130 4. `%code top {CODE}' replaces `%before-header {CODE}'
8e0a5e9e 131
61fee93e
JD
132 See the %code entries in section `Bison Declaration Summary' in the Bison
133 manual for a summary of the new functionality. See the new section `Prologue
8e0a5e9e
JD
134 Alternatives' for a detailed discussion including the advantages of %code
135 over the traditional Yacc prologues.
136
137 The prologue alternatives are experimental. More user feedback will help to
138 determine whether they should become permanent features.
139
17bd8a73
JD
140* Revised warning: unset or unused mid-rule values
141
142 Since Bison 2.2, Bison has warned about mid-rule values that are set but not
143 used within any of the actions of the parent rule. For example, Bison warns
144 about unused $2 in:
145
146 exp: '1' { $$ = 1; } '+' exp { $$ = $1 + $4; };
147
148 Now, Bison also warns about mid-rule values that are used but not set. For
149 example, Bison warns about unset $$ in the mid-rule action in:
150
151 exp: '1' { $1 = 1; } '+' exp { $$ = $2 + $4; };
152
153 However, Bison now disables both of these warnings by default since they
154 sometimes prove to be false alarms in existing grammars employing the Yacc
155 constructs $0 or $-N (where N is some positive integer).
156
59da312b 157 To enable these warnings, specify the option `--warnings=midrule-values' or
17bd8a73
JD
158 `-W', which is a synonym for `--warnings=all'.
159
c373bf8b
JD
160* Default %destructor or %printer with `<*>' or `<>'
161
162 Bison now recognizes two separate kinds of default %destructor's and
12e35840
JD
163 %printer's:
164
165 1. Place `<*>' in a %destructor/%printer symbol list to define a default
166 %destructor/%printer for all grammar symbols for which you have formally
167 declared semantic type tags.
168
3ebecc24 169 2. Place `<>' in a %destructor/%printer symbol list to define a default
12e35840
JD
170 %destructor/%printer for all grammar symbols without declared semantic
171 type tags.
172
173 Bison no longer supports the `%symbol-default' notation from Bison 2.3a.
3ebecc24 174 `<*>' and `<>' combined achieve the same effect with one exception: Bison no
12e35840
JD
175 longer applies any %destructor to a mid-rule value if that mid-rule value is
176 not actually ever referenced using either $$ or $n in a semantic action.
177
85894313
JD
178 The default %destructor's and %printer's are experimental. More user
179 feedback will help to determine whether they should become permanent
180 features.
181
12e35840
JD
182 See the section `Freeing Discarded Symbols' in the Bison manual for further
183 details.
184
ab7f29f8
JD
185* %left, %right, and %nonassoc can now declare token numbers. This is required
186 by POSIX. However, see the end of section `Operator Precedence' in the Bison
187 manual for a caveat concerning the treatment of literal strings.
188
b1cc23c4
JD
189* The nonfunctional --no-parser, -n, and %no-parser options have been
190 completely removed from Bison.
191
21fe08ca 192Changes in version 2.3a, 2006-09-13:
742e4900 193
ddc8ede1
PE
194* Instead of %union, you can define and use your own union type
195 YYSTYPE if your grammar contains at least one <type> tag.
196 Your YYSTYPE need not be a macro; it can be a typedef.
197 This change is for compatibility with other Yacc implementations,
198 and is required by POSIX.
199
cd48d21d
AD
200* Locations columns and lines start at 1.
201 In accordance with the GNU Coding Standards and Emacs.
202
b2a0b7ca 203* You may now declare per-type and default %destructor's and %printer's:
ec5479ce
JD
204
205 For example:
206
b2a0b7ca
JD
207 %union { char *string; }
208 %token <string> STRING1
209 %token <string> STRING2
210 %type <string> string1
211 %type <string> string2
212 %union { char character; }
213 %token <character> CHR
214 %type <character> chr
215 %destructor { free ($$); } %symbol-default
216 %destructor { free ($$); printf ("%d", @$.first_line); } STRING1 string1
217 %destructor { } <character>
218
219 guarantees that, when the parser discards any user-defined symbol that has a
220 semantic type tag other than `<character>', it passes its semantic value to
221 `free'. However, when the parser discards a `STRING1' or a `string1', it
222 also prints its line number to `stdout'. It performs only the second
223 `%destructor' in this case, so it invokes `free' only once.
ec5479ce 224
85894313
JD
225 [Although we failed to mention this here in the 2.3a release, the default
226 %destructor's and %printer's were experimental, and they were rewritten in
227 future versions.]
228
b931235e
JD
229* Except for LALR(1) parsers in C with POSIX Yacc emulation enabled (with `-y',
230 `--yacc', or `%yacc'), Bison no longer generates #define statements for
231 associating token numbers with token names. Removing the #define statements
232 helps to sanitize the global namespace during preprocessing, but POSIX Yacc
233 requires them. Bison still generates an enum for token names in all cases.
234
34f98f46
JD
235* Handling of traditional Yacc prologue blocks is now more consistent but
236 potentially incompatible with previous releases of Bison.
9bc0dd67
JD
237
238 As before, you declare prologue blocks in your grammar file with the
239 `%{ ... %}' syntax. To generate the pre-prologue, Bison concatenates all
34f98f46
JD
240 prologue blocks that you've declared before the first %union. To generate
241 the post-prologue, Bison concatenates all prologue blocks that you've
ddc8ede1 242 declared after the first %union.
9bc0dd67 243
34f98f46 244 Previous releases of Bison inserted the pre-prologue into both the header
9bc0dd67
JD
245 file and the code file in all cases except for LALR(1) parsers in C. In the
246 latter case, Bison inserted it only into the code file. For parsers in C++,
247 the point of insertion was before any token definitions (which associate
248 token numbers with names). For parsers in C, the point of insertion was
249 after the token definitions.
250
251 Now, Bison never inserts the pre-prologue into the header file. In the code
252 file, it always inserts it before the token definitions.
253
34f98f46
JD
254* Bison now provides a more flexible alternative to the traditional Yacc
255 prologue blocks: %before-header, %start-header, %end-header, and
256 %after-header.
257
258 For example, the following declaration order in the grammar file reflects the
259 order in which Bison will output these code blocks. However, you are free to
260 declare these code blocks in your grammar file in whatever order is most
261 convenient for you:
262
263 %before-header {
264 /* Bison treats this block like a pre-prologue block: it inserts it into
265 * the code file before the contents of the header file. It does *not*
266 * insert it into the header file. This is a good place to put
267 * #include's that you want at the top of your code file. A common
268 * example is `#include "system.h"'. */
269 }
270 %start-header {
271 /* Bison inserts this block into both the header file and the code file.
272 * In both files, the point of insertion is before any Bison-generated
273 * token, semantic type, location type, and class definitions. This is a
274 * good place to define %union dependencies, for example. */
9bc0dd67
JD
275 }
276 %union {
34f98f46
JD
277 /* Unlike the traditional Yacc prologue blocks, the output order for the
278 * new %*-header blocks is not affected by their declaration position
279 * relative to any %union in the grammar file. */
9bc0dd67 280 }
34f98f46
JD
281 %end-header {
282 /* Bison inserts this block into both the header file and the code file.
283 * In both files, the point of insertion is after the Bison-generated
284 * definitions. This is a good place to declare or define public
285 * functions or data structures that depend on the Bison-generated
286 * definitions. */
9bc0dd67 287 }
34f98f46
JD
288 %after-header {
289 /* Bison treats this block like a post-prologue block: it inserts it into
290 * the code file after the contents of the header file. It does *not*
291 * insert it into the header file. This is a good place to declare or
292 * define internal functions or data structures that depend on the
293 * Bison-generated definitions. */
294 }
295
296 If you have multiple occurrences of any one of the above declarations, Bison
297 will concatenate the contents in declaration order.
9bc0dd67 298
85894313
JD
299 [Although we failed to mention this here in the 2.3a release, the prologue
300 alternatives were experimental, and they were rewritten in future versions.]
301
742e4900 302* The option `--report=look-ahead' has been changed to `--report=lookahead'.
9e6e7ed2
PE
303 The old spelling still works, but is not documented and may be removed
304 in a future release.
742e4900 305
4ad3ed84
PE
306Changes in version 2.3, 2006-06-05:
307
308* GLR grammars should now use `YYRECOVERING ()' instead of `YYRECOVERING',
309 for compatibility with LALR(1) grammars.
310
311* It is now documented that any definition of YYSTYPE or YYLTYPE should
312 be to a type name that does not contain parentheses or brackets.
313
ab8d9dc5 314Changes in version 2.2, 2006-05-19:
193d7c70
PE
315
316* The distribution terms for all Bison-generated parsers now permit
317 using the parsers in nonfree programs. Previously, this permission
318 was granted only for Bison-generated LALR(1) parsers in C.
5f4236a0 319
aa08666d
AD
320* %name-prefix changes the namespace name in C++ outputs.
321
322* The C++ parsers export their token_type.
5f4236a0 323
d6ca7905
PE
324* Bison now allows multiple %union declarations, and concatenates
325 their contents together.
326
affac613 327* New warning: unused values
4d7bc38c
PE
328 Right-hand side symbols whose values are not used are reported,
329 if the symbols have destructors. For instance:
affac613 330
8f3596a6 331 exp: exp "?" exp ":" exp { $1 ? $1 : $3; }
721be13c
PE
332 | exp "+" exp
333 ;
affac613 334
8f3596a6
AD
335 will trigger a warning about $$ and $5 in the first rule, and $3 in
336 the second ($1 is copied to $$ by the default rule). This example
4e26c69e 337 most likely contains three errors, and could be rewritten as:
affac613 338
4e26c69e
PE
339 exp: exp "?" exp ":" exp
340 { $$ = $1 ? $3 : $5; free ($1 ? $5 : $3); free ($1); }
341 | exp "+" exp
342 { $$ = $1 ? $1 : $3; if ($1) free ($3); }
721be13c 343 ;
affac613 344
4e26c69e
PE
345 However, if the original actions were really intended, memory leaks
346 and all, the warnings can be suppressed by letting Bison believe the
347 values are used, e.g.:
721be13c 348
8f3596a6 349 exp: exp "?" exp ":" exp { $1 ? $1 : $3; (void) ($$, $5); }
721be13c
PE
350 | exp "+" exp { $$ = $1; (void) $3; }
351 ;
352
84866159
AD
353 If there are mid-rule actions, the warning is issued if no action
354 uses it. The following triggers no warning: $1 and $3 are used.
355
356 exp: exp { push ($1); } '+' exp { push ($3); sum (); };
357
721be13c
PE
358 The warning is intended to help catching lost values and memory leaks.
359 If a value is ignored, its associated memory typically is not reclaimed.
affac613 360
9d9b8b70
PE
361* %destructor vs. YYABORT, YYACCEPT, and YYERROR.
362 Destructors are now called when user code invokes YYABORT, YYACCEPT,
363 and YYERROR, for all objects on the stack, other than objects
364 corresponding to the right-hand side of the current rule.
a85284cf 365
035aa4a0
PE
366* %expect, %expect-rr
367 Incorrect numbers of expected conflicts are now actual errors,
368 instead of warnings.
369
4b367315 370* GLR, YACC parsers.
4e26c69e
PE
371 The %parse-params are available in the destructors (and the
372 experimental printers) as per the documentation.
4b367315 373
302c0aee 374* Bison now warns if it finds a stray `$' or `@' in an action.
ad6a9b97 375
b50d2359 376* %require "VERSION"
4e26c69e
PE
377 This specifies that the grammar file depends on features implemented
378 in Bison version VERSION or higher.
b50d2359 379
fb9712a9 380* lalr1.cc: The token and value types are now class members.
e14d0ab6
AD
381 The tokens were defined as free form enums and cpp macros. YYSTYPE
382 was defined as a free form union. They are now class members:
fb9712a9
AD
383 tokens are enumerations of the `yy::parser::token' struct, and the
384 semantic values have the `yy::parser::semantic_type' type.
385
386 If you do not want or can update to this scheme, the directive
387 `%define "global_tokens_and_yystype" "1"' triggers the global
b50d2359
AD
388 definition of tokens and YYSTYPE. This change is suitable both
389 for previous releases of Bison, and this one.
fb9712a9 390
b50d2359 391 If you wish to update, then make sure older version of Bison will
ab8d9dc5 392 fail using `%require "2.2"'.
fb9712a9 393
302c0aee 394* DJGPP support added.
193d7c70 395\f
1bd0deda 396Changes in version 2.1, 2005-09-16:
1ce59070 397
e14d0ab6
AD
398* The C++ lalr1.cc skeleton supports %lex-param.
399
a7db4add 400* Bison-generated parsers now support the translation of diagnostics like
baf785db
PE
401 "syntax error" into languages other than English. The default
402 language is still English. For details, please see the new
0410a6e0
PE
403 Internationalization section of the Bison manual. Software
404 distributors should also see the new PACKAGING file. Thanks to
405 Bruno Haible for this new feature.
1ce59070 406
1a059451
PE
407* Wording in the Bison-generated parsers has been changed slightly to
408 simplify translation. In particular, the message "memory exhausted"
409 has replaced "parser stack overflow", as the old message was not
410 always accurate for modern Bison-generated parsers.
411
258b75ca
PE
412* Destructors are now called when the parser aborts, for all symbols left
413 behind on the stack. Also, the start symbol is now destroyed after a
414 successful parse. In both cases, the behavior was formerly inconsistent.
415
a7db4add 416* When generating verbose diagnostics, Bison-generated parsers no longer
72f000b0
PE
417 quote the literal strings associated with tokens. For example, for
418 a syntax error associated with '%token NUM "number"' they might
419 print 'syntax error, unexpected number' instead of 'syntax error,
420 unexpected "number"'.
193d7c70 421\f
82de6b0d 422Changes in version 2.0, 2004-12-25:
efeed023 423
82de6b0d 424* Possibly-incompatible changes
d7e14fc0 425
82de6b0d
PE
426 - Bison-generated parsers no longer default to using the alloca function
427 (when available) to extend the parser stack, due to widespread
428 problems in unchecked stack-overflow detection. You can "#define
429 YYSTACK_USE_ALLOCA 1" to require the use of alloca, but please read
430 the manual to determine safe values for YYMAXDEPTH in that case.
8dd162d3 431
82de6b0d
PE
432 - Error token location.
433 During error recovery, the location of the syntax error is updated
434 to cover the whole sequence covered by the error token: it includes
435 the shifted symbols thrown away during the first part of the error
436 recovery, and the lookahead rejected during the second part.
18d192f0 437
82de6b0d
PE
438 - Semicolon changes:
439 . Stray semicolons are no longer allowed at the start of a grammar.
440 . Semicolons are now required after in-grammar declarations.
e342c3be 441
82de6b0d
PE
442 - Unescaped newlines are no longer allowed in character constants or
443 string literals. They were never portable, and GCC 3.4.0 has
444 dropped support for them. Better diagnostics are now generated if
445 forget a closing quote.
8dd162d3 446
82de6b0d 447 - NUL bytes are no longer allowed in Bison string literals, unfortunately.
f74b6f91 448
82de6b0d 449* New features
1452af69 450
82de6b0d 451 - GLR grammars now support locations.
4febdd96 452
82de6b0d
PE
453 - New directive: %initial-action.
454 This directive allows the user to run arbitrary code (including
455 initializing @$) from yyparse before parsing starts.
1452af69 456
82de6b0d
PE
457 - A new directive "%expect-rr N" specifies the expected number of
458 reduce/reduce conflicts in GLR parsers.
1452af69 459
82de6b0d
PE
460 - %token numbers can now be hexadecimal integers, e.g., `%token FOO 0x12d'.
461 This is a GNU extension.
4febdd96 462
82de6b0d 463 - The option `--report=lookahead' was changed to `--report=look-ahead'.
9e6e7ed2 464 [However, this was changed back after 2.3.]
1452af69 465
82de6b0d 466 - Experimental %destructor support has been added to lalr1.cc.
1452af69 467
82de6b0d
PE
468 - New configure option --disable-yacc, to disable installation of the
469 yacc command and -ly library introduced in 1.875 for POSIX conformance.
6040d338 470
82de6b0d 471* Bug fixes
d5a3fe37 472
82de6b0d
PE
473 - For now, %expect-count violations are now just warnings, not errors.
474 This is for compatibility with Bison 1.75 and earlier (when there are
475 reduce/reduce conflicts) and with Bison 1.30 and earlier (when there
476 are too many or too few shift/reduce conflicts). However, in future
477 versions of Bison we plan to improve the %expect machinery so that
478 these violations will become errors again.
3473d0f8 479
82de6b0d
PE
480 - Within Bison itself, numbers (e.g., goto numbers) are no longer
481 arbitrarily limited to 16-bit counts.
d600ee67 482
82de6b0d 483 - Semicolons are now allowed before "|" in grammar rules, as POSIX requires.
d600ee67 484\f
dc546b0f 485Changes in version 1.875, 2003-01-01:
963fcc17 486
dc546b0f
PE
487* The documentation license has been upgraded to version 1.2
488 of the GNU Free Documentation License.
75eb3bc4 489
dc546b0f 490* syntax error processing
75eb3bc4 491
dc546b0f
PE
492 - In Yacc-style parsers YYLLOC_DEFAULT is now used to compute error
493 locations too. This fixes bugs in error-location computation.
75eb3bc4 494
dc546b0f
PE
495 - %destructor
496 It is now possible to reclaim the memory associated to symbols
497 discarded during error recovery. This feature is still experimental.
20daca06 498
dc546b0f
PE
499 - %error-verbose
500 This new directive is preferred over YYERROR_VERBOSE.
74724a70 501
dc546b0f
PE
502 - #defining yyerror to steal internal variables is discouraged.
503 It is not guaranteed to work forever.
d1de5372 504
dc546b0f 505* POSIX conformance
d1de5372 506
dc546b0f
PE
507 - Semicolons are once again optional at the end of grammar rules.
508 This reverts to the behavior of Bison 1.33 and earlier, and improves
509 compatibility with Yacc.
74724a70 510
dc546b0f
PE
511 - `parse error' -> `syntax error'
512 Bison now uniformly uses the term `syntax error'; formerly, the code
513 and manual sometimes used the term `parse error' instead. POSIX
514 requires `syntax error' in diagnostics, and it was thought better to
515 be consistent.
74724a70 516
dc546b0f
PE
517 - The documentation now emphasizes that yylex and yyerror must be
518 declared before use. C99 requires this.
d1de5372 519
dc546b0f
PE
520 - Bison now parses C99 lexical constructs like UCNs and
521 backslash-newline within C escape sequences, as POSIX 1003.1-2001 requires.
d1de5372 522
dc546b0f
PE
523 - File names are properly escaped in C output. E.g., foo\bar.y is
524 output as "foo\\bar.y".
6780ca7a 525
dc546b0f
PE
526 - Yacc command and library now available
527 The Bison distribution now installs a `yacc' command, as POSIX requires.
528 Also, Bison now installs a small library liby.a containing
529 implementations of Yacc-compatible yyerror and main functions.
530 This library is normally not useful, but POSIX requires it.
6e649e65 531
dc546b0f 532 - Type clashes now generate warnings, not errors.
6e649e65 533
dc546b0f
PE
534 - If the user does not define YYSTYPE as a macro, Bison now declares it
535 using typedef instead of defining it as a macro.
536 For consistency, YYLTYPE is also declared instead of defined.
9501dc6e 537
dc546b0f 538* Other compatibility issues
886a425c 539
dc546b0f
PE
540 - %union directives can now have a tag before the `{', e.g., the
541 directive `%union foo {...}' now generates the C code
542 `typedef union foo { ... } YYSTYPE;'; this is for Yacc compatibility.
543 The default union tag is `YYSTYPE', for compatibility with Solaris 9 Yacc.
544 For consistency, YYLTYPE's struct tag is now `YYLTYPE' not `yyltype'.
545 This is for compatibility with both Yacc and Bison 1.35.
72f889cc 546
dc546b0f
PE
547 - `;' is output before the terminating `}' of an action, for
548 compatibility with Bison 1.35.
886a425c 549
dc546b0f
PE
550 - Bison now uses a Yacc-style format for conflict reports, e.g.,
551 `conflicts: 2 shift/reduce, 1 reduce/reduce'.
437c2d80 552
dc546b0f
PE
553 - `yystype' and `yyltype' are now obsolescent macros instead of being
554 typedefs or tags; they are no longer documented and are planned to be
555 withdrawn in a future release.
2a8d363a 556
dc546b0f 557* GLR parser notes
2a8d363a 558
dc546b0f
PE
559 - GLR and inline
560 Users of Bison have to decide how they handle the portability of the
561 C keyword `inline'.
959e5f51 562
dc546b0f
PE
563 - `parsing stack overflow...' -> `parser stack overflow'
564 GLR parsers now report `parser stack overflow' as per the Bison manual.
900c5db5 565
dc546b0f
PE
566* Bison now warns if it detects conflicting outputs to the same file,
567 e.g., it generates a warning for `bison -d -o foo.h foo.y' since
568 that command outputs both code and header to foo.h.
6e40b4eb 569
dc546b0f
PE
570* #line in output files
571 - --no-line works properly.
6e40b4eb
AD
572
573* Bison can no longer be built by a K&R C compiler; it requires C89 or
574 later to be built. This change originally took place a few versions
575 ago, but nobody noticed until we recently asked someone to try
576 building Bison with a K&R C compiler.
d600ee67 577\f
5c16c6b1 578Changes in version 1.75, 2002-10-14:
7933f2b5
PE
579
580* Bison should now work on 64-bit hosts.
581
b7195100 582* Indonesian translation thanks to Tedi Heriyanto.
7933f2b5 583
f50adbbd
AD
584* GLR parsers
585 Fix spurious parse errors.
586
587* Pure parsers
588 Some people redefine yyerror to steal yyparse' private variables.
589 Reenable this trick until an official feature replaces it.
590
d90c934c
AD
591* Type Clashes
592 In agreement with POSIX and with other Yaccs, leaving a default
593 action is valid when $$ is untyped, and $1 typed:
594
595 untyped: ... typed;
596
597 but the converse remains an error:
598
599 typed: ... untyped;
600
601* Values of mid-rule actions
602 The following code:
603
604 foo: { ... } { $$ = $1; } ...
605
606 was incorrectly rejected: $1 is defined in the second mid-rule
607 action, and is equal to the $$ of the first mid-rule action.
d600ee67 608\f
420f93c8 609Changes in version 1.50, 2002-10-04:
adc8c848 610
676385e2
PH
611* GLR parsing
612 The declaration
613 %glr-parser
614 causes Bison to produce a Generalized LR (GLR) parser, capable of handling
615 almost any context-free grammar, ambiguous or not. The new declarations
e8832397 616 %dprec and %merge on grammar rules allow parse-time resolution of
676385e2
PH
617 ambiguities. Contributed by Paul Hilfinger.
618
7933f2b5 619 Unfortunately Bison 1.50 does not work properly on 64-bit hosts
420f93c8
PE
620 like the Alpha, so please stick to 32-bit hosts for now.
621
8c165d89
AD
622* Output Directory
623 When not in Yacc compatibility mode, when the output file was not
e88dbdbf 624 specified, running `bison foo/bar.y' created `foo/bar.c'. It
8c165d89
AD
625 now creates `bar.c'.
626
007a50a4
AD
627* Undefined token
628 The undefined token was systematically mapped to 2 which prevented
e88dbdbf 629 the use of 2 by the user. This is no longer the case.
007a50a4 630
77714df2 631* Unknown token numbers
e88dbdbf 632 If yylex returned an out of range value, yyparse could die. This is
007a50a4
AD
633 no longer the case.
634
23c5a174 635* Error token
e88dbdbf 636 According to POSIX, the error token must be 256.
23c5a174
AD
637 Bison extends this requirement by making it a preference: *if* the
638 user specified that one of her tokens is numbered 256, then error
639 will be mapped onto another number.
640
217598da 641* Verbose error messages
e88dbdbf 642 They no longer report `..., expecting error or...' for states where
217598da
AD
643 error recovery is possible.
644
645* End token
646 Defaults to `$end' instead of `$'.
647
68cd8af3
PE
648* Error recovery now conforms to documentation and to POSIX
649 When a Bison-generated parser encounters a syntax error, it now pops
650 the stack until it finds a state that allows shifting the error
651 token. Formerly, it popped the stack until it found a state that
652 allowed some non-error action other than a default reduction on the
653 error token. The new behavior has long been the documented behavior,
654 and has long been required by POSIX. For more details, please see
337116ba
PE
655 Paul Eggert, "Reductions during Bison error handling" (2002-05-20)
656 <http://lists.gnu.org/archive/html/bug-bison/2002-05/msg00038.html>.
68cd8af3 657
5504898e
AD
658* Traces
659 Popped tokens and nonterminals are now reported.
660
a861a339
PE
661* Larger grammars
662 Larger grammars are now supported (larger token numbers, larger grammar
663 size (= sum of the LHS and RHS lengths), larger LALR tables).
664 Formerly, many of these numbers ran afoul of 16-bit limits;
665 now these limits are 32 bits on most hosts.
355e7c1c 666
77714df2 667* Explicit initial rule
643a5994
AD
668 Bison used to play hacks with the initial rule, which the user does
669 not write. It is now explicit, and visible in the reports and
670 graphs as rule 0.
23c5a174 671
77714df2 672* Useless rules
643a5994 673 Before, Bison reported the useless rules, but, although not used,
77714df2 674 included them in the parsers. They are now actually removed.
23c5a174 675
6b98e4b5
AD
676* Useless rules, useless nonterminals
677 They are now reported, as a warning, with their locations.
678
e8832397
AD
679* Rules never reduced
680 Rules that can never be reduced because of conflicts are now
681 reported.
682
77714df2 683* Incorrect `Token not used'
11652ab3
AD
684 On a grammar such as
685
686 %token useless useful
687 %%
688 exp: '0' %prec useful;
689
690 where a token was used to set the precedence of the last rule,
691 bison reported both `useful' and `useless' as useless tokens.
692
77714df2
AD
693* Revert the C++ namespace changes introduced in 1.31
694 as they caused too many portability hassles.
0179dd65 695
b2d52318
AD
696* Default locations
697 By an accident of design, the default computation of @$ was
698 performed after another default computation was performed: @$ = @1.
699 The latter is now removed: YYLLOC_DEFAULT is fully responsible of
700 the computation of @$.
adc8c848 701
b7c49edf
AD
702* Token end-of-file
703 The token end of file may be specified by the user, in which case,
704 the user symbol is used in the reports, the graphs, and the verbose
a861a339 705 error messages instead of `$end', which remains being the default.
b7c49edf 706 For instance
7bd6c77e 707 %token MYEOF 0
b7c49edf 708 or
7bd6c77e 709 %token MYEOF 0 "end of file"
fdbcd8e2
AD
710
711* Semantic parser
712 This old option, which has been broken for ages, is removed.
713
a861a339
PE
714* New translations
715 Brazilian Portuguese, thanks to Alexandre Folle de Menezes.
84614e13
AD
716 Croatian, thanks to Denis Lackovic.
717
77714df2 718* Incorrect token definitions
e88dbdbf 719 When given `%token 'a' "A"', Bison used to output `#define 'a' 65'.
b87f8b21 720
77714df2
AD
721* Token definitions as enums
722 Tokens are output both as the traditional #define's, and, provided
723 the compiler supports ANSI C or is a C++ compiler, as enums.
e88dbdbf 724 This lets debuggers display names instead of integers.
77714df2 725
ec3bc396
AD
726* Reports
727 In addition to --verbose, bison supports --report=THINGS, which
728 produces additional information:
b408954b
AD
729 - itemset
730 complete the core item sets with their closure
9e6e7ed2
PE
731 - lookahead [changed to `look-ahead' in 1.875e through 2.3, but changed back]
732 explicitly associate lookahead tokens to items
b408954b
AD
733 - solved
734 describe shift/reduce conflicts solving.
735 Bison used to systematically output this information on top of
736 the report. Solved conflicts are now attached to their states.
ec3bc396 737
9af3fbce
AD
738* Type clashes
739 Previous versions don't complain when there is a type clash on
740 the default action if the rule has a mid-rule action, such as in:
741
742 %type <foo> bar
743 %%
744 bar: '0' {} '0';
745
746 This is fixed.
a861a339
PE
747
748* GNU M4 is now required when using Bison.
f987e9d2 749\f
76551463
AD
750Changes in version 1.35, 2002-03-25:
751
752* C Skeleton
753 Some projects use Bison's C parser with C++ compilers, and define
754 YYSTYPE as a class. The recent adjustment of C parsers for data
755 alignment and 64 bit architectures made this impossible.
756
757 Because for the time being no real solution for C++ parser
758 generation exists, kludges were implemented in the parser to
759 maintain this use. In the future, when Bison has C++ parsers, this
760 kludge will be disabled.
761
762 This kludge also addresses some C++ problems when the stack was
763 extended.
76551463
AD
764\f
765Changes in version 1.34, 2002-03-12:
766
767* File name clashes are detected
768 $ bison foo.y -d -o foo.x
769 fatal error: header and parser would both be named `foo.x'
770
771* A missing `;' at the end of a rule triggers a warning
772 In accordance with POSIX, and in agreement with other
773 Yacc implementations, Bison will mandate this semicolon in the near
774 future. This eases the implementation of a Bison parser of Bison
775 grammars by making this grammar LALR(1) instead of LR(2). To
776 facilitate the transition, this release introduces a warning.
777
778* Revert the C++ namespace changes introduced in 1.31, as they caused too
779 many portability hassles.
780
781* DJGPP support added.
782
783* Fix test suite portability problems.
784\f
785Changes in version 1.33, 2002-02-07:
786
787* Fix C++ issues
788 Groff could not be compiled for the definition of size_t was lacking
789 under some conditions.
790
791* Catch invalid @n
792 As is done with $n.
793\f
794Changes in version 1.32, 2002-01-23:
795
796* Fix Yacc output file names
797
798* Portability fixes
799
800* Italian, Dutch translations
801\f
52d1aeee
MA
802Changes in version 1.31, 2002-01-14:
803
804* Many Bug Fixes
805
806* GNU Gettext and %expect
807 GNU Gettext asserts 10 s/r conflicts, but there are 7. Now that
808 Bison dies on incorrect %expectations, we fear there will be
809 too many bug reports for Gettext, so _for the time being_, %expect
810 does not trigger an error when the input file is named `plural.y'.
811
812* Use of alloca in parsers
813 If YYSTACK_USE_ALLOCA is defined to 0, then the parsers will use
814 malloc exclusively. Since 1.29, but was not NEWS'ed.
815
816 alloca is used only when compiled with GCC, to avoid portability
817 problems as on AIX.
818
b47dbebe
PE
819* yyparse now returns 2 if memory is exhausted; formerly it dumped core.
820
52d1aeee
MA
821* When the generated parser lacks debugging code, YYDEBUG is now 0
822 (as POSIX requires) instead of being undefined.
823
824* User Actions
825 Bison has always permitted actions such as { $$ = $1 }: it adds the
826 ending semicolon. Now if in Yacc compatibility mode, the semicolon
827 is no longer output: one has to write { $$ = $1; }.
828
829* Better C++ compliance
830 The output parsers try to respect C++ namespaces.
76551463 831 [This turned out to be a failed experiment, and it was reverted later.]
52d1aeee
MA
832
833* Reduced Grammars
834 Fixed bugs when reporting useless nonterminals.
835
836* 64 bit hosts
837 The parsers work properly on 64 bit hosts.
838
839* Error messages
840 Some calls to strerror resulted in scrambled or missing error messages.
841
842* %expect
843 When the number of shift/reduce conflicts is correct, don't issue
844 any warning.
845
846* The verbose report includes the rule line numbers.
847
848* Rule line numbers are fixed in traces.
849
850* Swedish translation
851
852* Parse errors
853 Verbose parse error messages from the parsers are better looking.
854 Before: parse error: unexpected `'/'', expecting `"number"' or `'-'' or `'(''
855 Now: parse error: unexpected '/', expecting "number" or '-' or '('
856
857* Fixed parser memory leaks.
858 When the generated parser was using malloc to extend its stacks, the
859 previous allocations were not freed.
860
861* Fixed verbose output file.
862 Some newlines were missing.
863 Some conflicts in state descriptions were missing.
864
865* Fixed conflict report.
866 Option -v was needed to get the result.
867
868* %expect
869 Was not used.
870 Mismatches are errors, not warnings.
871
872* Fixed incorrect processing of some invalid input.
873
874* Fixed CPP guards: 9foo.h uses BISON_9FOO_H instead of 9FOO_H.
875
876* Fixed some typos in the documentation.
877
878* %token MY_EOF 0 is supported.
879 Before, MY_EOF was silently renumbered as 257.
880
881* doc/refcard.tex is updated.
882
883* %output, %file-prefix, %name-prefix.
884 New.
885
886* --output
887 New, aliasing `--output-file'.
888\f
76551463 889Changes in version 1.30, 2001-10-26:
342b8b6e 890
fdac0091
PE
891* `--defines' and `--graph' have now an optional argument which is the
892 output file name. `-d' and `-g' do not change; they do not take any
342b8b6e
AD
893 argument.
894
895* `%source_extension' and `%header_extension' are removed, failed
896 experiment.
897
f987e9d2
AD
898* Portability fixes.
899\f
9f4503d6 900Changes in version 1.29, 2001-09-07:
342b8b6e
AD
901
902* The output file does not define const, as this caused problems when used
903 with common autoconfiguration schemes. If you still use ancient compilers
904 that lack const, compile with the equivalent of the C compiler option
905 `-Dconst='. autoconf's AC_C_CONST macro provides one way to do this.
906
907* Added `-g' and `--graph'.
f87a2205 908
f2b5126e
PB
909* The Bison manual is now distributed under the terms of the GNU FDL.
910
f1c63ced 911* The input and the output files has automatically a similar extension.
234a3be3 912
f87a2205
JT
913* Russian translation added.
914
915* NLS support updated; should hopefully be less troublesome.
916
917* Added the old Bison reference card.
c33638bb
AD
918
919* Added `--locations' and `%locations'.
6deb4447 920
cd5bd6ac
AD
921* Added `-S' and `--skeleton'.
922
62ab6972
AD
923* `%raw', `-r', `--raw' is disabled.
924
cd5bd6ac
AD
925* Special characters are escaped when output. This solves the problems
926 of the #line lines with path names including backslashes.
927
6deb4447 928* New directives.
4ecbf796
MA
929 `%yacc', `%fixed_output_files', `%defines', `%no_parser', `%verbose',
930 `%debug', `%source_extension' and `%header_extension'.
f987e9d2
AD
931
932* @$
933 Automatic location tracking.
f87a2205 934\f
9f4503d6 935Changes in version 1.28, 1999-07-06:
d2e00347
JT
936
937* Should compile better now with K&R compilers.
938
939* Added NLS.
940
941* Fixed a problem with escaping the double quote character.
942
943* There is now a FAQ.
944\f
5c31c3c2
JT
945Changes in version 1.27:
946
947* The make rule which prevented bison.simple from being created on
948 some systems has been fixed.
949\f
950Changes in version 1.26:
4be07551
JT
951
952* Bison now uses automake.
953
954* New mailing lists: <bug-bison@gnu.org> and <help-bison@gnu.org>.
955
956* Token numbers now start at 257 as previously documented, not 258.
957
958* Bison honors the TMPDIR environment variable.
959
960* A couple of buffer overruns have been fixed.
f51dbca1
JT
961
962* Problems when closing files should now be reported.
963
964* Generated parsers should now work even on operating systems which do
965 not provide alloca().
4be07551 966\f
9f4503d6 967Changes in version 1.25, 1995-10-16:
df8878c5
RS
968
969* Errors in the input grammar are not fatal; Bison keeps reading
970the grammar file, and reports all the errors found in it.
8c44d3ec 971
df8878c5
RS
972* Tokens can now be specified as multiple-character strings: for
973example, you could use "<=" for a token which looks like <=, instead
974of chosing a name like LESSEQ.
975
976* The %token_table declaration says to write a table of tokens (names
977and numbers) into the parser file. The yylex function can use this
978table to recognize multiple-character string tokens, or for other
979purposes.
980
981* The %no_lines declaration says not to generate any #line preprocessor
982directives in the parser file.
983
984* The %raw declaration says to use internal Bison token numbers, not
985Yacc-compatible token numbers, when token names are defined as macros.
986
987* The --no-parser option produces the parser tables without including
988the parser engine; a project can now use its own parser engine.
989The actions go into a separate file called NAME.act, in the form of
990a switch statement body.
991\f
6780ca7a
DM
992Changes in version 1.23:
993
4d019228
DM
994The user can define YYPARSE_PARAM as the name of an argument to be
995passed into yyparse. The argument should have type void *. It should
996actually point to an object. Grammar actions can access the variable
997by casting it to the proper pointer type.
6780ca7a 998
6780ca7a 999Line numbers in output file corrected.
6780ca7a
DM
1000\f
1001Changes in version 1.22:
1002
1003--help option added.
6780ca7a
DM
1004\f
1005Changes in version 1.20:
1006
1007Output file does not redefine const for C++.
9f4503d6
AD
1008
1009Local Variables:
1010mode: outline
1011End:
76551463
AD
1012
1013-----
1014
d6ca7905 1015Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
ab7f29f8 10162004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
76551463 1017
75eb3bc4 1018This file is part of Bison, the GNU Compiler Compiler.
76551463 1019
f16b0819 1020This program is free software: you can redistribute it and/or modify
76551463 1021it under the terms of the GNU General Public License as published by
f16b0819
PE
1022the Free Software Foundation, either version 3 of the License, or
1023(at your option) any later version.
76551463 1024
f16b0819 1025This program is distributed in the hope that it will be useful,
76551463
AD
1026but WITHOUT ANY WARRANTY; without even the implied warranty of
1027MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1028GNU General Public License for more details.
1029
1030You should have received a copy of the GNU General Public License
f16b0819 1031along with this program. If not, see <http://www.gnu.org/licenses/>.