]> git.saurik.com Git - bison.git/log
bison.git
16 years ago* data/yacc.c (yyparse): Correct the comment when locations aren't used.
Paul Eggert [Thu, 10 Jan 2008 00:58:14 +0000 (00:58 +0000)] 
* data/yacc.c (yyparse): Correct the comment when locations aren't used.

Problem reported by Claudio Saavedra in
<http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00003.html>.

16 years ago2008-01-05 Wojciech Polak <polak@gnu.org>
Wojciech Polak [Sat, 5 Jan 2008 22:29:56 +0000 (22:29 +0000)] 
2008-01-05  Wojciech Polak  <polak@gnu.org>

        * data/xslt/xml2xhtml.xsl (xsl:template match="/"): Precede an XHTML
        document's title with the input grammar file name.

16 years agodata/xslt/xml2xhtml.xsl (xsl:template match="/"): Precede an XHTML
Wojciech Polak [Sat, 5 Jan 2008 22:28:44 +0000 (22:28 +0000)] 
data/xslt/xml2xhtml.xsl (xsl:template match="/"): Precede an XHTML
document's title with the input grammar file name.

16 years ago* src/parse-gram.c: Make timestamp later than parse-gram.y.
Joel E. Denny [Sat, 5 Jan 2008 20:38:06 +0000 (20:38 +0000)] 
* src/parse-gram.c: Make timestamp later than parse-gram.y.

16 years ago* tests/local.at (AT_BISON_CHECK_XML): Fix quoting in previous patch.
Joel E. Denny [Sat, 22 Dec 2007 19:43:27 +0000 (19:43 +0000)] 
* tests/local.at (AT_BISON_CHECK_XML): Fix quoting in previous patch.

16 years agoAutomate regression testing of the XML/XSLT implementation. Discussed
Joel E. Denny [Sat, 22 Dec 2007 18:35:03 +0000 (18:35 +0000)] 
Automate regression testing of the XML/XSLT implementation.  Discussed
starting at
<http://lists.gnu.org/archive/html/bison-patches/2007-11/msg00021.html>.
* configure.ac (XSLTPROC): New substitution.
* Makefile.am (maintainer-xml-check): New phony target invoking...
* tests/Makefile.am (maintainer-xml-check): ... this new phony target
invoking make maintainer-check with BISON_TEST_XML=1.
* tests/atlocal.in (XSLTPROC): New.
* tests/local.at (AT_BISON_CHECK): New macro to (1) instruct Valgrind
not to report reachable memory when Bison is expected to have a
non-zero exit status and (2) to compare XML/XSLT output with --graph
and --report=all output for every working grammar when
BISON_TEST_XML=1.
(AT_BISON_CHECK_NO_XML): Likewise, but skip XML checks.
(AT_BISON_CHECK_XML): New.
(AT_QUELL_VALGRIND): New.
* tests/testsuite.at (ORIGINAL_AT_CHECK): Remove this and...
(AT_CHECK): ... don't redefine this since this was the old way to
quell Valgrind.
* tests/actions.at: Rewrite all AT_CHECK invocations for bison as
AT_BISON_CHECK invocations.
* tests/c++.at: Likewise.
* tests/calc.at: Likewise.
* tests/conflicts.at: Likewise.
* tests/cxx-type.at: Likewise.
* tests/existing.at: Likewise.
* tests/glr-regression.at: Likewise.
* tests/headers.at: Likewise.
* tests/input.at: Likewise.
* tests/java.at: Likewise.
* tests/output.at: Likewise.
* tests/push.at: Likewise.
* tests/reduce.at: Likewise.
* tests/regression.at: Likewise.
* tests/sets.at: Likewise.
* tests/skeletons.at: Likewise.
* tests/synclines.at: Likewise.
* tests/torture.at: Likewise.
(Big triangle): Use AT_BISON_CHECK_NO_XML instead since this grammar
tends to hang xsltproc.
(Big horizontal): Likewise.

16 years agoIn XML output, remove redundant class attribute on symbol element.
Joel E. Denny [Sat, 15 Dec 2007 02:08:02 +0000 (02:08 +0000)] 
In XML output, remove redundant class attribute on symbol element.
* data/xslt/bison.xsl (xsl:key name="bison:symbolByName"): New.
* data/xslt/xml2xhtml.xsl (xsl:template match="symbol"): Use it to
look up a symbol to determine whether it's a nonterminal or terminal.
* src/gram.c (rule_rhs_print_xml): Remove class attribute.
* src/state.c (state_rule_lookahead_tokens_print_xml): Likewise.

Add prec/assoc information to XML output.
* src/gram.c (grammar_rules_print_xml): For each rule that has a
%prec, add a percent_prec attribute.
* src/print-xml.c (print_grammar): For each terminal that has a
precedence or associativity, add a prec or assoc attribute.
(xml_indent): New.
(xml_puts): Use xml_indent.
(xml_printf): Use xml_indent.
* src/print-xml.h (xml_indent): Prototype.

* tests/existing.at (GNU pic Grammar): Fix a rule miscopied from
<http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00026.html>.

16 years ago* data/xslt/bison.xsl (bison:ruleNumber): Rename to...
Joel E. Denny [Sat, 8 Dec 2007 16:05:38 +0000 (16:05 +0000)] 
* data/xslt/bison.xsl (bison:ruleNumber): Rename to...
(bison:ruleByNumber): ... this for clarity.
* data/xslt/xml2dot.xsl (xsl:template match="item"): Update.
* data/xslt/xml2text.xsl (xsl:template match="item"): Update.
(xsl:template match="reduction"): Update.
(xsl:template match="item"): Update.
(xsl:template match="reduction"): Update.

In the XML output, don't print the list of rules where symbols appear.
Compute it in XSLT instead.  Discussed at
<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00024.html>.
* data/xslt/bison.xsl (bison:ruleByLhs): New.
(bison:ruleByRhs): New.
* data/xslt/xml2text.xsl (xsl:template match="terminal"): Use
bison:ruleByRhs.
(xsl:template match="terminal/rule"): Remove.
(xsl:template match="nonterminal"): Use bison:ruleByLhs and
bison:ruleByRhs.
(xsl:template match="nonterminal/left/rule|nonterminal/right/rule"):
Remove.
* data/xslt/xml2xhtml.xsl (xsl:template match="terminal"): Use
bison:ruleByRhs and mode="number-link" for rule template.
(xsl:template match="terminal/rule"): Remove.
(xsl:template match="nonterminal"): Use bison:ruleByLhs and
bison:ruleByRhs and mode="number-link" for rule template.
(xsl:template match="nonterminal/left/rule|nonterminal/right/rule"):
Rewrite as...
(xsl:template match="rule" mode="number-link"): ... this.
* src/print-xml.c (print_grammar): Don't print the list of rules.

16 years agoDon't let --report affect XML output; always print all information.
Joel E. Denny [Sat, 1 Dec 2007 19:44:36 +0000 (19:44 +0000)] 
Don't let --report affect XML output; always print all information.
Discussed at
<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00020.html>.
* src/conflicts.c (log_resolution): Implement.
* src/print-xml.c (print_core): Implement.
(print_state): Implement.
(print_xml): Implement.

* NEWS (2.3a+): Fix quotes.
* src/parse-gram.y (prologue_declaration): For consistency with -v,
don't let %verbose clear the list specified by --report.

17 years ago* data/Makefile.am (dist_pkgdata_DATA): Ship and install bison.xsl.
Akim Demaille [Mon, 26 Nov 2007 10:04:15 +0000 (10:04 +0000)] 
* data/Makefile.am (dist_pkgdata_DATA): Ship and install bison.xsl.

17 years agoIn the XML output, list useless and unused symbols and rules with the
Joel E. Denny [Sat, 24 Nov 2007 19:41:25 +0000 (19:41 +0000)] 
In the XML output, list useless and unused symbols and rules with the
useful ones and add a "usefulness" attribute.  Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00017.html>.
* src/gram.c (grammar_rules_partial_print_xml): Remove.
(grammar_rules_print_xml): Print all rules instead of just those
useful in the grammar, and add a "usefulness" attribute.
* src/gram.h (grammar_rules_partial_print_xml): Remove prototype.
* src/print-xml.c (print_rules_useless_in_parser): Remove.
(print_grammar): Print all nonterminals instead of just useful ones,
and add a "usefulness" attribute to nonterminals and terminals.
(print_xml): Don't print a separate "reductions" or
"rules-useless-in-parser" element.
* src/reduce.c (reduce_output): Use reduce_token_unused_in_grammar.
(reduce_xml): Remove.
(reduce_token_unused_in_grammar): New.
(reduce_nonterminal_useless_in_grammar): New.
* src/reduce.h (reduce_xml): Remove prototype.
(reduce_token_unused_in_grammar): Add prototype.
(reduce_nonterminal_useless_in_grammar): Add prototype.
* data/xslt/xml2text.xsl: Update for XML changes.
* data/xslt/xml2xhtml.xsl: Update for XML changes.
* tests/reduce.at (Useless Terminals): Update output.
(Useless Rules): Update output.
(Reduced Automaton): Update output.

Say "Terminals unused in grammar" instead of "Unused terminals".
* NEWS (2.3a+): Update.
* doc/bison.texinfo (Understanding): Update example output.
* src/reduce.c (reduce_output): Implement.
* data/xslt/xml2text.xsl: Implement.
* data/xslt/xml2xhtml.xsl: Implement.

17 years agoAccept --report-file=FILE to override the default `.output' filename.
Joel E. Denny [Sun, 18 Nov 2007 06:40:41 +0000 (06:40 +0000)] 
Accept --report-file=FILE to override the default `.output' filename.
* NEWS (2.3a+): Mention.
* doc/bison.texinfo (Bison Options): Add an entry.
* src/files.c (compute_output_file_names): Don't override
spec_verbose_file if already set.
* src/getargs.c (usage): Document --report-file.
(REPORT_FILE_OPTION): New anonymous enum member.
(long_options): Add entry for it.
(getargs): Add case for it setting spec_verbose_file.

* build-aux/cross-options.pl: Don't record a short option just because
there's an arg.
* doc/.cvsignore: Add yacc.1.

17 years ago* doc/yacc.1.in: New.
Akim Demaille [Wed, 14 Nov 2007 13:18:44 +0000 (13:18 +0000)] 
* doc/yacc.1.in: New.
* configure.ac, doc/Makefile.am: Adjust.
* configure.ac (PACKAGE_COPYRIGHT_YEAR): New substitution, and new
config.h symbol.
Use AC_SUBST for assignments too.
* src/getargs.c (version): Use PACKAGE_COPYRIGHT_YEAR.

17 years ago* src/gram.c: Remove comments that duplicate comments in gram.h.
Joel E. Denny [Sat, 10 Nov 2007 03:42:37 +0000 (03:42 +0000)] 
* src/gram.c: Remove comments that duplicate comments in gram.h.

When reporting useless rules and nonterminals, say "useless in grammar"
instead of "useless", and say "useless in parser" instead of "never
reduced".  Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2007-10/msg00033.html>.
* NEWS (2.3a+): Mention this change.
* data/xslt/xml2text.xsl: Update output text and expected input XML
element names to match changes below.
* data/xslt/xml2xhtml.xsl: Likewise.
(xsl:template match="bison-xml-report"): Add missing entry in Table of
Contents: "Rules useless in parser due to conflicts".
* doc/bison.texinfo (Decl Summary): Reword a little.
(Understanding): Update example output for changes below.
* src/gram.c: (rule_useful_p): Rename to...
(rule_useful_in_grammar_p): ... this.
(rule_useless_p): Rename to...
(rule_useless_in_grammar_p): ... this.
(rule_never_reduced_p): Rename to...
(rule_useless_in_parser_p): ... this.
(grammar_rules_print): Update for renames.
(grammar_rules_print_xml): Update for renames.
(grammar_rules_never_reduced_report): Rename to...
(grammar_rules_useless_report): ... this since it is used for either
kind of useless rule.
* src/gram.h: Reword comments and update function names in prototypes.
* src/main.c (main): Say "rule useless in parser due to conflicts".
* src/print-xml.c (print_rules_never_reduced): Rename to...
(print_rules_useless_in_parser): ... this, and rename output XML
element "rules-never-reduced" to "rules-useless-in-parser".
(print_xml): Update for rename.
* src/print.c (print_results): Say "Rules useless in parser due to
conflicts".
* src/reduce.c (reduce_grammar_tables): Say "rule useless in grammar".
(nonterminals_reduce): Say "nonterminal useless in grammar".
(reduce_output): Say "Nonterminals useless in grammar".
Say "Rules useless in grammar".
(reduce_xml): Rename output XML element "useless" to
"useless-in-grammar".
(reduce_print): Don't report the count of grammatically useless rules
as "rules never reduced" just because %yacc is specified.
In the correct report of this count, say nonterminal(s) and rule(s)
"useless in grammar".
* tests/conflicts.at (S/R in initial): Update expected output.
(Defaulted Conflicted Reduction): Likewise.
(Unreachable States After Conflict Resolution): Likewise.
* tests/existing.at (GNU pic Grammar): Likewise.
* tests/reduce.at (Useless Nonterminals): Likewise.
(Useless Rules): Likewise.
(Reduced Automaton): Likewise.
(Underivable Rules): Likewise.
(Empty Language): Likewise.

17 years ago* data/bison.m4 (b4_cat): Put a newline after the end delimiter of the
Joel E. Denny [Sat, 10 Nov 2007 01:36:54 +0000 (01:36 +0000)] 
* data/bison.m4 (b4_cat): Put a newline after the end delimiter of the
here document and before the EOF so that BSD's implementation of Bourne
shell doesn't parse the delimiter as part of the here document.
* doc/.cvsignore: Add cross-options.texi.
* src/getargs.c (usage): Add a blank line after the warning categories.

17 years ago2007-11-08 Paolo Bonzini <bonzini@gnu.org>
Paolo Bonzini [Thu, 8 Nov 2007 09:08:45 +0000 (09:08 +0000)] 
2007-11-08  Paolo Bonzini  <bonzini@gnu.org>

* data/lalr1.java (Lexer): Remove usage of b4_pure_if.

17 years agoRemove Id: from bison.1.
Akim Demaille [Mon, 5 Nov 2007 16:10:09 +0000 (16:10 +0000)] 
Remove Id: from bison.1.
* doc/Makefile.am (remove_time_stamp): Include the sed invocation.
(perl -0777 -pi -e 's/.PPnId): New.
(.x.1): Use it to ignore the version control revision.

17 years ago* build-aux/Makefile.am: Ship cross-options.pl.
Akim Demaille [Mon, 5 Nov 2007 06:38:00 +0000 (06:38 +0000)] 
* build-aux/Makefile.am: Ship cross-options.pl.
* doc/Makefile.am: Always refer to cross-options.texi with
$(srcdir).
(MAINTAINERCLEANFILES): Add it.

17 years ago* doc/Makefile.am: Complete the previous checkin.
Akim Demaille [Sun, 4 Nov 2007 21:17:55 +0000 (21:17 +0000)] 
* doc/Makefile.am: Complete the previous checkin.

17 years agoGenerate the long/short option cross-table.
Akim Demaille [Sun, 4 Nov 2007 21:15:11 +0000 (21:15 +0000)] 
Generate the long/short option cross-table.
* build-aux/cross-options.pl: New.
* doc/Makefile.am (cross-options.texi): New.
* doc/bison.texinfo: Use it.

17 years agoGenerate bison.1 using help2man.
Akim Demaille [Sun, 4 Nov 2007 21:13:21 +0000 (21:13 +0000)] 
Generate bison.1 using help2man.
* doc/common.x, doc/bison.x: New.
* doc/Makefile.am (bison.1, .x.1): New.
The code is taken from autoconf-2.61/man/Makefile.am.
* configure.ac: Look for help2man.

17 years agoComplete --help.
Akim Demaille [Sun, 4 Nov 2007 20:45:32 +0000 (20:45 +0000)] 
Complete --help.
* src/getargs.c (usage): Document -W, make it clear that -d,
-g and -x have optional arguments.

17 years agoFind sha1sum when named gsha1sum.
Akim Demaille [Sun, 4 Nov 2007 20:40:50 +0000 (20:40 +0000)] 
Find sha1sum when named gsha1sum.
* bootstrap (find_tool): New.
($SHA1SUM): New.

17 years agoFix tabs.
Akim Demaille [Sun, 4 Nov 2007 20:39:50 +0000 (20:39 +0000)] 
Fix tabs.

17 years agoDeprecate %pure-parser and add `%define api.pure'. Discussed starting
Joel E. Denny [Mon, 29 Oct 2007 17:36:40 +0000 (17:36 +0000)] 
Deprecate %pure-parser and add `%define api.pure'.  Discussed starting
at
<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00006.html>.
* 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.

17 years ago%define push_pull -> %define api.push_pull. Discussed starting at
Joel E. Denny [Sun, 28 Oct 2007 20:11:35 +0000 (20:11 +0000)] 
%define push_pull -> %define api.push_pull.  Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00005.html>.
* 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.

17 years agoFor the XML output's terminal element, rename @number to @token-number,
Joel E. Denny [Sun, 28 Oct 2007 00:24:22 +0000 (00:24 +0000)] 
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
<http://lists.gnu.org/archive/html/bison-patches/2007-10/msg00040.html>.
* 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.

17 years ago* data/xslt/xml2dot.xsl (xsl:template match="automaton/state"): After
Joel E. Denny [Sun, 21 Oct 2007 15:34:08 +0000 (15:34 +0000)] 
* data/xslt/xml2dot.xsl (xsl:template match="automaton/state"): After
2007-10-11 change, the child elements here are items not rules.
(<xsl:template match="item"): New.
(xsl:template match="rule"): Update for new reduced itemset.
(xsl:template match="point"): Remove.
(xsl:template match="empty"): For consistency with --graph, don't
output "/* empty */".
* data/xslt/xml2text.xsl (xsl:template match="terminal"): When invoking
line-wrap, don't pass a negative value as first-line-length since this
won't work with the following changes.
(xsl:template name="line-wrap"): Simplify slightly.
(xsl:template name="ws-search"): Eliminate recursion.
* src/print_graph.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.

17 years agoAdd %define lr.keep_unreachable_states.
Joel E. Denny [Fri, 19 Oct 2007 06:14:44 +0000 (06:14 +0000)] 
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.

17 years ago* NEWS: Add entry for recent .output file lookahead set fix.
Joel E. Denny [Fri, 19 Oct 2007 02:46:21 +0000 (02:46 +0000)] 
* NEWS: 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.

17 years ago2007-10-17 Wojciech Polak <polak@gnu.org>
Wojciech Polak [Wed, 17 Oct 2007 18:13:53 +0000 (18:13 +0000)] 
2007-10-17  Wojciech Polak  <polak@gnu.org>

* src/print-xml.c (print_grammar): Renamed
<terminal> and <nonterminal> 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.

17 years ago(xsl:template match="terminal"): Use new attribute names.
Wojciech Polak [Wed, 17 Oct 2007 18:12:20 +0000 (18:12 +0000)] 
(xsl:template match="terminal"): Use new attribute names.
(xsl:template match="nonterminal"): Likewise.

17 years agosrc/print-xml.c (print_grammar): Renamed <terminal> and <nonterminal>
Wojciech Polak [Wed, 17 Oct 2007 18:11:03 +0000 (18:11 +0000)] 
src/print-xml.c (print_grammar): Renamed <terminal> and <nonterminal>
attributes: "type" to "number" and "symbol" to "name".

17 years ago* doc/bison.texinfo (Bison Options): Add entry for --print-datadir.
Joel E. Denny [Wed, 17 Oct 2007 04:35:35 +0000 (04:35 +0000)] 
* 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.

17 years ago* src/print-xml.c (print_core): Remove item set
Wojciech Polak [Thu, 11 Oct 2007 16:40:08 +0000 (16:40 +0000)] 
* 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.

17 years ago(xsl:template match="item"): New.
Wojciech Polak [Thu, 11 Oct 2007 16:38:42 +0000 (16:38 +0000)] 
(xsl:template match="item"): New.
(xsl:template match="rule"): Support new reduced itemset.
(xsl:template match="point"): Remove.

17 years ago(xsl:template name="escape"): Write xsl:param "required" attribute as comment.
Wojciech Polak [Thu, 11 Oct 2007 16:37:59 +0000 (16:37 +0000)] 
(xsl:template name="escape"): Write xsl:param "required" attribute as comment.

17 years ago(bison:ruleNumber): New key. Improve processing time. Suggested by Joel E. Denny.
Wojciech Polak [Thu, 11 Oct 2007 16:37:38 +0000 (16:37 +0000)] 
(bison:ruleNumber): New key. Improve processing time. Suggested by Joel E. Denny.

17 years ago(print_core): Remove item set redundancy.
Wojciech Polak [Thu, 11 Oct 2007 16:36:49 +0000 (16:36 +0000)] 
(print_core): Remove item set redundancy.

17 years ago* src/getargs.c (version): Update copyright year.
Joel E. Denny [Tue, 9 Oct 2007 08:57:14 +0000 (08:57 +0000)] 
* src/getargs.c (version): Update copyright year.

17 years agoMake xml2dot.xsl and --graph produce the same output.
Joel E. Denny [Tue, 9 Oct 2007 08:48:43 +0000 (08:48 +0000)] 
Make xml2dot.xsl and --graph produce the same output.
* data/xslt/xml2dot.xsl (xsl:template match="rule"): Use a `&#10;'
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.

17 years agoImprove C++ namespace support. Discussed starting at
Joel E. Denny [Mon, 8 Oct 2007 10:09:07 +0000 (10:09 +0000)] 
Improve C++ namespace support.  Discussed starting at
<http://lists.gnu.org/archive/html/help-bison/2007-09/msg00016.html>.
* 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.

17 years agoAdd syncline support and location accessor to internal %define
Joel E. Denny [Mon, 8 Oct 2007 04:00:13 +0000 (04:00 +0000)] 
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.

17 years agoFix some error-reporting macro bugs.
Joel E. Denny [Mon, 8 Oct 2007 01:53:08 +0000 (01:53 +0000)] 
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.

17 years agoImplement --print-datadir.
Joel E. Denny [Fri, 5 Oct 2007 02:54:33 +0000 (02:54 +0000)] 
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.

17 years ago* src/print-xml.c (escape_bufs): New static global variable
Joel E. Denny [Sat, 29 Sep 2007 22:36:38 +0000 (22:36 +0000)] 
* 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.

17 years agoReplace `%push-parser' and `%push-pull-parser' with
Joel E. Denny [Tue, 25 Sep 2007 05:47:27 +0000 (05:47 +0000)] 
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.

17 years agoUpdated
Wojciech Polak [Mon, 24 Sep 2007 19:35:08 +0000 (19:35 +0000)] 
Updated

17 years agodata/Makefile.am (xsltdir): New variable.
Wojciech Polak [Mon, 24 Sep 2007 19:32:02 +0000 (19:32 +0000)] 
data/Makefile.am (xsltdir): New variable.
(dist_xslt_DATA): Add xslt/*.xsl files.

17 years agoTransform XML into XHTML.
Wojciech Polak [Mon, 24 Sep 2007 19:31:08 +0000 (19:31 +0000)] 
Transform XML into XHTML.

17 years agoTransform XML into plain text.
Wojciech Polak [Mon, 24 Sep 2007 19:30:49 +0000 (19:30 +0000)] 
Transform XML into plain text.

17 years agoTransform XML into DOT.
Wojciech Polak [Mon, 24 Sep 2007 19:30:17 +0000 (19:30 +0000)] 
Transform XML into DOT.

17 years ago* src/conflicts.c (log_resolution): Fix indenting bugs I introduced.
Paul Eggert [Mon, 24 Sep 2007 06:34:44 +0000 (06:34 +0000)] 
* 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.

17 years agoPacify ./configure --enable-gcc-warnings.
Joel E. Denny [Mon, 24 Sep 2007 01:41:35 +0000 (01:41 +0000)] 
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'.

17 years ago* src/gram.c (rule_rhs_print_xml): Now static, since it isn't used
Paul Eggert [Fri, 21 Sep 2007 22:53:58 +0000 (22:53 +0000)] 
* 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 <polak@gnu.org>

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  <eggert@cs.ucla.edu>

17 years ago* GNUmakefile: Switch to coreutils's version.
Paul Eggert [Fri, 21 Sep 2007 21:26:14 +0000 (21:26 +0000)] 
* 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  <eggert@cs.ucla.edu>
    Bruno Haible  <bruno@clisp.org>

* 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.

17 years agoSpell "boolean" as "Boolean". Reported by Akim Demaille.
Joel E. Denny [Tue, 28 Aug 2007 07:14:11 +0000 (07:14 +0000)] 
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.

17 years agoIn impure push mode, don't allow more than one yypstate to be allocated
Joel E. Denny [Sat, 18 Aug 2007 00:45:52 +0000 (00:45 +0000)] 
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.

17 years ago* doc/bison.texinfo (Push Decl): Document the push parser.
Joel E. Denny [Sat, 18 Aug 2007 00:07:01 +0000 (00:07 +0000)] 
* 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.

17 years agoUpdate to GPLv3.
Paul Eggert [Wed, 15 Aug 2007 20:21:33 +0000 (20:21 +0000)] 
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.

17 years agoGet rid of broken %no-parser, -n, and --no-parser implementation and
Joel E. Denny [Sun, 12 Aug 2007 02:12:30 +0000 (02:12 +0000)] 
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.

17 years ago* tests/push.at (Push Parsing: Memory Leak for Early Deletion): Do not
Joel E. Denny [Sat, 11 Aug 2007 23:08:04 +0000 (23:08 +0000)] 
* 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'.

17 years ago* ChangeLog: For changes in doc/bison.texinfo, consistently reference
Joel E. Denny [Fri, 3 Aug 2007 23:24:25 +0000 (23:24 +0000)] 
* ChangeLog: For changes in doc/bison.texinfo, consistently reference
node names: say "Decl Summary" not "Bison Declaration Summary".

17 years ago* data/yacc.c (yyexhaustedlab): Define it when YYERROR_VERBOSE is
Joel E. Denny [Fri, 3 Aug 2007 04:51:23 +0000 (04:51 +0000)] 
* 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
<http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00031.html>.
* THANKS: Add Christian Burger.

17 years ago* src/muscle_tab.c (muscle_percent_define_flag_if): In order to
Joel E. Denny [Sun, 29 Jul 2007 01:17:40 +0000 (01:17 +0000)] 
* 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.

17 years agoFix push parsing memory leak reported by Brandon Lucia at
Joel E. Denny [Sat, 28 Jul 2007 04:27:32 +0000 (04:27 +0000)] 
Fix push parsing memory leak reported by Brandon Lucia at
<http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00032.html>.
* 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.

17 years agoImprove handling of multiple S/R conflicts in the same state and of S/R
Joel E. Denny [Tue, 17 Jul 2007 06:56:36 +0000 (06:56 +0000)] 
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.

17 years ago* lib/.cvsignore: Add charset.alias.
Joel E. Denny [Tue, 17 Jul 2007 05:12:11 +0000 (05:12 +0000)] 
* lib/.cvsignore: Add charset.alias.

17 years ago* build-aux/.cvsignore: Add compile.
Joel E. Denny [Tue, 17 Jul 2007 03:19:37 +0000 (03:19 +0000)] 
* build-aux/.cvsignore: Add compile.
* lib/.cvsignore: Add ref-add.sed, ref-del.sed, and uniwidth.

17 years ago* bootstrap (slurp): Create target directories that don't exist.
Joel E. Denny [Tue, 17 Jul 2007 02:28:28 +0000 (02:28 +0000)] 
* bootstrap (slurp): Create target directories that don't exist.
Specifically, we need lib/uniwidth/ because of recent Gnulib changes.

17 years ago* LR0.c (new_itemsets): Fix wording in comments: say item index rather
Joel E. Denny [Tue, 10 Jul 2007 02:57:31 +0000 (02:57 +0000)] 
* 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.

17 years agoFix C++ test cases after recent Gnulib changes. Discussed starting at
Joel E. Denny [Tue, 3 Jul 2007 14:08:29 +0000 (14:08 +0000)] 
Fix C++ test cases after recent Gnulib changes.  Discussed starting at
<http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00000.html>.
* 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.

17 years ago* data/glr.c (yy_yypstack, yypstates, yypdumpstack): Use YYFPRINTF
Joel E. Denny [Mon, 2 Jul 2007 02:07:20 +0000 (02:07 +0000)] 
* 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.

17 years agoImprove some comments in parser table construction.
Joel E. Denny [Tue, 29 May 2007 04:24:17 +0000 (04:24 +0000)] 
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.

17 years ago* src/muscle_tab.c (muscle_percent_define_invalid_value): Replace
Joel E. Denny [Tue, 29 May 2007 03:06:34 +0000 (03:06 +0000)] 
* 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.

17 years ago* src/lalr.c (state_lookahead_tokens_count): For code readability,
Joel E. Denny [Mon, 28 May 2007 04:14:18 +0000 (04:14 +0000)] 
* 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.

17 years agoDon't depend on C99 features.
Joel E. Denny [Mon, 28 May 2007 01:09:11 +0000 (01:09 +0000)] 
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.

17 years agoUpdate copyright date.
Joel E. Denny [Sat, 26 May 2007 23:56:55 +0000 (23:56 +0000)] 
Update copyright date.

17 years ago* NEWS (2.3a+): In the %code entry, reference section `Bison
Joel E. Denny [Sat, 26 May 2007 20:08:18 +0000 (20:08 +0000)] 
* 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.

17 years ago* data/glr.c (yylval): As in yacc.c, don't extern in the header for
Joel E. Denny [Sat, 26 May 2007 19:10:43 +0000 (19:10 +0000)] 
* 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
<http://lists.gnu.org/archive/html/help-bison/2007-05/msg00018.html>.
* THANKS: Add Frans Englich.

17 years ago* src/Makefile.am (yacc): Quote target action commands properly so
Joel E. Denny [Sat, 26 May 2007 18:19:34 +0000 (18:19 +0000)] 
* src/Makefile.am (yacc): Quote target action commands properly so
that the yacc script isn't corrupt.  Reported by Hans Aberg at
<http://lists.gnu.org/archive/html/bug-bison/2007-05/msg00003.html>.

17 years agoExtend the front-end API for %define variables to more completely
Joel E. Denny [Sun, 20 May 2007 05:01:53 +0000 (05:01 +0000)] 
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.

17 years ago* NEWS (2.3a+): Mention yesterday's state-removal change.
Joel E. Denny [Tue, 8 May 2007 05:03:53 +0000 (05:03 +0000)] 
* 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.

17 years agoIf conflict resolution makes states unreachable, remove those states,
Joel E. Denny [Mon, 7 May 2007 02:56:56 +0000 (02:56 +0000)] 
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.

17 years agoMinor code cleanup in parser table construction.
Joel E. Denny [Mon, 7 May 2007 02:28:42 +0000 (02:28 +0000)] 
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.

17 years agoUse ASCII for Sebastien Fricker's name.
Paul Eggert [Wed, 4 Apr 2007 22:41:58 +0000 (22:41 +0000)] 
Use ASCII for Sebastien Fricker's name.

17 years ago* README-hacking: New file, taken mostly from coreutils, with changes
Paul Eggert [Wed, 4 Apr 2007 22:36:54 +0000 (22:36 +0000)] 
* 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.

SCALAR(0x82833fc)
redefinitions.

17 years ago* doc/bison.texinfo (Destructor Decl): Fix typo reported by Sebastian
Joel E. Denny [Sat, 10 Mar 2007 21:05:24 +0000 (21:05 +0000)] 
* doc/bison.texinfo (Destructor Decl): Fix typo reported by Sebastian
Setzer.
(Java Differences): Fix some typos.
* THANKS: Add Sebastian Setzer.

17 years ago2007-03-07 Paolo Bonzini <bonzini@gnu.org>
Paolo Bonzini [Fri, 9 Mar 2007 09:13:43 +0000 (09:13 +0000)] 
2007-03-07  Paolo Bonzini  <bonzini@gnu.org>

        * 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.

17 years ago* fnchange.lst: Reflect the renaming of c++ into cxx.
Juan Manuel Guerrero [Thu, 8 Mar 2007 01:47:29 +0000 (01:47 +0000)] 
* fnchange.lst: Reflect the renaming of c++ into cxx.

17 years ago* config.sed: Reflect the renaming of c++-skel.m4 into cxx-skel.m4.
Juan Manuel Guerrero [Thu, 8 Mar 2007 01:47:19 +0000 (01:47 +0000)] 
* config.sed: Reflect the renaming of c++-skel.m4 into cxx-skel.m4.

17 years ago* config.bat: Reflect the renaming of c++-skel.m4 into cxx-skel.m4.
Juan Manuel Guerrero [Thu, 8 Mar 2007 01:47:08 +0000 (01:47 +0000)] 
* config.bat: Reflect the renaming of c++-skel.m4 into cxx-skel.m4.

17 years ago* config.bat: Inhibit the use of disallowed characters.
Juan Manuel Guerrero [Wed, 7 Mar 2007 21:58:17 +0000 (21:58 +0000)] 
* config.bat: Inhibit the use of disallowed characters.

17 years ago* testsuite.sed: Inhibit the use of disallowed characters.
Juan Manuel Guerrero [Wed, 7 Mar 2007 21:58:05 +0000 (21:58 +0000)] 
* testsuite.sed: Inhibit the use of disallowed characters.

17 years agoDJGPP spefic issue. Inhibit the use of disallowed characters for
Juan Manuel Guerrero [Wed, 7 Mar 2007 21:57:35 +0000 (21:57 +0000)] 
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.

17 years ago* Makefile.am: djgpp/testsuite.sed added to EXTRA_DIST
Juan Manuel Guerrero [Wed, 7 Mar 2007 21:56:39 +0000 (21:56 +0000)] 
* Makefile.am: djgpp/testsuite.sed added to EXTRA_DIST

17 years ago* djgpp/config.bat: Rename arguments to args. Avoids 8.3 alias difficulty.
Juan Manuel Guerrero [Wed, 7 Mar 2007 07:24:23 +0000 (07:24 +0000)] 
* djgpp/config.bat: Rename arguments to args.  Avoids 8.3 alias difficulty.

17 years ago* djgpp/config.sed: Fix that inttypes.h and inttypes_.h map on the same 8.3 alias.
Juan Manuel Guerrero [Wed, 7 Mar 2007 06:33:37 +0000 (06:33 +0000)] 
* djgpp/config.sed: Fix that inttypes.h and inttypes_.h map on the same 8.3 alias.

17 years ago* djgpp/config.bat: Fix that inttypes.h and inttypes_.h map on the same 8.3 alias.
Juan Manuel Guerrero [Wed, 7 Mar 2007 06:33:27 +0000 (06:33 +0000)] 
* djgpp/config.bat: Fix that inttypes.h and inttypes_.h map on the same 8.3 alias.

17 years agoMiscellaneous %define and %code cleanup.
Joel E. Denny [Fri, 2 Mar 2007 06:26:28 +0000 (06:26 +0000)] 
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.