]> git.saurik.com Git - bison.git/log
bison.git
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 `
'
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.

17 years ago* src/print.c (lookahead_set, state_default_rule): Remove.
Joel E. Denny [Thu, 1 Mar 2007 03:40:18 +0000 (03:40 +0000)] 
* 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.

17 years ago2007-02-27 Paolo Bonzini <bonzini@gnu.org>
Paolo Bonzini [Tue, 27 Feb 2007 07:31:19 +0000 (07:31 +0000)] 
2007-02-27  Paolo Bonzini  <bonzini@gnu.org>

* data/lalr1.java: Prefix all private members with yy.

17 years agolib/.cvsignore: Update.
Joel E. Denny [Sat, 24 Feb 2007 22:40:59 +0000 (22:40 +0000)] 
lib/.cvsignore: Update.

17 years agoUse YYFPRINTF instead of fprintf where appropriate. Reported by
Joel E. Denny [Sat, 24 Feb 2007 05:43:35 +0000 (05:43 +0000)] 
Use YYFPRINTF instead of fprintf where appropriate.  Reported by
Sébastien Fricker at
<http://lists.gnu.org/archive/html/bug-bison/2007-02/msg00035.html>.
* THANKS: Add Sébastien 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.

17 years ago* bootstrap: Remove occurrences of .#bootmp from lib/Makefile.
Joel E. Denny [Mon, 19 Feb 2007 06:06:55 +0000 (06:06 +0000)] 
* bootstrap: Remove occurrences of .#bootmp from lib/Makefile.

17 years ago* djgpp/README.in: More generic description of required packages for compiling the...
Juan Manuel Guerrero [Fri, 16 Feb 2007 10:48:21 +0000 (10:48 +0000)] 
* djgpp/README.in: More generic description of required packages for compiling the sources.

17 years ago* djgpp/config.site: Adjustments concerning the use of autoconf 2.61.
Juan Manuel Guerrero [Wed, 14 Feb 2007 01:20:37 +0000 (01:20 +0000)] 
* djgpp/config.site: Adjustments concerning the use of autoconf 2.61.

17 years ago* djgpp/config.sed: Adjustments concerning the use of autoconf 2.61.
Juan Manuel Guerrero [Wed, 14 Feb 2007 01:20:26 +0000 (01:20 +0000)] 
* djgpp/config.sed: Adjustments concerning the use of autoconf 2.61.

17 years ago* djgpp/config.bat: Adjustments concerning the use of autoconf 2.61.
Juan Manuel Guerrero [Wed, 14 Feb 2007 01:20:06 +0000 (01:20 +0000)] 
* djgpp/config.bat: Adjustments concerning the use of autoconf 2.61.

17 years ago* DJGPP specific adjustments concerning the use of autoconf 2.61.
Juan Manuel Guerrero [Wed, 14 Feb 2007 01:19:42 +0000 (01:19 +0000)] 
* DJGPP specific adjustments concerning the use of autoconf 2.61.

17 years agoUndo my 2007-02-07 change, switching back to the c-strcase module
Paul Eggert [Mon, 12 Feb 2007 06:11:39 +0000 (06:11 +0000)] 
Undo my 2007-02-07 change, switching back to the c-strcase module
introduced in the 2007-02-03 change.  Bruno Haible reported that
the 2007-02-07 change would be dangerous in Turkish if we add a
language whose name contains "i", since "i" is not lowercase "I"
in Turkish.
* bootstrap.conf (gnulib_modules): Add c-strcase.  Remove strcase.
* lib/.cvsignore: Add c-ctype.c, c-ctype.h, c-strcase.h,
c-strcasecomp.c, c-strncasecmp.c.  Remove strcasecmp.c, strncasecmp.c.
* m4/.cvsignore: Remove strcase.m4.
* src/getargs.c: Revert 2007-02-07 change, as follows.
Include c-strcase.h.
(language_argmatch): Use c_strcasecmp rather than strcasecmp.

17 years agoEnable the Java related testsuite tests when the only Java compiler
Joel E. Denny [Sun, 11 Feb 2007 18:44:57 +0000 (18:44 +0000)] 
Enable the Java related testsuite tests when the only Java compiler
found is a gcj < 4.3.  Discussed at
<http://lists.gnu.org/archive/html/bug-bison/2007-02/msg00016.html>.
* configure.ac (gt_JAVACOMP): Don't specify a target_version.

17 years ago* data/Makefile.am: Update copyright date.
Joel E. Denny [Sun, 11 Feb 2007 07:34:26 +0000 (07:34 +0000)] 
* data/Makefile.am: Update copyright date.
* data/push.c (yypull_parse): Report memory exhaustion and return 2 if
yypstate_new returns NULL.
(yypstate_new): Return NULL if malloc does.
* src/reader.c (packgram): Move translation of rule actions from the
beginning of packgram to...
(check_and_convert_grammar): ... here right before packgram is invoked
so it's easier to write more complete comments, and remove redundant
code.

17 years agoAs in semantic actions, make @$ in %initial-action, %destructor, and
Joel E. Denny [Sat, 10 Feb 2007 22:28:23 +0000 (22:28 +0000)] 
As in semantic actions, make @$ in %initial-action, %destructor, and
%printer imply %locations.
* src/scan-code.l (SC_SYMBOL_ACTION): Set locations_flag = true when
scanning @$.
* tests/actions.at (AT_CHECK_ACTION_LOCATIONS): New macro supporting...
(@$ in %initial-action implies %locations,
@$ in %destructor implies %locations,
@$ in %printer implies %locations): ... these new test cases.

17 years agoUndo most of the 2007-02-03 change, switching to the strcase module
Paul Eggert [Wed, 7 Feb 2007 20:37:29 +0000 (20:37 +0000)] 
Undo most of the 2007-02-03 change, switching to the strcase module
now that gnulib strcase has been fixed.
* bootstrap.conf (gnulib_modules): Remove c-strcase.  Add strcase.
* lib/.cvsignore: Remove c-ctype.c, c-ctype.h, c-strcase.h,
c-strcasecomp.c, c-strncasecmp.c.  Add strcasecmp.c, strncasecmp.c
* m4/.cvsignore: Add strcase.m4.
* src/getargs.c: Revert 2007-02-03 change, as follows.
Don't include c-strcase.h.
(language_argmatch): Use strcasecmp rather than c_strcasecmp.
strcasecmp has "unspecified behavior" outside the POSIX locale,
but it works fine in practice if at least one argument is ASCII,
as is the case in Bison.

17 years ago2007-02-07 Paolo Bonzini <bonzini@gnu.org>
Paolo Bonzini [Wed, 7 Feb 2007 17:03:10 +0000 (17:03 +0000)] 
2007-02-07  Paolo Bonzini  <bonzini@gnu.org>

* tests/java.at: Skip tests if only one of javac/java is present.
Reported by Joel E. Denny.
        * tests/atlocal.in: Adjust copyright years.

17 years ago2007-02-05 Paolo Bonzini <bonzini@gnu.org>
Paolo Bonzini [Mon, 5 Feb 2007 09:58:04 +0000 (09:58 +0000)] 
2007-02-05  Paolo Bonzini  <bonzini@gnu.org>

* data/lalr1.java (Stack): Work around old verifiers that disallow
access to the private fields of an inner class, from the outer class.
We can make Stack's fields public because user code doesn't have access
to the instance of Stack used by parse().

17 years ago* .cvsignore: Add javacomp.sh, javaexec.sh. Is this really
Paul Eggert [Sun, 4 Feb 2007 07:19:10 +0000 (07:19 +0000)] 
* .cvsignore: Add javacomp.sh, javaexec.sh.  Is this really
the right spot for these files?
* bootstrap.conf (gnulib_modules): Add c-strcase.
* lib/.cvsignore: Add c-ctype.c c-ctype.h, c-strcasecomp.c,
c-strncasecmp.c.
* src/getargs.c: Include c-strcase.h.
(language_argmatch): Use c_strcasecmp rather than strcasecmp,
to avoid unspecified behavior.

17 years ago* doc/bison.texinfo (Decl Summary): Correct typo.
Joel E. Denny [Thu, 1 Feb 2007 06:39:43 +0000 (06:39 +0000)] 
* doc/bison.texinfo (Decl Summary): Correct typo.

17 years ago2007-01-30 Paolo Bonzini <bonzini@gnu.org>
Paolo Bonzini [Tue, 30 Jan 2007 08:01:29 +0000 (08:01 +0000)] 
2007-01-30  Paolo Bonzini  <bonzini@gnu.org>

* data/bison.m4 (b4_percent_define_flag_if): Don't treat 0 as false.
Complain if the value does not match empty, "true" or "false".
* data/c++.m4: Adjust default definitions of %define variables.
* data/java.m4: Adjust default definitions of %define variables.
* doc/bison.texinfo (Decl Summary): Adjust the %define entry according
to above behavior.
* tests/input.at (Boolean %define variables): Test new behavior.

17 years ago2007-01-29 Paolo Bonzini <bonzini@gnu.org>
Paolo Bonzini [Mon, 29 Jan 2007 10:54:42 +0000 (10:54 +0000)] 
2007-01-29  Paolo Bonzini  <bonzini@gnu.org>

* NEWS: Mention java.
* TODO: Remove things that are done.
* bootstrap.conf: Add javacomp-script and javaexec-script.
* configure.ac: Invoke gt_JAVACOMP and gt_JAVAEXEC.

* data/Makefile.am: Add new files.
* data/java-skel.m4: New.
* data/java.m4: New.
* data/lalr1.java: New.

* doc/bison.texinfo: Put "A Complete C++ Example" under
C++ Parsers.  Add Java Parsers.  Put C++ Parsers and Java Parsers
under Other Languages.

* src/getargs.c (valid_languages): Add Java.
* src/getargs.h (struct bison_language): Update size of string fields.

* tests/Makefile.am: Add java.at.
* tests/atlocal.in: Add CONF_JAVA and CONF_JAVAC.
* tests/java.at: New.
* tests/testsuite.at: Include it.

17 years ago* src/scan-skel.l (at_directive_perform): Fix switch statements for last patch.
Joel E. Denny [Sun, 28 Jan 2007 15:10:56 +0000 (15:10 +0000)] 
* src/scan-skel.l (at_directive_perform): Fix switch statements for last patch.

17 years agoClean up.
Joel E. Denny [Sun, 28 Jan 2007 14:31:56 +0000 (14:31 +0000)] 
Clean up.
* src/scan-skel.l (at_directive_perform): Add at_directive_argc and
at_directive_argv arguments so these no longer have to be global
variables.  Also, update the implementation for the following changes.
(fail_for_at_directive_too_many_args,
fail_for_at_directive_too_few_args): Add at_directive_name argument.
(at_directive_name): Remove as at_directive_argv[0] will be used for
this now.
(AT_DIRECTIVE_ARGC_MAX): Increment to make space in at_directive_argv
for the directive name.
(at_directive_argc, at_directive_argv): Make these local within
skel_lex instead of global.
(INITIAL): Update directive start action for above changes.
(SC_AT_DIRECTIVE_ARG): Rename to...
(SC_AT_DIRECTIVE_ARGS): ... this, and update for above changes.
(SC_AT_DIRECTIVE_SKIP_WS): Update.
(scan_skel): Move yylex_destroy to...
(skel_scanner_free): ... here.
* tests/skeletons.at (installed skeleton file name): Rename to...
(installed skeleton file names): ... this.

17 years ago* ChangeLog: For changes in doc/bison.texinfo, consistently reference
Joel E. Denny [Sat, 27 Jan 2007 23:34:16 +0000 (23:34 +0000)] 
* ChangeLog: For changes in doc/bison.texinfo, consistently reference
node names: say "Table of Symbols" not "Bison Symbols", and say "Decl
Summary" not "Directives".
* doc/bison.texinfo (Decl Summary, Calc++ Parser): Cross-reference the
%code entry in "Decl Summary" rather than the one in "Table of Symbols"
since the former is now the more complete one.
(Prologue Alternatives): Likewise and do the same for %defines.
(Table of Symbols): Add summary of %code, add summary of %define, and
move full %code documentation to...
(Decl Summary): ... here for consistency with other entries in these
sections.
Move %define entry in order to keep this list alphabetized.
Reword %define entry a little to put less emphasis on the skeleton
concept, which most users shouldn't have to think about.

17 years agoAdjust to recent gnulib changes.
Paul Eggert [Fri, 26 Jan 2007 23:11:59 +0000 (23:11 +0000)] 
Adjust to recent gnulib changes.
* lib/.cvsignore: Remove stpcpy.h, strndup.h, strnlen.h.
Add string.h, string_.h, unistd_.h, wchar_.h.
* m4/.cvsignore: Add gnulib-common.m4, string_h.m4, wchar.m4.
* src/system.h: Don't include <stpcpy.h>; this is now done by
<string.h>.

17 years ago2007-01-23 Paolo Bonzini <bonzini@gnu.org>
Paolo Bonzini [Tue, 23 Jan 2007 12:24:27 +0000 (12:24 +0000)] 
2007-01-23  Paolo Bonzini  <bonzini@gnu.org>

Simplify implementation of unqualified %code, implement macros for
uniform treatment of boolean %define flags.  Document %define.
* data/bison.m4 (b4_percent_define_ifdef, b4_percent_define_flag_if,
b4_percent_code_ifdef): New.
(b4_percent_code_get): Map unqualified %code to b4_percent_code().
* data/c++.m4: Define default value for global_tokens_and_yystype.
* data/glr.cc: Likewise.
* data/location.cc: Use b4_percent_define_flag_if.

* doc/bison.texinfo (Directives): Document %define.

* src/parse-gram.y (Unqualified %code): Change muscle name to
b4_percent_code().
(content.opt): Default to empty.

17 years agoBack out previous patch.
Joel E. Denny [Thu, 18 Jan 2007 08:32:33 +0000 (08:32 +0000)] 
Back out previous patch.

17 years agoImplement @gettext<...@> directive to call gettext from skeletons. It
Joel E. Denny [Thu, 18 Jan 2007 05:14:59 +0000 (05:14 +0000)] 
Implement @gettext<...@> directive to call gettext from skeletons.  It
can be used anywhere including inside arguments of directives of the
form @foo(...@).  Eventually, it should be possible to write an
xgettext-like utility to extract @gettext<...@> text from skeletons.
* data/bison.m4 (b4_check_user_names): Use @gettext<...@> when invoking
b4_warn_at since b4_warn_at doesn't invoke gettext anymore.
* data/glr.cc, data/lalr1.cc: Likewise but for b4_fatal and
b4_complain reporting a push-parsing request or a missing %defines.
* src/scan-skel.l (INITIAL): Recognize `@gettext<' to start...
(SC_AT_GETTEXT_ARG): ... this new start condition where gettext is
invoked.
(SC_AT_DIRECTIVE_ARG): Rename to...
(SC_AT_DIRECTIVE_ARGS): ... this, and recognize `@gettext<' to start
SC_AT_GETTEXT_ARG.
(at_directive_perform): Don't invoke gettext for @warn(...@),
@warn_at(...@), etc.  Instead, let the skeletons decide what should be
passed to @gettext<...@>.
* tests/skeletons.at (@gettext<...@>): New test case.

* tests/skeletons.at (installed skeleton file name): Rename to...
(installed skeleton file names): ... this.

17 years agoImplement support for relative and absolute skeleton file names.
Joel E. Denny [Thu, 18 Jan 2007 02:18:17 +0000 (02:18 +0000)] 
Implement support for relative and absolute skeleton file names.
Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00071.html>.
* doc/bison.texinfo (Decl Summary): Document in %skeleton entry.
(Bison Options): Document in --skeleton entry.
* src/output.c (output_skeleton): Use strncpy rather than strcpy since
full_skeleton can't necessarily hold all of pkgdatadir.
If the specified skeleton file name contains a `/', don't prepend
pkgdatadir.
* src/parse-gram.y (prologue_declaration): If the specified skeleton
file name contains a `/', prepend the grammar file directory.
* tests/Makefile.am (TESTSUITE_AT): Add skeletons.at.
* skeletons.at: New file.
(relative skeleton file names): New test case.
(installed skeleton file names): New test case.
* tests/testsuite.at: Include skeletons.at.

* bootstrap: Update copyright to 2007.

17 years ago2007-01-17 Paolo Bonzini <bonzini@gnu.org>
Paolo Bonzini [Wed, 17 Jan 2007 18:28:30 +0000 (18:28 +0000)] 
2007-01-17  Paolo Bonzini  <bonzini@gnu.org>

* bootstrap: Remove occurrences of .#bootmp from the files.

17 years agoBack out previous commit, which was unintended.
Joel E. Denny [Wed, 17 Jan 2007 09:20:34 +0000 (09:20 +0000)] 
Back out previous commit, which was unintended.

17 years ago* doc/bison.texinfo (Calc++ Parser): Don't try to alias
Akim Demaille [Wed, 17 Jan 2007 08:44:55 +0000 (08:44 +0000)] 
* doc/bison.texinfo (Calc++ Parser): Don't try to alias
nonterminals.
Use per-type %printer.

17 years ago* NEWS, data/c++-skel.m4, data/c++.m4, data/c-skel.m4, data/c.m4,
Joel E. Denny [Wed, 17 Jan 2007 08:36:07 +0000 (08:36 +0000)] 
* NEWS, data/c++-skel.m4, data/c++.m4, data/c-skel.m4, data/c.m4,
data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc,
djgpp/config.site, src/files.c, src/files.h, src/main.c,
src/muscle_tab.c, src/muscle_tab.h, src/parse-gram.y, src/reader.h,
src/scan-skel.h, src/scan-skel.l, tests/actions.at, tests/calc.at,
tests/glr-regression.at, tests/input.at, tests/local.at,
tests/output.at, tests/torture.at: Update copyright to 2007.

17 years ago* doc/bison.texinfo (Calc++ Parsing Driver): Let "parse" return an
Akim Demaille [Tue, 16 Jan 2007 13:11:30 +0000 (13:11 +0000)] 
* doc/bison.texinfo (Calc++ Parsing Driver): Let "parse" return an
error code.
(Calc++ Scanner): Exit with failure if we can't open the input
file.
Accept "-" standing for stdin.
(Calc++ Top Level): Print the result only if the parsing was
successful.

17 years ago* data/lalr1.cc (yy_reduce_print_): Add a missing end-of-line.
Akim Demaille [Tue, 16 Jan 2007 12:27:19 +0000 (12:27 +0000)] 
* data/lalr1.cc (yy_reduce_print_): Add a missing end-of-line.

17 years agoClean up %define and %code implementation in M4 some. Most
Joel E. Denny [Tue, 16 Jan 2007 06:16:04 +0000 (06:16 +0000)] 
Clean up %define and %code implementation in M4 some.  Most
importantly, rename all related macros to be in the b4_percent_define
and b4_percent_code namespaces.  Also, complete support for `.' in
%define variable names and %code qualifiers.
* data/bison.m4 (b4_check_user_names): Check for special
"SKELETON-NAMESPACE(name)" macros instead of using two nested
m4_foreach loops.
(b4_get_percent_define, b4_get_percent_code): Rename to...
(b4_percent_define_get, b4_percent_code_get): ... these.
Extend documentation with examples.
For SKELETON-NAMESPACE (as documented for b4_check_user_names), use
b4_percent_define_skeleton_variables and
b4_percent_code_skeleton_qualifiers.
Expect any value for the %define variable `foo' to be stored in the
macro named `b4_percent_define(foo)'; expect any %code blocks for the
qualifier `foo' to be stored in a macro named `b4_percent_code(foo)';
expect any unqualified %code blocks to be stored in a macro named
`b4_percent_code_unqualified'.
Use m4_indir so that %define variable names and %code qualifiers can
contain `.', which is allowed by the grammar parser.
(b4_percent_define_default): New macro to set a default value for a
%define variable.
(m4_wrap): Update wrapped code, and fix some underquoting.
(b4_check_user_names_wrap): Update and define outside the m4_wrap.
Expect grammar uses of %define variables and %code qualifiers to be
defined in b4_percent_define_user_variables and
b4_percent_code_user_qualifiers.
* data/c++.m4: Use b4_percent_define_default rather than
m4_define_default.  Fix some underquoting.  Skeleton usage of %define
variable define_location_comparison now implies skeleton usage of
%define variable filename_type.
* data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc,
data/push.c, data/yacc.c: Update macro names.
* src/parse-gram.y (prologue_declaration, grammar_declaration): Update
muscle names.

17 years ago* djgpp/config.site: Set ac_cv_path_mkdir to a sane DJGPP specific
Juan Manuel Guerrero [Sun, 14 Jan 2007 22:22:26 +0000 (22:22 +0000)] 
* djgpp/config.site: Set ac_cv_path_mkdir to a sane DJGPP specific
default.  Set gl_cv_absolute_wctype_h to a sane DJGPP specific default.

17 years ago* tests/glr-regression.at: Use AT_PARSER_CHECK rather than AT_CHECK to
Joel E. Denny [Wed, 10 Jan 2007 03:47:50 +0000 (03:47 +0000)] 
* tests/glr-regression.at: Use AT_PARSER_CHECK rather than AT_CHECK to
run parsers in all tests so that Valgrind is invoked during
maintainer-check-valgrind.
(Duplicate representation of merged trees): Free all semantic values.
(Duplicated user destructor for lookahead): Likewise.

17 years ago* tests/local.at (AT_PARSER_CHECK): Add a PRE argument to specify a
Joel E. Denny [Wed, 10 Jan 2007 02:55:19 +0000 (02:55 +0000)] 
* tests/local.at (AT_PARSER_CHECK): Add a PRE argument to specify a
command-line prefix.
* tests/torture.at (Exploding the Stack Size with Alloca): Stderr is
ignored, so use that PRE to set --log-fd=1 in VALGRIND_OPTS so we don't
miss Valgrind messages.
(Exploding the Stack Size with Malloc): Likewise.

17 years agoIgnore YYSTACK_USE_ALLOCA for push parsers since the stacks can't be
Joel E. Denny [Wed, 10 Jan 2007 00:50:55 +0000 (00:50 +0000)] 
Ignore YYSTACK_USE_ALLOCA for push parsers since the stacks can't be
locals.  Reported by Juan Manuel Guerrero at
<http://lists.gnu.org/archive/html/bug-bison/2007-01/msg00000.html>.
* data/push.c: Enclose the #ifdef YYSTACK_USE_ALLOCA in b4_push_if.
Fix some indentation also.
* tests/torture.at (Exploding the Stack Size with Alloca): Add comment
explaining this issue.