X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/f57a753663ecb42c6c261a7542e28695b920fb70..d9df47b656fd1757f1f36c8f3d823ca9ca5bfe91:/ChangeLog diff --git a/ChangeLog b/ChangeLog index 8f659f6b..8a126f01 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,929 @@ +2007-10-28 Joel E. Denny + + Deprecate %pure-parser and add `%define api.pure'. Discussed starting + at + . + * NEWS (2.3a+): Mention. + * data/bison.m4 (b4_pure_if): Don't define it here. + * data/c.m4 (b4_identification): Depend on individual skeletons to + define b4_pure_flag, b4_push_flag, or b4_pull_flag if they use the + values of the %define variables api.pure or api.push_pull. Define + YYPURE, YYPUSH, and YYPULL accordingly. + * data/glr.c: Define b4_pure_if based on `%define api.pure' unless + glr.cc has already defined b4_pure_flag. + * data/push.c: Define b4_pure_if based on `%define api.pure'. + Remove YYPUSH and YYPULL since they're back in b4_identification again. + * data/yacc.c Define b4_pure_if based on `%define api.pure'. + * doc/bison.texinfo (Pure Decl): Update. + (Push Decl): Update. + (Decl Summary): Add api.pure to %define entry. + In %pure-parser entry, say it's deprecated and reference %define. + (Pure Calling): Update. + (Error Reporting): Update. + (C++ Scanner Interface): Update. + (How Can I Reset the Parser): Update. + (Table of Symbols): In %pure-parser entry, say it's deprecated and + reference %define. + * src/getargs.c (pure_parser): Remove global variable. + * src/getargs.h (pure_parser): Remove extern. + * src/output.c (prepare): Don't define pure_flag muscle. + * src/parse-gram.y (prologue_declaration): Implement %pure-parser as a + wrapper around `%define api.pure'. + * tests/calc.at (Simple LALR Calculator): Update. + (Simple GLR Calculator): Update. + * tests/cxx-type.at (GLR: Resolve ambiguity, pure, no locations): + Update. + (GLR: Resolve ambiguity, pure, locations): Update. + (GLR: Merge conflicting parses, pure, no locations): Update. + (GLR: Merge conflicting parses, pure, locations): Update. + * tests/glr-regression.at (Uninitialized location when reporting + ambiguity): Update + * tests/input.at (Unused %define api.pure): New test case. + * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Update definition for + AT_PURE_IF and AT_PURE_AND_LOC_IF. + * tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update. + +2007-10-28 Joel E. Denny + + %define push_pull -> %define api.push_pull. Discussed starting at + . + * data/push.c: Expect the new name. + * data/yacc.c: Likewise. + * doc/bison.texinfo (Push Decl): Update. + (Decl Summary): Update %define entry. + (Push Parser Function): Update. + (Pull Parser Function): Update. + (Parser Create Function): Update. + (Parser Delete Function): Update. + * tests/calc.at (Simple LALR Calculator): Update. + * tests/input.at (%define enum variables): Update. + * tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update. + (Push Parsing: Multiple impure instances): Update. + (Push Parsing: Unsupported Skeletons): Update. + * tests/torture.at (Exploding the Stack Size with Alloca): Update. + (Exploding the Stack Size with Malloc): Update. + + * NEWS (2.3a+): Add an entry for the push parser, and clean up the + other entries some. + +2007-10-27 Joel E. Denny + + For the XML output's terminal element, rename @number to @token-number, + and add @symbol-number. In the nonterminal element, rename @number to + @symbol-number. Discussed starting at + . + * data/xslt/xml2text.xsl (xsl:template match="terminal"): Update for + renames. + (xsl:template match="nonterminal"): Likewise. + * data/xslt/xml2xhtml.xsl (xsl:template match="terminal"): Likewise. + (xsl:template match="nonterminal"): Likewise. + * src/print-xml.c (print_grammar): Implement. + +2007-10-21 Joel E. Denny + + * data/xslt/xml2dot.xsl (xsl:template match="automaton/state"): After + 2007-10-11 change, the child elements here are items not rules. + ( + + Add %define lr.keep_unreachable_states. + * NEWS (2.3a+): Mention it in the entry for unreachable state removal. + * doc/bison.texinfo (Decl Summary): Mention it in the %define entry. + * src/main.c (main): Implement it. + * tests/conflicts.at (Unreachable States After Conflict Resolution): + Extend to test it, and fix a typo. + +2007-10-19 Joel E. Denny + + * NEWS (2.3a+): Add entry for recent .output file lookahead set fix. + * doc/bison.texinfo (Understanding): Remove a bogus lookahead set in + the example .output text. + * tests/regression.at (Extra lookahead sets in report): Improve wording + of comments. + +2007-10-17 Wojciech Polak + + * src/print-xml.c (print_grammar): Renamed + and attributes: + "type" to "number" and "symbol" to "name". + * data/xslt/xml2text.xsl (xsl:template match="terminal"): + Use new attribute names. + (xsl:template match="nonterminal"): Likewise. + * data/xslt/xml2xhtml.xsl: Likewise. + +2007-10-17 Joel E. Denny + + * doc/bison.texinfo (Bison Options): Add entry for --print-datadir. + (Option Cross Key): Likewise. + + * src/print-xml.c (print_core): Don't print a reduction's lookahead set + next to an item whose dot is not at the end of the RHS even if it + happens to be associated with the same rule. + * src/print.c (print_core): Likewise. + * tests/conflicts.at (Unresolved SR Conflicts): Update output. + (Resolved SR Conflicts): Update output. + * tests/regression.at (Extra lookahead sets in report): New test case. + +2007-10-11 Wojciech Polak + + * src/print-xml.c (print_core): Remove item set + redundancy. + * data/xslt/bison.xsl (bison:ruleNumber): New key. + Improve processing time. Suggested by Joel E. Denny. + * data/xslt/xml2dot.xsl (xsl:template name="escape"): + Write xsl:param "required" attribute as comment. + * data/xslt/xml2text.xsl (xsl:template match="item"): New. + (xsl:template match="rule"): Support new reduced itemset. + (xsl:template match="point"): Remove. + * data/xslt/xml2xhtml.xsl: Likewise. + +2007-10-09 Joel E. Denny + + * src/getargs.c (version): Update copyright year. + +2007-10-09 Joel E. Denny + + Make xml2dot.xsl and --graph produce the same output. + * data/xslt/xml2dot.xsl (xsl:template match="rule"): Use a ` ' + instead of a `\n'. That is, don't add escapes yet or they'll be doubly + escaped later. + (xsl:template name="output-node"): Use the new escape template instead + of the string-replace template directly. + (xsl:template name="output-edge"): Likewise. + (xsl:template name="escape"): New, escapes backslashes and newlines in + addition to quotation marks. + * src/graphviz.c (start_graph, output_node, output_edge): Add + whitespace to output for legibility. + + Make xml2text.xsl and --report produce the same output, and remove the + XML "conflicts" element since a conflict summary is easily extracted + from the automaton. + * data/xslt/bison.xsl: New. + (xsl:template match="state" mode="bison:count-conflicts): New. + * data/xslt/xml2text.xsl: Import bison.xsl. + (xsl:template match="bison-xml-report"): Instead of styling the + "conflicts" element, style the "automaton" element with mode + "conflicts". Unlike the former, the latter lists S/R and R/R + conflicts for a state on the same line. + (xsl:template match="conflicts"): Remove. + (xsl:template match="conflict"): Remove. + (xsl:template match="terminal"): Line-wrap the list of rules in which + the terminal is used. + (xsl:template match="nonterminal"): Likewise for nonterminals. + (xsl:template match="automaton" mode="conflicts"): New. + (xsl:template match="state" mode="conflicts"): New. + (xsl:template name="line-wrap"): New. + (xsl:template name="ws-search"): New. + * data/xslt/xml2xhtml.xsl: Import bison.xsl. + (xsl:template match="bison-xml-report"): Instead of styling the + "conflicts" element, style the "automaton" element with mode + "conflicts." + (xsl:template match="conflicts"): Remove. + (xsl:template match="conflict"): Remove. + (xsl:template match="automaton" mode="conflicts"): New. + (xsl:template match="state" mode="conflicts): New. + * src/conflicts.c (conflicts_output_xml): Remove. + * src/conflicts.h (conflicts_output_xml): Remove prototype. + * src/print-xml.c (print_xml): Don't invoke conflicts_output_xml. + * src/print.c (print_grammar): Consistently wrap at the 66th column so + the corresponding XSLT is easier. Also, never wrap between a word and + the comma that follows it. + +2007-10-08 Joel E. Denny + + Improve C++ namespace support. Discussed starting at + . + * data/c++.m4: (b4_namespace_ref, b4_namespace_open, + b4_namespace_close): New macros that interpret the %define variable + "namespace" so its value can contain "::" to indicate nested + namespaces. + * data/glr.cc (b4_namespace): Don't define, and replace all uses with + the above macros. + * data/lalr1.cc (b4_namespace): Likewise. + * data/location.cc (b4_namespace): Likewise. + * doc/bison.texinfo (Decl Summary): Move `%define push_pull' entry + inside a new table in the general %define entry. Document `%define + namespace' there as well. Point the %name-prefix entry to it since it + explains it more completely in the case of C++. + (C++ Bison Interface): Mention `%define namespace' instead of + %name-prefix. + (Table of Symbols): Remove the `%define push_pull' entry. The %define + entry suffices. + * tests/c++.at (Relative namespace references): New test case. + (Absolute namespace references): New test case. + (Syntactically invalid namespace references): New test case. + * tests/input.at (C++ namespace reference errors): New test case. + +2007-10-08 Joel E. Denny + + Add syncline support and location accessor to internal %define + interfaces. + * data/bison.m4 (b4_percent_define_get_loc): New. + (b4_percent_define_get_syncline): New. + (b4_percent_define_flag_if): Use b4_percent_define_get_loc. + (b4_percent_define_default): Record defining location as line 1 rather + than 0 for the sake of synchronizing #line's, and define + b4_percent_define_syncline(VARIABLE). + (b4_percent_define_check_values): Use b4_percent_define_get_loc. + * src/muscle_tab.c (muscle_syncline_grow): New. + (muscle_code_grow): Use muscle_syncline_grow. + (muscle_percent_define_insert): Use muscle_percent_define_get_loc, and + define b4_percent_define_syncline(VARIABLE). + (muscle_percent_define_get_loc): New. + (muscle_percent_define_get_syncline): New. + (muscle_percent_define_flag_if): Use muscle_percent_define_get_loc, and + remove some unused variables. + (muscle_percent_define_default): Record defining location as line 1 + rather than 0 for the sake of synchronizing #line's, and define + b4_percent_define_syncline(VARIABLE). + (muscle_percent_define_check_values): Use + muscle_percent_define_get_loc. + * src/muscle_tab.h (muscle_percent_define_get_loc): Prototype. + (muscle_percent_define_get_syncline): Prototype. + * tests/skeletons.at (%define Boolean variables: invalid skeleton + defaults): Update output for location change. + (Complaining during macro argument expansion): Extend to test + b4_percent_define_get_loc and b4_percent_define_get_syncline errors. + +2007-10-07 Joel E. Denny + + Fix some error-reporting macro bugs. + * data/bison.m4 (b4_cat): New. + (b4_error, b4_error_at): Use b4_cat to send error directives directly + to stdout so they don't become arguments to other macros. Update + comments and add examples. + (b4_warn, b4_warn_at, b4_complain, b4_complain_at): Update comments and + add examples. + (b4_fatal, b4_fatal_at): Likewise, and invoke m4_exit(1) immediately + after printing the error directive so that M4 doesn't report subsequent + problems that are induced by this problem. + * src/scan-skel.l: Recognize @` digraph outside of directive arguments + instead of just in them. Recognize @\n in both places. Both expand to + the empty string. Needed by b4_cat. + * tests/skeletons.at (Complaining during macro argument expansion): + New test case. + (Fatal errors make M4 exit immediately): New test case. + +2007-10-04 Joel E. Denny + + Implement --print-datadir. + * src/getargs.c (usage): Mention. + (PRINT_DATADIR_OPTION): New anonymous enum member. + (long_options): Add entry for it. + (getargs): Add case for it calling compute_pkgdatadir. + * src/output.c (output_skeleton): Encapsulate data directory + computation from here... + (prepare): ... and from here... + (compute_pkgdatadir): ... into this new function. + * src/output.h (compute_pkgdatadir): Prototype. + +2007-09-29 Joel E. Denny + + * src/print-xml.c (escape_bufs): New static global variable + replacing... + (xml_escape_n): ... the static local variable buf here. + (print_xml): Free memory for escape_bufs. + * src/reduce.c (reduce_xml): XML-escape terminal symbol tags. + +2007-09-25 Joel E. Denny + + Replace `%push-parser' and `%push-pull-parser' with + `%define push_pull "push"' and `%define push_pull "both"'. + `%define push_pull "pull"' is the default. + * doc/bison.texinfo (Push Decl, Push Parser Function, + Pull Parser Function, Parser Create Function, Parser Delete Function): + Update declarations. + (Decl Summary, Table of Symbols): Replace %push-parser and + %push-pull-parser entries with a %define push_pull entry. + * data/bison.m4 (b4_percent_define_check_values): New macro. + (b4_pull_if, b4_push_if, b4_use_push_for_pull_if): Move these + definitions... + * data/c.m4 (b4_identification): ... and the YYPUSH and YYPULL cpp + definitions... + * data/push.c: ... to here and compute them from the value of the + %define variable push_pull. + * data/c-skel.m4: Instead of choosing the push.c skeleton for push + parsing requests here... + * data/yacc.c: ... hack this to switch to push.c any time + b4_use_push_pull_flag or the %define variable push_pull is set. This + will go away when we mv push.c yacc.c. + * data/c++-skel.m4, data/glr.c, data/java-skel.m4: Don't report that + push parsing is not supported since unused %define variables are + reported anyway. + * src/getargs.c, src/getargs.h (pull_parser, push_parser): Remove. + * src/muscle_tab.h (muscle_percent_define_check_values): Update + comments for consistency with b4_percent_define_check_values. + * src/output.c (prepare): Don't insert b4_pull_flag and b4_push_flag + muscles. + * src/parse-gram.y (PERCENT_PUSH_PARSER, PERCENT_PUSH_PULL_PARSER): + Remove. + (prologue_declaration): Remove %push-parser and %push-pull-parser + rules. + * src/scan-gram.l (%push-parser, %push-pull-parser): Remove rules. + * tests/calc.at: Update declarations. + * tests/input.at (%define enum variables): New test case. + * tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update + declaration. + (Push Parsing: Multiple impure instances): Update declaration. + (Push Parsing: Unsupported Skeletons): New test case. + * tests/torture.at (Exploding the Stack Size with Alloca): Update + declaration. + (Exploding the Stack Size with Malloc): Update declaration. + +2007-09-24 Wojciech Polak + + Add XSLT transformations. + + * data/xslt/xml2dot.xsl: Transform XML into DOT. + * data/xslt/xml2text.xsl: Transform XML into plain text. + * data/xslt/xml2xhtml.xsl: Transform XML into XHTML. + * data/Makefile.am (xsltdir): New variable. + (dist_xslt_DATA): Add xslt/*.xsl files. + +2007-09-23 Paul Eggert + + * src/conflicts.c (log_resolution): Fix indenting bugs I introduced. + Problem reported by Wojciech Polak. + * src/print-xml.c (xml_puts): Work even if LEVEL exceeds INT_MAX/2. + (xml_printf): Undo change I made on 21 September; that is, + indent 2 spaces, not 1. + +2007-09-23 Joel E. Denny + + Pacify ./configure --enable-gcc-warnings. + * src/print-xml.c, src/print-xml.h (xml_puts): Make third argument + `char const *' instead of `char *'. + * src/state.c (state_rule_lookahead_tokens_print_xml): Remove unused + local variable `sep'. + +2007-09-21 Paul Eggert + + * src/gram.c (rule_rhs_print_xml): Now static, since it isn't used + elsewhere. + * src/print-xml.c: Prefer "const" after types; that's more consistent. + (xml_printf): Indent just 1 space for level. + (e_char, xlate_char): Remove. + (xml_escape_string): Rewrite to avoid undefined behavior (used + storage that was freed from the stack). + (xml_escape_n): Don't bother checking for subscript error. + +2007-09-21 Wojciech Polak + + Add Bison XML Automaton Report. + + Add support for an -x option to generate an XML report. + It is not documented yet. + * src/print-xml.c: New file. + * src/print-xml.h: Likewise. + * lib/timevar.def (TV_XML): New var. + * src/Makefile.am (bison_SOURCES): Add print-xml.c, print-xml.h. + * src/conflicts.c: Include print-xml.h. + (solved_conflicts_xml_obstack): New var. + (log_resolution, conflicts_solve, conflicts_free): + Add support for XML report. + (conflicts_output_val): New function. + * src/conflicts.h (conflicts_output_val): New decl. + * src/files.c (spec_xml_file): New var. + (compute_output_file_names, output_file_names_free): Add XML support. + * src/files.h (spec_xml_file): New decl. + * src/getargs.c (xml_flag): New var. + (usage, short_options, long_options, getargs): Add XML support. + * src/getargs.h (xml_flag): New decl. + * src/gram.c: Include print-xml.h. + (rule_lhs_print_xml, rule_rhs_print_xml): + (grammar_rules_partial_print_xml, grammar_rules_print_xml): + New functions. + * src/gram.h: Declare external ones. + * src/main.c: Include print-xml.h. + (main): Add XML support. + * src/reduce.c: Include print-xml.h. + (reduce_xml): New function. + * src/reduce.h: Declare it. + * src/state.c: Include print-xml.h. + (state_new): Add XML support. + (state_rule_lookahead_tokens_print_xml): New function. + * src/state.h: Declare it. + (struct state): New member solved_conflicts_xml. + * src/symtab.c (symbol_class_get_string): New function. + * src/symtab.h: Declare it. + +2007-09-21 Paul Eggert + + * GNUmakefile: Switch to coreutils's version. + * bootstrap: Likewise. + * Makefile.cfg: Adjust to new GNUmakefile. + * README-hacking: Likewise. + + Import from gnulib: + + 2006-08-18 Paul Eggert + Bruno Haible + + * m4/bison-i18n.m4 (BISON_I18N): Also handle the case where yacc exists + and is a script that invokes bison. Tighten the code. Add comments. + +2007-08-28 Joel E. Denny + + Spell "boolean" as "Boolean". Reported by Akim Demaille. + * data/bison.m4 (b4_percent_define_flag_if): Fix complaint. + * doc/bison.texinfo (Decl Summary): Fix. + * src/muscle_tab.c (muscle_percent_define_flag_if): Fix complaint. + * tests/input.at (Boolean %define variables): Update output. + * tests/skeletons.at (%define boolean variables: invalid skeleton + defaults): Rename to... + (%define Boolean variables: invalid skeleton defaults): ... this and + update output. + +2007-08-17 Joel E. Denny + + In impure push mode, don't allow more than one yypstate to be allocated + since multiple impure parsers would corrupt yynerrs. + * data/push.c (yypstate_allocated): New static global variable + initialized to 0. + (yypull_parse): If yypstate_new returns 0, don't report it as memory + exhaustion if yypstate_allocated is 1, but still return 2. + (yypstate_new): Invoke yyerror and return 0 if yypstate_allocated is + already 1. Otherwise, set it to 1. + (yypstate_delete): Set it to 0. + * tests/push.at (Push Parsing: Multiple impure instances): New test + case. + +2007-08-17 Bob Rossi + + * doc/bison.texinfo (Push Decl): Document the push parser. + (Table of Symbols): Ditto. + (Pure Decl): Ditto. + (Decl Summary): Ditto. + (Multiple Parsers, Push Parser Function, Pull Parser Function, + Parser Create Function, Parser Delete Function): + Add new push parser symbols. + (Table of Symbols): Document push-parser, push-pull-parser, + yypush_parse, yypull_parse, yypstate_new and yypstate_delete. + +2007-08-15 Paul Eggert + + Update to GPLv3. + * doc/gpl-3.0.texi: New file. + * doc/gpl.texi: Remove. + * COPYING, GNUmakefile, HACKING, Makefile.am, Makefile.cfg: + * Makefile.maint, NEWS, PACKAGING, README, README-alpha: + * README-hacking, TODO, bootstrap, bootstrap.conf: + * configure.ac, data/Makefile.am, data/README, data/bison.m4: + * data/c++-skel.m4, data/c++.m4, data/c-skel.m4, data/c.m4: + * data/glr.c, data/glr.cc, data/java-skel.m4, data/java.m4: + * data/lalr1.cc, data/lalr1.java, data/location.cc: + * data/push.c, data/yacc.c, data/m4sugar/m4sugar.m4: + * djgpp/Makefile.maint, djgpp/README.in, djgpp/config.bat: + * djgpp/config.sed, djgpp/config.site, djgpp/config_h.sed: + * djgpp/djunpack.bat, djgpp/subpipe.c, djgpp/subpipe.h: + * djgpp/testsuite.sed, doc/Makefile.am, doc/bison.texinfo: + * doc/fdl.texi, doc/refcard.tex, etc/Makefile.am, etc/README: + * etc/bench.pl.in, examples/Makefile.am, examples/extexi: + * examples/calc++/Makefile.am, lib/Makefile.am, lib/abitset.c: + * lib/abitset.h, lib/bbitset.h, lib/bitset.c, lib/bitset.h: + * lib/bitset_stats.c, lib/bitset_stats.h, lib/bitsetv-print.c: + * lib/bitsetv-print.h, lib/bitsetv.c, lib/bitsetv.h: + * lib/ebitset.c, lib/ebitset.h, lib/get-errno.c: + * lib/get-errno.h, lib/lbitset.c, lib/lbitset.h: + * lib/libiberty.h, lib/main.c, lib/subpipe.c, lib/subpipe.h: + * lib/timevar.c, lib/timevar.def, lib/timevar.h: + * lib/vbitset.c, lib/vbitset.h, lib/yyerror.c: + * m4/c-working.m4, m4/cxx.m4, m4/m4.m4, m4/subpipe.m4: + * m4/timevar.m4, src/LR0.c, src/LR0.h, src/Makefile.am: + * src/assoc.c, src/assoc.h, src/closure.c, src/closure.h: + * src/complain.c, src/complain.h, src/conflicts.c: + * src/conflicts.h, src/derives.c, src/derives.h, src/files.c: + * src/files.h, src/flex-scanner.h, src/getargs.c: + * src/getargs.h, src/gram.c, src/gram.h, src/graphviz.c: + * src/lalr.c, src/lalr.h, src/location.c, src/location.h: + * src/main.c, src/muscle_tab.c, src/muscle_tab.h: + * src/nullable.c, src/nullable.h, src/output.c, src/output.h: + * src/parse-gram.c, src/parse-gram.h, src/parse-gram.y: + * src/print.c, src/print.h, src/print_graph.c: + * src/print_graph.h, src/reader.c, src/reader.h, src/reduce.c: + * src/reduce.h, src/relation.c, src/relation.h: + * src/revision.h, src/scan-code.h, src/scan-code.l: + * src/scan-gram.h, src/scan-gram.l, src/scan-skel.h: + * src/scan-skel.l, src/state.c, src/state.h, src/symlist.c: + * src/symlist.h, src/symtab.c, src/symtab.h, src/system.h: + * src/tables.c, src/tables.h, src/uniqstr.c, src/uniqstr.h: + * tests/Makefile.am, tests/actions.at, tests/c++.at: + * tests/calc.at, tests/conflicts.at, tests/cxx-type.at: + * tests/existing.at, tests/glr-regression.at: + * tests/headers.at, tests/input.at, tests/java.at: + * tests/local.at, tests/output.at, tests/push.at: + * tests/reduce.at, tests/regression.at, tests/sets.at: + * tests/skeletons.at, tests/synclines.at, tests/testsuite.at: + * tests/torture.at: + Update to GPLv3. + +2007-08-11 Joel E. Denny + + Get rid of broken %no-parser, -n, and --no-parser implementation and + documentation. + * TODO: Don't mention them. + * doc/bison.1: Likewise. + * doc/bison.texinfo (Decl Summary): Likewise. + (Bison Options): Likewise. + (Option Cross Key): Likewise. + * src/getargs.c (no_parser_flag): Remove global variable. + (usage): Don't print description of -n and --no-parser. + (long_options): Remove --no-parser entry here. + (getargs): Remove -n case in the switch here. + * src/getargs.h (no_parser_flag): Remove extern. + * tests/regression.at (Web2c Actions): Remove comment that mentions + --no-parser. + +2007-08-11 Joel E. Denny + + * tests/push.at (Push Parsing: Memory Leak for Early Deletion): Do not + name user variables starting with `yy'. Just pass NULL instead of a + dummy local &yylval to yypush_parse. + * tests/torture.at (AT_DATA_STACK_TORTURE): Do not name user variables + starting with `yy'. + +2007-08-03 Joel E. Denny + + * data/yacc.c (yyexhaustedlab): Define it when YYERROR_VERBOSE is + true since it's then always used regardless of whether yyoverflow is + defined. Reported by Christian Burger at + . + * THANKS: Add Christian Burger. + + * ChangeLog: For changes in doc/bison.texinfo, consistently reference + node names: say "Decl Summary" not "Bison Declaration Summary". + +2007-07-28 Joel E. Denny + + * src/muscle_tab.c (muscle_percent_define_flag_if): In order to + determine whether this function has already complained about an invalid + value for a %define boolean variable, don't check whether Bison has + ever examined the value. As written, the check was a tautology. + Instead, record and check for this complaint using a separate muscle. + +2007-07-27 Joel E. Denny + + Fix push parsing memory leak reported by Brandon Lucia at + . + * THANKS: Add Brandon Lucia. + * data/push.c (yypstate_delete): Free the stack if it was reallocated + but the parse never completed and thus freed it. + * tests/Makefile.am (TESTSUITE_AT): Add push.at. + * tests/testsuite.at: Include push.at. + * test/push.at: New. + (Push Parsing: Memory Leak for Early Deletion): New test case. + +2007-07-17 Joel E. Denny + + Improve handling of multiple S/R conflicts in the same state and of S/R + conflicts involving multiple reductions. + * src/conflicts.c (resolve_sr_conflict): Don't assign the error action + set for a state here or Bison will abort if it is reassigned on a + later conflicted reduction in the same state. + Similarly, don't finalize and assign the solved conflicts report here + or it will be lost if it is reassigned on a later conflicted reduction + in the same state. + (set_conflicts): Instead, assign them both here after all S/R conflicts + in the state have been fully examined. + * src/print.c (shift_set): Rename to... + (no_reduce_set): ... this. + (print_reductions): Update for rename, and add %nonassoc error action + tokens to no_reduce_set so that, when printing the first remaining + reduction on an error action token, the reduction is enclosed in + brackets. + (print_results): Update for rename. + * tests/conflicts.at (Solved conflicts report for multiple reductions + in a state): New test case. + (%nonassoc error actions for multiple reductions in a state): New test + case. + + * src/main.c (main): Don't depend on C99 features. + +2007-07-16 Joel E. Denny + + * build-aux/.cvsignore: Add compile. + * lib/.cvsignore: Add charset.alias, ref-add.sed, ref-del.sed, and + uniwidth. + +2007-07-10 Joel E. Denny + + * bootstrap (slurp): Create target directories that don't exist. + Specifically, we need lib/uniwidth/ because of recent Gnulib changes. + +2007-07-09 Joel E. Denny + + * LR0.c (new_itemsets): Fix wording in comments: say item index rather + than item number. + * closure.c (closure): Likewise. + * state.h (reductions): Comment sorting of rules. + (state): Comment sorting of items. + +2007-07-02 Joel E. Denny + + Fix C++ test cases after recent Gnulib changes. Discussed starting at + . + * examples/calc++/Makefile.am (DEFAULT_INCLUDES): Override Automake's + definition in order to avoid Gnulib headers since we don't use config.h + here. + * tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Use AT_DATA_GRAMMAR + rather than AT_DATA so that config.h is included. + +2007-07-01 Joel E. Denny + + * data/glr.c (yy_yypstack, yypstates, yypdumpstack): Use YYFPRINTF + instead of fprintf. Guard these functions with #if YYDEBUG instead of + #ifdef YYDEBUG for consistency with all other uses of YYDEBUG in Bison + and so that YYFPRINTF is guaranteed to be defined here. + +2007-05-29 Joel E. Denny + + * src/muscle_tab.c (muscle_percent_define_invalid_value): Replace + with... + (muscle_percent_define_check_values): ... this more helpful function. + Again, it's not used yet, but it will be. + * src/muscle_tab.h: Likewise. + + Improve some comments in parser table construction. + * src/LR0.c (new_itemsets): Explain sorting of itemset and kernel_base. + (generate_states): Don't mention ruleset, which is internal to closure. + * src/closure.c (closure): Explain sorting of core and itemset, which + is required for this function to behave correctly. + * src/closure.h (closure): Mention sorting. + +2007-05-28 Joel E. Denny + + * src/lalr.c (state_lookahead_tokens_count): For code readability, + move the check for disabled transitions to an aver since conflict + resolution hasn't happened yet. + + * src/lalr.c (state_lookahead_tokens_count): Remove the check that + labels a state as inconsistent just because it has error transitions. + The original form of this check appeared in revision 1.1 of lalr.c, + which was committed on 1991-12-21. Now (at least), changing the + consistency label on such a state appears to have no useful effect in + any of the places it is examined, which I enumerate below. The key + point to understanding each item in this enumeration is that a state + with an error transition is labelled consistent in the first place only + if it has no rules, so the check cannot matter for states that have + rules. (1) Labelling a state as inconsistent will cause set_conflicts + to try to identify its conflicts, and a state must have *rules* to have + conflicts. (2) Labelling a state as inconsistent will affect how + action_row sets the default *rule* for the state. (3) Labelling a + state as inconsistent will cause build_relations to add lookback edges + to *rules* in that state. + * src/state.h (struct state): Word the comment for member consistent + more carefully. + +2007-05-27 Joel E. Denny + + Don't depend on C99 features. + * src/conflicts.c (conflicts_update_state_numbers): Fix for-loop. + * src/lalr.c (lalr_update_state_numbers): Fix for-loop. + * src/reader.c (check_and_convert_grammar): Fix for-loop. + * src/state.c (state_mark_reachable_states): Fix for-loop. + (state_remove_unreachable_states): Fix for-loop. + + Don't widen struct state with member reachable just to temporarily + record reachability. Instead, use a local bitset. + * src/state.h (struct state): Remove member. + * src/state.c (state_new): Don't initialize it. + (state_mark_reachable_states): Rename to... + (state_record_reachable_states): ... this, and use bitset. + (state_remove_unreachable_states): Use bitset. + +2007-05-26 Joel E. Denny + + * src/Makefile.am (yacc): Quote target action commands properly so + that the yacc script isn't corrupt. Reported by Hans Aberg at + . + + * data/glr.c (yylval): As in yacc.c, don't extern in the header for + the case of pure parsers. Reported by Frans Englich at + . + * THANKS: Add Frans Englich. + + * NEWS (2.3a+): In the %code entry, reference section `Bison + Declaration Summary' from the manual now since the %code summary has + moved there. + * doc/bison.texinfo (Prologue Alternatives): Mention that directives + in the rules section must be terminated by semicolons. + +2007-05-20 Joel E. Denny + + Extend the front-end API for %define variables to more completely + mirror the back-end. This will be useful in the future. + * data/bison.m4 (b4_percent_define_get, b4_percent_define_ifdef): + Update comments to mention the new front-end counterparts of these + macros. + * src/muscle_tab.c (MUSCLE_COMMON_DECODE): New macro with common code + for muscle_string_decode and muscle_location_decode. + (muscle_string_decode): New static function. + (muscle_location_decode): Use MUSCLE_COMMON_DECODE. + (muscle_percent_define_get, muscle_percent_define_ifdef): New + functions. + (muscle_percent_define_flag_if): Use muscle_percent_define_ifdef and + muscle_percent_define_get to mimic the b4_percent_define_flag_if + implementation more closely. + (muscle_percent_define_invalid_value): New function. + * src/muscle_tab.h (muscle_percent_define_get, + muscle_percent_define_ifdef, muscle_percent_define_invalid_value): + Prototype. + +2007-05-07 Joel E. Denny + + * NEWS (2.3a+): Mention yesterday's state-removal change. + (2.3a): Remove the %language entry, which was added after 2.3a. + * src/LR0.c, src/closure.c, src/closure.h, src/conflicts.c, + src/conflicts.h, src/lalr.c, src/lalr.h, src/print.c, + src/print_graph.c, src/state.c, src/state.h, tests/conflicts.at, + tests/existing.at: Update copyright date. + +2007-05-06 Joel E. Denny + + If conflict resolution makes states unreachable, remove those states, + report rules that are then unused, and don't report conflicts in those + states. + * src/conflicts.c, src/conflicts.h (conflicts_update_state_numbers): + New global function. + * src/lalr.c, src/lalr.h (lalr_update_state_numbers): New global + function. + * src/main.c (main): After conflict resolution, remove the unreachable + states and update all data structures that reference states by number. + * src/state.c (state_new): Initialize each state's reachable member to + false. + (state_mark_reachable_states): New static function. + (state_remove_unreachable_states): New global function. + * src/state.h (struct state): Add member bool reachable. + (state_remove_unreachable_states): Prototype. + * tests/conflicts.at (Unreachable States After Conflict Resolution): + New test case. + * tests/existing.at (GNU pic Grammar): Update test case output now that + an unused rule is discovered. + +2007-05-06 Joel E. Denny + + Minor code cleanup in parser table construction. + * src/LR0.c (new_itemsets): Use item_number_is_symbol_number. + (new_itemsets, save_reductions): Update for rename to nitemset. + * src/closure.c (nritemset): Rename to... + (nitemset): ... this since the "r" appears to meaningless and isn't + used in the comments. + (closure): Update for rename. + * src/closure.h (nritemset): Update extern to... + (nitemset): ... this. + * src/lalr.c (LA): Fix a typo in comments. + * src/print.c (print_core): Update for rename to nitemset. + * src/print_graph.c (print_graph): Likewise. + * src/state.h: Fix some typos in header comments. + +2007-04-04 Paul Eggert + + * THANKS: Use ASCII for Sebastien Fricker's name. Bison source + still sticks to ASCII. Sorry! + + * README-hacking: New file, taken mostly from coreutils, with changes + for Bison. Contains much of the contents of: + * README-cvs: Remove. + * bootstrap: Sync from gnulib. + * build-aux/.cvsignore: Remove *.t, mkinstalldirs. + * lib/.cvsignore: Add wchar.h, wctype.h. Remove exit.h. + +2007-03-10 Joel E. Denny + + * doc/bison.texinfo (Destructor Decl): Fix typo reported by Sebastian + Setzer. + (Java Differences): Fix some typos. + * THANKS: Add Sebastian Setzer. + +2007-03-07 Paolo Bonzini + + * data/java.m4 (b4_single_class_if): Remove. + (b4_abstract_if): Look at "%define abstract". + (b4_lexer_if): New. + (b4_union_name): Rename... + (b4_yystype): ... to this. Map to "%define stype". + (b4_rhs_value, b4_parse_param_decl, b4_lex_param_decl, + b4_maybe_throws): Fix quoting. + (b4_lex_param_call): Move below to keep b4_*_param_decl close. + * data/lalr1.java (Lexer interface): Always define. + (Lexer interface within parser class): Remove. + (YYLexer class): New, used when "%code lexer" is present. + (constructor): When "%code lexer" is used, pass %lex-param + to the lexer constructor. + (yylex, yyparse): Remove %lex-param from method invocations + (YYStack, yyaction, yyparse): Rename b4_union_name to b4_yystype. + + * doc/bison.texinfo (Java Bison Interface): Mention "%define + abstract". Rename "%define union_name" to "%define stype". + Rename method names according to previous patch. + (Java Scanner Interface): Describe "%code lexer" instead of + "%pure-parser" and "%define single_class". + (Java Differences): Mention "%code lexer". + + * tests/java.at (_AT_DATA_JAVA_CALC_Y): Remove final argument. + Include scanner here, using macros from tests/local.at. + (AT_DATA_CALC_Y): Remove final argument. + (_AT_CHECK_JAVA_CALC): Likewise. + (AT_CHECK_JAVA_CALC): Likewise. Test all four combinations + of %locations and %error-verbose. + (main): Test with and without %lex-param. + * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Push AT_LEXPARAM_IF. + (AT_BISON_OPTION_POPDEFS): Pop it. + +2007-03-07 Juan Manuel Guerrero + + DJGPP spefic issue. Inhibit the use of disallowed characters for + file name genertion on Win98, WinXP, etc. These are |<>":?*\ + and concern testsuite case 46. + * Makefile.am: djgpp/testsuite.sed added to EXTRA_DIST + * djgpp/testsuite.sed: Inhibit the use of disallowed characters. + * djgpp/config.bat: Inhibit the use of disallowed characters. + +2007-03-02 Joel E. Denny + + Miscellaneous %define and %code cleanup. + * data/bison.m4 (b4_percent_define_flag_if): Correct comments on how + values are interpreted. + * doc/bison.texinfo (Decl Summary): Clean up and extend %define + documentation a little more. + * src/muscle_tab.c (MUSCLE_USER_NAME_CONVERT, + muscle_percent_define_insert, muscle_percent_code_grow): New + functions/macros. + * src/muscle_tab.h (muscle_percent_define_insert, + muscle_percent_code_grow): Prototype. + * src/parse-gram.y (prologue_declaration): Use + muscle_percent_define_insert and muscle_percent_code_grow when parsing + %define and %code directives. + + Make it easy to share %define boolean variables between the front-end + and back-end. Though not used yet, this will be useful in the future. + * data/bison.m4 (b4_check_user_names): Rewrite comments to talk about + Bison uses of names rather than just skeleton uses of names. + (b4_percent_define_get, b4_percent_define_ifdef): Rename + b4_percent_define_skeleton_variables(VARIABLE) to + b4_percent_define_bison_variables(VARIABLE). + (b4_percent_code_get, b4_percent_code_ifdef): Rename + b4_percent_code_skeleton_qualifiers(QUALIFIER) to + b4_percent_code_bison_qualifiers(QUALIFIER). + (b4_check_user_names_wrap): Update for renames. + * src/muscle_tab.c, src/muscle_tab.h (muscle_percent_define_flag_if, + muscle_percent_define_default): New functions mimicking + b4_percent_define_flag_if and b4_percent_define_default. + + For %define variables, report locations for invalid values and + redefinitions. + * data/bison.m4 (b4_percent_define_flag_if): Read + b4_percent_define_loc(VARIABLE) to report the location of an invalid + value for VARIABLE. + (b4_percent_define_default): Save a special location in + b4_percent_define_loc(VARIABLE) in case the default value for VARIABLE + must later be reported as invalid. + * src/muscle_tab.c (muscle_location_grow, muscle_location_decode): New + functions. + (muscle_percent_define_insert): Record the location of VARIABLE in + muscle percent_define_loc(VARIABLE), and use it to report the previous + location for a redefinition. + (muscle_percent_define_flag_if): Update like b4_percent_define_flag_if. + (muscle_percent_define_default): Update like b4_percent_define_default. + (muscle_grow_user_name_list): Rename to... + (muscle_user_name_list_grow): ... this for consistency and use + muscle_location_grow. + * src/muscle_tab.h (muscle_location_grow): Prototype. + * tests/input.at (%define errors): Update expected output. + * tests/skeletons.at (%define boolean variables: invalid skeleton + defaults): New test case. + +2007-02-28 Joel E. Denny + + * src/print.c (lookahead_set, state_default_rule): Remove. + (print_reductions): Replace state_default_rule invocation with + equivalent use of yydefact, which was computed in token_actions in + tables.c. + (print_results): Don't allocate lookahead_set. + +2007-02-27 Paolo Bonzini + + * data/lalr1.java: Prefix all private members with yy. + 2007-02-24 Joel E. Denny Use YYFPRINTF instead of fprintf where appropriate. Reported by - Sébastien Fricker at + Sebastien Fricker at . - * THANKS: Add Sébastien Fricker. + * THANKS: Add Sebastien Fricker. * data/glr.c, data/push.c, data/yacc.c (yy_reduce_print): Implement. * doc/bison.texinfo (Tracing): Make it clearer that YYFPRINTF must accept a variable number of arguments. @@ -377,8 +1297,8 @@ * NEWS (2.3a+): Add entry for the change to %define. Update entry for %code. * doc/bison.texinfo (Prologue Alternatives): Update. - (Bison Declaration Summary): In %defines entry, update mention of - `%code requires' and `%code provides'. + (Decl Summary): In %defines entry, update mention of `%code requires' + and `%code provides'. (C++ Location Values): Update %define uses. (Calc++ Parser Interface): Likewise. (Calc++ Parser): Likewise, and update `%code requires' uses. @@ -2655,7 +3575,7 @@ * doc/bison.texinfo (The prologue): Update names, and replace remaining prologue blocks with %*-header declarations. (Calc++ Parser): Likewise. - (Bison Declaration Summary): Update names. + (Decl Summary): Update names. (Table of Symbols): Update description. * src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to... (PERCENT_END_HEADER): ... this. @@ -2732,9 +3652,8 @@ header and code file. * doc/bison.texinfo (Prologue): Show use of %before-definitions instead of prologues for %union dependencies. - (Bison Declaration Summary): In %defines description, mention the - effect of %before-definitions and %after-definitions on the header - file. + (Decl Summary): In %defines description, mention the effect of + %before-definitions and %after-definitions on the header file. (Calc++ Parser): Forward declare driver in a %before-definitions rather than in the pre-prologue so that make check succeeds. (Table of Symbols): Add entries for %before-definitions and