]> git.saurik.com Git - bison.git/log
bison.git
18 years ago* NEWS: The -g and --graph options now output graphs in Graphviz
Paul Eggert [Thu, 12 Oct 2006 23:29:52 +0000 (23:29 +0000)] 
* NEWS: The -g and --graph options now output graphs in Graphviz
DOT format, not VCG format.
* doc/bison.1: Likewise.
* doc/bison.texinfo (Understanding, Bison Options): Likewise.
* TODO: Remove Graphviz entry.
* src/Makefile.am (bison_SOURCES): Add graphviz.c and graphviz.h;
remove vcg.c, vcg.h, vcg_defaults.h.
* src/vcg.c, src/vcg.h, src/vcg_defaults.h: Remove.
* src/graphviz.c, src/graphviz.h: New files.
* src/files.c (compute_output_file_names): Output .dot, not .vcg.
* src/files.h: Make comment more generic.
* src/main.c (main): Likewise.
* src/print_graph.h: Likewise.
* src/getargs.c (usage): Make usage description more generic.
* src/print_graph.c: Include graphviz.h rather than vcg.h.
(static_graph, fgraph): Remove.  All uses changed to pass
arguments instead of sharing a static var.
(print_core, print_actions, print_state, print_graph):
Output graphviz format rather than VCG format.
* tests/.cvsignore: Remove *.vcg; add *.dot.
* tests/output.at: Expect *.dot files, not *.vcg files.

18 years ago* data/Makefile.am (dist_pkgdata_DATA): Add bison.m4; this
Paul Eggert [Thu, 12 Oct 2006 22:40:52 +0000 (22:40 +0000)] 
* data/Makefile.am (dist_pkgdata_DATA): Add bison.m4; this
accommodates the 2006-10-08 change.

18 years ago* data/push.c (yypushparse, yypvarsinit, yypvars): Wrap in b4_push_if.
Paul Eggert [Thu, 12 Oct 2006 05:47:58 +0000 (05:47 +0000)] 
* data/push.c (yypushparse, yypvarsinit, yypvars): Wrap in b4_push_if.
(b4_yyssa, b4_yyerror_range): New macros.
(struct yypvars): Remove yyssa_ptr and yyerror_range_ptr fields.
(yypvarsinit): Remove init of removed fields.
(yypushparse): Remove use of removed fields; use new macros instead.

18 years agoFix missing bracket.
Paul Eggert [Wed, 11 Oct 2006 19:13:48 +0000 (19:13 +0000)] 
Fix missing bracket.

18 years ago* data/push.c (yypushparse): Fix memory leak if yymsg is malloced
Paul Eggert [Wed, 11 Oct 2006 16:35:34 +0000 (16:35 +0000)] 
* data/push.c (yypushparse): Fix memory leak if yymsg is malloced
in a push parser.  Reindent slightly to match yacc.c better.

2006-10-11  Bob Rossi  <bob@brasko.net>

        * data/push.c (struct yypvars): Remove yymsgbuf, yymsgbuf_ptr, yymsg,
        yymsg_alloc fields.
        (yypvarsinit, yypushparse): Remove init of removed fields.
        (yypushparse): Use yymsgbuf instead of yymsgbuf_ptr.

18 years ago* THANKS: Add Paolo Bonzini and Bob Rossi.
Paul Eggert [Mon, 9 Oct 2006 16:18:52 +0000 (16:18 +0000)] 
* THANKS: Add Paolo Bonzini and Bob Rossi.

18 years ago2006-10-08 Paolo Bonzini <bonzini@gnu.org>
Paolo Bonzini [Sun, 8 Oct 2006 11:07:02 +0000 (11:07 +0000)] 
2006-10-08  Paolo Bonzini  <bonzini@gnu.org>

* data/c.m4 (b4_copyright, b4_epilogue, b4_location_initial_column,
b4_location_initial_line, p4_parse_param, b4_ints_in, b4_flag_if,
b4_define_flag_if and uses, b4_basename, b4_syncline, b4_user_code,
b4_define_user_cde and uses): Remove.
(b4_comment, b4_prefix, b4_sync_start): New.
* data/bison.m4: New file, with most of the content removed from c.m4.
* src/muscle_tab.h: Use "do {...} while(0)" throughout.
* src/output.c (output_skeleton): Pass bison.m4.
(prepare): Pass glr_flag and nondeterministic_flag.  Pass prefix
only if specified.

18 years agoFix test failure reported by Tom Lane in
Paul Eggert [Fri, 6 Oct 2006 06:57:00 +0000 (06:57 +0000)] 
Fix test failure reported by Tom Lane in
<http://lists.gnu.org/archive/html/bug-bison/2006-10/msg00000.html>
and try to make such failures easier to catch in the future.
* data/glr.c (YYTRANSLATE): Don't check for nonpositive arg;
that's now the caller's responsibility.
(yyprocessOneStack, yyrecoverSyntaxError, yyparse):
Set yychar = YYEOF if it's negative.
* tests/actions.at (yylex): Abort if asked to read past EOF.
* tests/conflicts.at (yylex): Likewise.
* tests/cxx-type.at (yylex): Likewise.
* tests/glr-regression.at (yylex): Likewise.
* tests/input.at (yylex): Likewise.
* tests/regression.at (yylex): Likewise.
* tests/torture.at (yylex): Likewise.

18 years agoFix problems with translating English-language diagnostics.
Paul Eggert [Sun, 1 Oct 2006 23:35:37 +0000 (23:35 +0000)] 
Fix problems with translating English-language diagnostics.
* bootstrap: Fix bug introduced in recent bootstrap changes, with
respect to bison-runtime pot generation.  The YY_ stuff
wasn't being captured.
* bootstrap.conf (XGETTEXT_OPTIONS_RUNTIME): New var.
* po/POTFILES.in: Add src/location.c, src/scan-code.l.
* runtime-po/POTFILES.in: Add data/push.c.

18 years agoMerge bootstrap changes from coreutils.
Paul Eggert [Sat, 30 Sep 2006 05:21:35 +0000 (05:21 +0000)] 
Merge bootstrap changes from coreutils.

2006-09-28  Jim Meyering  <jim@meyering.net>

Automatically generated dependencies are important even
when all of the sources in a directory come from gnulib.
* bootstrap (gnulib_tool): Remove the "no-dependencies" automake
option that gnulib-tool adds to what becomes our lib/gnulib.mk.

2006-09-23  Jim Meyering  <jim@meyering.net>

* bootstrap (gnulib_tool_options): Add "--local-dir gl".

2006-09-20  Paul Eggert  <eggert@cs.ucla.edu>

* bootstrap: Add support for --force.
(usage): New function.  Describe usage less tersely.
(CVS_only_file): New var.

18 years ago* data/push.c (YYPUSH_MORE): Make it an enum instead.
Paul Eggert [Thu, 21 Sep 2006 17:45:21 +0000 (17:45 +0000)] 
* data/push.c (YYPUSH_MORE): Make it an enum instead.
(yypushparse): Use YYPUSH_MORE instead of the mystery constant.
Adjust white space and comments to match GNU style better.

18 years ago* data/push.c (yyresult_get): Remove function.
Paul Eggert [Thu, 21 Sep 2006 04:57:36 +0000 (04:57 +0000)] 
* data/push.c (yyresult_get): Remove function.
(YYPUSH_MORE): Add #define.
(yypushparse): Modify return value.

18 years ago* stamp-h.in: Remove; no longer needed.
Paul Eggert [Wed, 20 Sep 2006 20:22:24 +0000 (20:22 +0000)] 
* stamp-h.in: Remove; no longer needed.
* .cvsignore: Replace autom4te.cache and config.cache with *.cache.
Remove config.h, config.hin, intl (no longer created).
* lib/.cvsignore: Add config.h, config.hin, configmake.h, inttypes.h,
stamp-h1.

Sync bootstrap from coreutils.

18 years ago* src/getargs.c (usage): Rework to use conventions similar to
Paul Eggert [Wed, 20 Sep 2006 20:04:28 +0000 (20:04 +0000)] 
* src/getargs.c (usage): Rework to use conventions similar to
coreutils, to make translation a bit easier and the code a bit
smaller.  Problem reported by Tim Van Holder.

18 years agoUse some of gnulib's new modules, taken from coreutils.
Paul Eggert [Fri, 15 Sep 2006 18:59:40 +0000 (18:59 +0000)] 
Use some of gnulib's new modules, taken from coreutils.

* bootstrap: Sync from coreutils, except add support for gnulib_files.
* bootstrap.conf: New file.
(gnulib_modules): Add configmake, inttypes, unistd.
(XGETTEXT_OPTIONS): Add complain, complain_at,
fatal, fatal_at, warn, warn_at, unexpected_end.
* configure.ac (AC_CONFIG_HEADERS): config.h is now in lib, not here.
(gl_USE_SYSTEM_EXTENSIONS): Remove; gl_EARLY now does this.
(gl_EARLY): Add.
(AM_STDBOOL_H): Remove; gl_INIT now dows this.
(gl_INIT): Add
(GNULIB_AUTOCONF_SNIPPET): Remove.
(AM_GNU_GETTEXT): Add; require formatstring macros since that's
the pickiest.
* lib/.cvsignore: Add inttypes_.h.
* lib/Makefile.am: Include gnulib.mk first so we can append to it.
(AM_CFLAGS): Add WERROR_CFLAGS, to be more like coreutils.
(BUILT_SOURCES, EXTRA_DIST, MOSTLYCLEANFILES): Remove
no-longer-necessary initializations.
(lib_SOURCES): Remove, replacing by libbison_a_SOURCES.
* lib/subpipe.c: Include <unistd.h> unconditionally, now that we
use the unistd module.
* src/system.h: Likewise.
* m4/.cvsignore: Remove *_gl.m4, gnulib.m4, inttypes_h.m4, uintmax_t.m4,
ulonglong.m4.  Add gettext.m4, gnulib-cache.m4, gnulib-comp.m4,
gnulib-tool.m4, inttypes-h.m4, inttypes-pri.m4, inttypes.m4.
* src/Makefile.am (DEFS): Remove, since configmake does this for us.
(AM_CPPFLAGS): Remove -I../lib, since Automake does that for us.
* src/system.h: Include inttypes.h unconditionally, now that we
use the inttypes module.  Don't bother to include stdint.h, since
inttypes.h now does that for us.
(LOCALEDIR): Remove, now that we use the configmake module.
* src/getargs.c: Include configmake.h.
* src/main.c: Likewise.
* src/output.c: Likewise.
* tests/atlocal.in (CPPFLAGS): Include from $abs_top_builddir/lib,
not from $abs_top_builddir, since config.h moved.

18 years ago(AC_INIT): Bump from 2.3a to 2.3a+.
Paul Eggert [Fri, 15 Sep 2006 17:08:40 +0000 (17:08 +0000)] 
(AC_INIT): Bump from 2.3a to 2.3a+.

18 years agoRegenerate.
Paul Eggert [Fri, 15 Sep 2006 16:45:33 +0000 (16:45 +0000)] 
Regenerate.

18 years agoPort to GCC 2.95. First two problems reported by Michael Deutschmann in
Paul Eggert [Fri, 15 Sep 2006 16:34:48 +0000 (16:34 +0000)] 
Port to GCC 2.95.  First two problems reported by Michael Deutschmann in
<http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00018.html>.

* src/parse-gram.y (symbol_declaration): Don't put statements
before declarations; it's not portable to C89.
* src/scan-code.l (handle_action_at): Likewise.

* src/scan-code.l: Always initialize braces_level; the old code
left it uninitialized and therefore had undefined behavior.

Don't attempt to redefine 'assert', since it runs afoul of
systems where standard headers (mistakenly) include <assert.h>.
Instead, define and use our own alternative, called 'aver'.
* src/reader.c: Don't include assert.h, since we no longer
use assert.
* src/scan-code.l: Likewise.
* src/system.h (assert): Remove, replacing with....
(aver): New function, taking a bool arg.  All uses changed.
* src/tables.c (pack_vector): Ensure that aver arg is bool,
not merely an integer.

18 years agoRegenerate.
Paul Eggert [Fri, 15 Sep 2006 15:56:38 +0000 (15:56 +0000)] 
Regenerate.

18 years ago* data/Makefile.am (dist_pkgdata_DATA): Add push.c.
Paul Eggert [Fri, 15 Sep 2006 15:56:26 +0000 (15:56 +0000)] 
* data/Makefile.am (dist_pkgdata_DATA): Add push.c.
* data/c.m4 (YYPUSH): New.
(b4_push_if): New macro.  Use it instead of #ifdef YYPUSH.
* src/getargs.c (push_parser): New var.
* src/getargs.h (push_parser): New declaration.
* src/output.c (prepare): Add macro insertion of `push_flag'.
* src/parse-gram.y (PERCENT_PUSH_PARSER): New token.
(prologue_declaration): Parse %push-parser.
* src/scan-gram.l: Scan new PERCENT_PUSH_PARSER token.
* tests/calc.at (_AT_CHECK_CALC_ERROR): Add "Return" and "Now" to
list of removed lines from the traces observed.
(AT_CHECK_CALC_LALR): Added push parser tests.

18 years agoVersion 2.3a.
Paul Eggert [Wed, 13 Sep 2006 19:42:04 +0000 (19:42 +0000)] 
Version 2.3a.

18 years ago* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Remove
Paul Eggert [Wed, 13 Sep 2006 19:39:14 +0000 (19:39 +0000)] 
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Remove
"#define YYSTYPE int" that caused "make maintainer-check" to fail
due to header ordering dependencies.  I don't know why the #define
was there.

18 years agoRemove bogus comments.
Paul Eggert [Wed, 13 Sep 2006 18:44:47 +0000 (18:44 +0000)] 
Remove bogus comments.

18 years agoFix typo in previous patch; YYCDEBUG was defined in the wrong section.
Paul Eggert [Wed, 13 Sep 2006 18:37:24 +0000 (18:37 +0000)] 
Fix typo in previous patch; YYCDEBUG was defined in the wrong section.

18 years agoFix glr.cc and lalr1.cc's use of YYDEBUG so that there's zero
Paul Eggert [Wed, 13 Sep 2006 17:41:19 +0000 (17:41 +0000)] 
Fix glr.cc and lalr1.cc's use of YYDEBUG so that there's zero
runtime cost when YYDEBUG is not defined, and so that some tests
that used to fail now work.  Problem and initial suggestion by
Paolo Bonzini.
* data/c++.m4 (b4_parse_param_cons): Omit leading ','.
* data/glr.cc (b4_parser_class_name):
Initialize yycdebug_ only if YYDEBUG.  Also, initialize yydebug_.
(debug_level, set_debug_level): Affect yydebug_, not ::yydebug.
(yydebug_) [YYDEBUG]: New member.
(yycdebug_): Now defined only if YYDEBUG.
* data/lalr1.cc (yydebug_, yycdebug_): Now defined only if YYDEBUG.
(YYCDEBUG) [!YYDEBUG]: Don't use yydebug_ and yycdebug_.
(b4_parser_class_name): Initialize yydebug_ and yycdebug_ only
if YYYDEBUG.
(debug_stream, set_debug_stream, debug_level, set_debug_level):
Define only if YYDEBUG.
* tests/calc.at (_AT_DATA_CALC_Y) [!YYDEBUG]: Omit call to
set_debug_level.
* tests/regression.at (_AT_DATA_DANCER_Y) [!YYDEBUG]: Likewise.
* tests/calc.at (AT_CHECK_CALC_GLR_CC): Uncomment calls to
AT_CHECK_CALC_GLR_CC that are working now.

18 years ago* data/glr.cc (YYERROR_VERBOSE, YYTOKEN_TABLE): Remove.
Paul Eggert [Tue, 12 Sep 2006 17:46:34 +0000 (17:46 +0000)] 
* data/glr.cc (YYERROR_VERBOSE, YYTOKEN_TABLE): Remove.

18 years ago* data/c.m4 (b4_null, b4_case): Define.
Paul Eggert [Tue, 12 Sep 2006 17:26:02 +0000 (17:26 +0000)] 
* data/c.m4 (b4_null, b4_case): Define.
* src/output.c (prepare_symbols): Use b4_null.
(user_actions_output): Use b4_case.

18 years ago* data/glr.c (b4_shared_declarations): Put start-header first,
Paul Eggert [Mon, 11 Sep 2006 18:56:58 +0000 (18:56 +0000)] 
* data/glr.c (b4_shared_declarations): Put start-header first,
before any #includes that we generate, so that feature-test
macros work.  Problem reported by Michael Deutschmann in
<http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00004.html>.
* data/lalr1.cc: Likewise.
* doc/bison.texinfo (Prologue): Document that feature-test macros
should be defined before any Bison declarations.
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Put defns
that depend on location.hh after, not before, Bison decls, since
we now include location.hh after the first user prologue.

18 years agoAdd argmatch.m4. Remove obstack.m4, strerror_r.m4.
Paul Eggert [Mon, 11 Sep 2006 18:53:47 +0000 (18:53 +0000)] 
Add argmatch.m4.  Remove obstack.m4, strerror_r.m4.
This adjusts to recent gnulib changes.

18 years agoFix typo: "&" should be "&&". Problem reported
Paul Eggert [Mon, 11 Sep 2006 18:48:21 +0000 (18:48 +0000)] 
Fix typo: "&" should be "&&".  Problem reported
by Jim Meyering.

18 years ago* doc/bison.texinfo (Calc++ Parser): Fix memory leak reported by
Paul Eggert [Mon, 11 Sep 2006 18:02:10 +0000 (18:02 +0000)] 
* doc/bison.texinfo (Calc++ Parser): Fix memory leak reported by
Sander Brandenburg in
<http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00002.html>.
Also, fix minor white space and comment issues.

18 years agoFinish implementation of per-type %destructor/%printer. Discussed
Joel E. Denny [Mon, 4 Sep 2006 22:20:52 +0000 (22:20 +0000)] 
Finish implementation of per-type %destructor/%printer.  Discussed
starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-02/msg00064.html>
and
<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00091.html>.
* NEWS (2.3+): Add a description of this feature to the default
%destructor/%printer description.
* doc/bison.texinfo (Freeing Discarded Symbols): Likewise.
* src/symlist.c (symbol_list_destructor_set, symbol_list_printer_set):
Invoke semantic_type_destructor_set or semantic_type_printer_set when a
list node contains a semantic type.
* src/symtab.c, src/symtab.h: Extend with a table that associates
semantic types with their %destructor's and %printer's.
(semantic_type_from_uniqstr, semantic_type_get,
semantic_type_destructor_set, semantic_type_printer_set): New functions
composing the public interface of that table.
(symbol_destructor_get, symbol_destructor_location_get,
symbol_printer_get, symbol_printer_location_get):  If there's no
per-symbol %destructor/%printer, look up the per-type before trying
the default.
* tests/actions.at (Per-type %printer and %destructor): New test case.
* tests/input.at (Default %printer and %destructor redeclared):
Extend to check that multiple occurrences of %symbol-default in a
single %destructor/%printer declaration is an error.
(Per-type %printer and %destructor redeclared, Unused values with
per-type %destructor): New test cases.

18 years agoRequire default %destructor/%printer to be declared using
Joel E. Denny [Mon, 4 Sep 2006 19:29:29 +0000 (19:29 +0000)] 
Require default %destructor/%printer to be declared using
%symbol-default instead of an empty symbol list, and start working on
new per-type %destructor/%printer.  Discussed at
<http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00007.html>.
* NEWS (2.3+): Add %symbol-default to example.
* bison.texinfo (Freeing Discarded Symbols): Likewise.
(Bison Symbols): Add entry for %symbol-default.
* src/parse-gram.y (PERCENT_SYMBOL_DEFAULT): New token.
(generic_symlist, generic_symlist_item): New nonterminals for creating
a list in which each item is a symbol, semantic type, or
%symbol-default.
(grammar_declaration): Use generic_symlist in %destructor and %printer
declarations instead of symbols.1 or an empty list.
(symbol_declaration, precedence_declaration, symbols.1): Update actions
for changes to symbol_list.
* src/reader.c: Update for changes to symbol_list.
* src/scan-code.l: Likewise.
* src/scan-gram.l: Scan new PERCENT_SYMBOL_DEFAULT token.
* src/symlist.c, src/symlist.h: Extend such that a list node may
represent a semantic type or a %symbol-default in addition to just an
ordinary symbol.  Add switched functions for setting %destructor's and
%printer's.
* tests/actions.at, tests/input.at: Add %symbol-default to all default
%destructor/%printer declarations.

18 years agoWhether the default %destructor/%printer applies to a particular symbol
Joel E. Denny [Thu, 24 Aug 2006 01:26:07 +0000 (01:26 +0000)] 
Whether the default %destructor/%printer applies to a particular symbol
isn't a question of whether the user *declares* that symbol (in %token,
for example).  It's a question of whether the user by any means
*defines* the symbol at all (by simply using a char token, for
example).  $end is defined by Bison whereas any other token with token
number 0 is defined by the user.  The error token is always defined by
Bison regardless of whether the user declares it with %token, but we
may one day let the user define error as a nonterminal instead.
* NEWS (2.3+): Say "user-defined" instead of "user-declared".
* doc/bison.texinfo (Freeing Discarded Symbols): Likewise, and document
the meaning of "user-defined".
* tests/actions.at (Default %printer and %destructor for user-declared
end token): Rename to...
(Default %printer and %destructor for user-defined end token): ...
this.

* src/symtab.c (symbol_destructor_get, symbol_printer_get): In the
computation of whether to apply the default, don't maintain a list of
every Bison-defined symbol.  Instead, just check for a first character
of '$', which a user symbol cannot have, and check for the error token.

18 years agoDon't apply the default %destructor or %printer to the error token,
Joel E. Denny [Mon, 21 Aug 2006 21:53:18 +0000 (21:53 +0000)] 
Don't apply the default %destructor or %printer to the error token,
$undefined, or $accept.  This change fits the general rule that the
default %destructor and %printer are only for user-declared symbols,
and it solves several difficulties that are described in the new test
cases listed below.
* src/symtab.c (symbol_destructor_get, symbol_printer_get): Implement.
* tests/actions.at (Default %printer and %destructor are not for error
or $undefined, Default %printer and %destructor are not for $accept):
New test cases.

18 years agoAllow %start after the first rule.
Joel E. Denny [Sun, 20 Aug 2006 03:10:18 +0000 (03:10 +0000)] 
Allow %start after the first rule.
* src/reader.c (grammar_current_rule_begin): Don't set the start symbol
when parsing the first rule.
(check_and_convert_grammar): Search for it here after all grammar
declarations have been parsed.  Skip midrules, which have dummy LHS
nonterminals.
* src/symtab.c (symbol_is_dummy): New function.
* src/symtab.h (symbol_is_dummy): Declare it.
* tests/input.at (%start after first rule): New test.

18 years agoRedo some of the previous commit: add back the ability to use
Joel E. Denny [Fri, 18 Aug 2006 21:43:18 +0000 (21:43 +0000)] 
Redo some of the previous commit: add back the ability to use
non-aliased/undeclared string literals since it might be useful to
those declaring %token-table.
* src/reader.c (check_and_convert_grammar): Undo changes in previous
commit: don't worry about complaints from symbols_pack.
* src/symtab.c (symbol_new, symbol_class_set,
symbol_check_alias_consistency): Undo changes in previous commit: count         each string literal as a new symbol and token, assign it a symbol
number, and don't complain about non-aliased string literals.
(symbols_pack): Since symbol_make_alias still does not decrement symbol
and token counts but does still set aliased tokens to the same number,
symbol_pack_processor now leaves empty slots in the symbols array.
Remove those slots.
* tests/regression.at (Undeclared string literal): Remove test case
added in previous commit since non-aliased string literals are allowed
again.
(Characters Escapes, Web2c Actions): Undo changes in previous commit:
remove unnecessary string literal declarations.
* tests/sets.at (Firsts): Likewise.

18 years agoDon't allow an undeclared string literal, but allow a string literal to
Joel E. Denny [Fri, 18 Aug 2006 10:25:50 +0000 (10:25 +0000)] 
Don't allow an undeclared string literal, but allow a string literal to
be used before its declaration.
* src/reader.c (check_and_convert_grammar): Don't invoke packgram if
symbols_pack complained.
* src/symtab.c (symbol_new): Don't count a string literal as a new
symbol.
(symbol_class_set): Don't count a string literal as a new token, and
don't assign it a symbol number since symbol_make_alias does that.
(symbol_make_alias): It's not necessary to decrement the symbol and
token counts anymore.  Don't assume that an alias declaration occurs
before any uses of the identifier or string, and thus don't assert that
one of them has the highest symbol number so far.
(symbol_check_alias_consistency): Complain if there's a string literal
that wasn't declared as an alias.
(symbols_pack): Bail if symbol_check_alias_consistency failed since
symbol_pack asserts that every token has been assigned a symbol number
although undeclared string literals have not.
* tests/regression.at (String alias declared after use, Undeclared
string literal): New test case.
(Characters Escapes, Web2c Actions): Declare string literals as
aliases.
* tests/sets.at (Firsts): Likewise.

18 years agoUndo last commit.
Joel E. Denny [Mon, 14 Aug 2006 22:40:33 +0000 (22:40 +0000)] 
Undo last commit.

18 years ago* src/scan-gram.l (braces_level, context_state): Make these globals
Joel E. Denny [Mon, 14 Aug 2006 21:06:05 +0000 (21:06 +0000)] 
* src/scan-gram.l (braces_level, context_state): Make these globals
static.

18 years agoIn the grammar scanner, STRING_FINISH unclosed constructs and return
Joel E. Denny [Mon, 14 Aug 2006 20:51:33 +0000 (20:51 +0000)] 
In the grammar scanner, STRING_FINISH unclosed constructs and return
them to the parser in order to improve error messages.
* src/scan-gram.l (SC_ESCAPED_STRING, SC_ESCAPED_CHARACTER,
SC_BRACED_CODE, SC_PROLOGUE): Implement.
* tests/input.at (Unclosed constructs): New test case.
* tests/regression.at (Invalid inputs): Update now that unclosed %{ is
seen.

* src/scan-gram.h, src/scan-gram.l (gram_last_braced_code_loc): Remove
unused global.

18 years agoHandle string aliases for character tokens correctly.
Joel E. Denny [Mon, 14 Aug 2006 00:34:17 +0000 (00:34 +0000)] 
Handle string aliases for character tokens correctly.
* src/symtab.c (symbol_user_token_number_set): If the token has an
alias, check and set its alias's user token number instead of its own,
which is set to indicate the alias.  Previously, every occurrence of
the character token in the grammar overwrote that alias indicator with
the character code.
* tests/input.at (String aliases for character tokens): New test.

18 years ago* src/parse-gram.y: Add `%expect 0' so we don't overlook conflicts.
Joel E. Denny [Sun, 13 Aug 2006 03:18:15 +0000 (03:18 +0000)] 
* src/parse-gram.y: Add `%expect 0' so we don't overlook conflicts.

18 years ago* bootstrap: Put in need-ngettext argument to AM_GNU_GETTEXT,
Paul Eggert [Fri, 11 Aug 2006 20:52:55 +0000 (20:52 +0000)] 
* bootstrap: Put in need-ngettext argument to AM_GNU_GETTEXT,
to prevent failures when building on older platforms.
Check for autopoint failure.
Set XGETTEXT_OPTIONS to values that check for C format strings,
so that translators are warned about them (this also helps
prevent core dumps).

18 years ago* lib/subpipe.c (create_subpipe): Use new gnulib pipe_safer
Paul Eggert [Fri, 11 Aug 2006 20:30:38 +0000 (20:30 +0000)] 
* lib/subpipe.c (create_subpipe): Use new gnulib pipe_safer
function, since it simplifies our code a bit.

18 years ago* configure.ac (AC_ARG_ENABLE): Use -Wextra -Wno-sign-compare
Paul Eggert [Fri, 11 Aug 2006 19:50:14 +0000 (19:50 +0000)] 
* configure.ac (AC_ARG_ENABLE): Use -Wextra -Wno-sign-compare
rather than -W, so we don't get bogus warnings about sign comparisons.
Add -Wpointer-arith, since that warning is useful (it reports code
that does not conform to C89 and that some compilers reject).
* data/c.m4, data/glr.c, data/lalr1.cc, data/yacc.c: Undo latest change,
since it's no longer needed.

18 years agoClean up scanners a bit.
Joel E. Denny [Thu, 10 Aug 2006 04:53:04 +0000 (04:53 +0000)] 
Clean up scanners a bit.
* src/flex-scanner.h (FLEX_NO_OBSTACK): New macro that blocks obstack
definitions so gcc won't warn when obstack_for_string is unused.
* src/scan-code.l: config.h and system.h are already #include'd by
scan-code-c.c, so get rid of them here.
* src/scan-gram.l: Likewise.
* src/scan-skel.l: Likewise, and use flex-scanner.h without obstack
definitions rather than duplicating the rest of it.
* src/scan-gram-c.c, scan-skel-c.c: #include "system.h".

18 years agoSuppress signed/unsigned comparison warnings for yycheck.
Joel E. Denny [Thu, 10 Aug 2006 01:18:50 +0000 (01:18 +0000)] 
Suppress signed/unsigned comparison warnings for yycheck.
* data/c.m4 (b4_safest_int_type): New macro.
* data/glr.c, data/lalr1.cc: Wherever you compare yycheck[i] against
a signed int type, cast it to b4_safest_int_type first.
* data/yacc.c: Likewise.
(b4_safest_int_type): Overwrite the one from c.m4 since b4_int_type is
also overwritten.

18 years ago* doc/bison.texinfo: Fix some typos.
Paul Eggert [Wed, 9 Aug 2006 17:13:46 +0000 (17:13 +0000)] 
* doc/bison.texinfo: Fix some typos.

18 years ago* m4/.cvsignore: Add inttypes_h.m4,lib-ld.m4, lib-prefix.m4,
Paul Eggert [Wed, 2 Aug 2006 05:13:20 +0000 (05:13 +0000)] 
* m4/.cvsignore: Add inttypes_h.m4,lib-ld.m4, lib-prefix.m4,
po.m4, stdint_h.m4, uintmax_t.m4, ulonglong.m4, warning.m4.

* bootstrap (gnulib_tool): Stop using --assume-autoconf;
the latest gnulib does this a different way.
(get_translations): Sharuzzaman Ahmat Raslan reported that the ms
translation was patched, so stop omitting it.

18 years agoEnable declaration of default %printer/%destructor. Make the parser
Joel E. Denny [Sat, 29 Jul 2006 05:53:42 +0000 (05:53 +0000)] 
Enable declaration of default %printer/%destructor.  Make the parser
use these for all user-declared grammar symbols for which the user does
not declare a specific %printer/%destructor.  Thus, the parser uses it
for token 0 if the user declares it but not if Bison generates it as
$end.  Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-02/msg00064.html>,
<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00091.html>,
and
<http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00019.html>.
* NEWS (2.3+): Mention.
* doc/bison.texinfo (Actions in Mid-Rule): It's no longer impossible to
declare a %destructor for a mid-rule's semantic value.  It's just
impossible to declare one specific to it.
(Freeing Discarded Symbols): Mention that @$ can be used in %destructor
code.  Describe default %destructor form.
* src/parse-gram.y (grammar_declaration): Parse default
%printer/%destructor declarations.
* src/output.c (symbol_destructors_output): Use symbol_destructor_get
and symbol_destructor_location_get rather than accessing the destructor
and destructor_location members of struct symbol.
(symbol_printers_output): Likewise but for %printer's.
* src/reader.c (symbol_should_be_used): Likewise but for %destructor's
again.
* src/symtab.c (default_destructor, default_destructor_location,
default_printer, default_printer_location): New static global
variables to record the default %destructor and %printer.
(symbol_destructor_get, symbol_destructor_location_get,
symbol_printer_get, symbol_printer_location_get): New functions to
compute the appropriate %destructor and %printer for a symbol.
(default_destructor_set, default_printer_set): New functions to set the
default %destructor and %printer.
* src/symtab.h: Prototype all those new functions.
* tests/actions.at (Default %printer and %destructor): New test to
check that the right %printer and %destructor are called, that they're
not called for $end, and that $$ and @$ work correctly.
(Default %printer and %destructor for user-declared end token): New
test to check that the default %printer and %destructor are called for
a user-declared end token.
* tests/input.at (Default %printer and %destructor redeclared, Unused
values with default %destructor): New tests to check related grammar
warnings and errors.

18 years agoClean up handling of %destructor for the end token (token 0).
Joel E. Denny [Sat, 29 Jul 2006 04:11:33 +0000 (04:11 +0000)] 
Clean up handling of %destructor for the end token (token 0).
Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00019.html>
and
<http://lists.gnu.org/archive/html/help-bison/2006-07/msg00013.html>.

Make the skeletons consistent in how they pop the end token and invoke
its %destructor.
* data/glr.c (yyrecoverSyntaxError, yyparse): Don't pop the start
state, which has token number 0, since this would invoke the
%destructor for the end token.
* data/lalr1.cc (yy::parser::parse): Don't check for the final state
until after shifting the end token, or else it won't be popped.
* data/yacc.c (yyparse): Likewise.

* data/glr.c (yyparse): Clear the lookahead after shifting it even when
it's the end token.  Upon termination, destroy an unshifted lookahead
even when it's the end token.
* data/lalr1.cc (yy::parser::parse): Likewise.
* data/yacc.c (yyparse): Likewise.

* src/reader.c (packgram): Don't check rule 0.  This suppresses unused
value warnings for the end token when the user gives the end token a
%destructor.

* tests/actions.at (Printers and Destructors): Test all the above.

18 years agoUpdate to latest gnulib and gettext versions.
Paul Eggert [Tue, 25 Jul 2006 06:45:06 +0000 (06:45 +0000)] 
Update to latest gnulib and gettext versions.
* bootstrap (gnulib-modules): Remove hard-locale, stdio-safer.
Add fopen-safer.
(gnulib_files): Add m4/warning.m4.  Don't worry about files
overwritten by autopoint.
Replace gt_INTL_SUBDIR_CORE with an empty body in m4/gettext_gl.m4.
Suppress "id", "ms", "tr" translations for now, since gettext 0.15
rejects them.
Don't use autoreconf; instead, invoke autopoint etc. by hand,
so that we can remove the intl files at a better time.
(intl_files_to_remove): Remove aclocal.m4, since it gets
rebuilt anyway.  Remove m4/inttypes_h.m4, m4/inttypes.m4,
m4/isc-posix.m4, m4/lib-ld.m4, m4/lib-prefix.m4, m4/po.m4,
m4/stdint_h.m4, m4/uintmax_t.m4, m4/ulonglong.m4.
Add m4/inttypes-h.m4, m4/lock.m4, m4/visibility.m4.
Remove datarootdir hack; no longer needed.
* configure.ac: Use gl_WARNING_CFLAGS rather than BISON_WARNING.
(AM_GNU_GETTEXT_VERSION): Bump from 0.12 to 0.15.
* lib/.cvsignore: Remove hard-locale.c, hard-locale.h, strdup.c,
strdup.h.
* m4/.cvsignore: Remove hard-locale.m4, strdup.m4.
* m4/warning.m4: Remove from CVS, since we now use gnulib's version.

18 years ago* bootstrap: Adjust to today's change to gnulib-tool by invoking
Paul Eggert [Thu, 20 Jul 2006 16:55:12 +0000 (16:55 +0000)] 
* bootstrap: Adjust to today's change to gnulib-tool by invoking
it with --assume-autoconf='latest-stable'.

18 years ago* src/parse-gram.y (grammar_declaration): Don't confuse Doxygen (at
Joel E. Denny [Thu, 13 Jul 2006 20:05:34 +0000 (20:05 +0000)] 
* src/parse-gram.y (grammar_declaration): Don't confuse Doxygen (at
least 1.4.7 and 1.4.4) by putting a #line between `typedef union
YYSTYPE' and `{'.
* src/muscle_tab.h (muscle_grow): Replace the header comments with
those from muscle_tab.c since the old ones are misleading.

18 years agoSupport %define "KEY" {VALUE}.
Akim Demaille [Thu, 13 Jul 2006 08:12:00 +0000 (08:12 +0000)] 
Support %define "KEY" {VALUE}.
* src/scan-code.h, src/scan-code.l (translate_action)
(translate_rule_action, translate_symbol_action, translate_code):
Return char *, not const char *.
* src/parse-gram.y (declaration): Rename as...
(prologue_declaration): this.
(string_content): Remove this nonterminal, use STRING.
(braceless, content, content.opt): New nonterminal.
Use them.
(%define): Now accept content.opt, i.e., accept also BRACED_CODE
as value.
* src/scan-gram.l (getargs.h): Don't include it.

18 years ago* data/lalr1.cc (YYCDEBUG): Use 'if (yydebug_) (*yycdebug_)'
Paul Eggert [Wed, 12 Jul 2006 18:01:19 +0000 (18:01 +0000)] 
* data/lalr1.cc (YYCDEBUG): Use 'if (yydebug_) (*yycdebug_)'
rather than a for-loop that declares a local bool variable.

18 years ago* data/c.m4: Comment changes.
Akim Demaille [Wed, 12 Jul 2006 13:48:41 +0000 (13:48 +0000)] 
* data/c.m4: Comment changes.

18 years ago* src/complain.c (error_message, ERROR_MESSAGE): New.
Akim Demaille [Mon, 10 Jul 2006 19:36:31 +0000 (19:36 +0000)] 
* src/complain.c (error_message, ERROR_MESSAGE): New.
To factor...
(fatal_at, fatal, warn_at, warn, complain_at, complain): these.
* src/complain.h, src/complain.c (warning_issued): Remove, unused.

18 years agounless unless -> unless
Paul Eggert [Mon, 10 Jul 2006 00:37:25 +0000 (00:37 +0000)] 
unless unless -> unless

18 years agoRegenerate.
Paul Eggert [Sun, 9 Jul 2006 20:40:43 +0000 (20:40 +0000)] 
Regenerate.

18 years ago* NEWS: Instead of %union, you can define and use your own union type
Paul Eggert [Sun, 9 Jul 2006 20:36:33 +0000 (20:36 +0000)] 
* NEWS: Instead of %union, you can define and use your own union type
YYSTYPE if your grammar contains at least one <type> tag.
Your YYSTYPE need not be a macro; it can be a typedef.
* doc/bison.texinfo (Value Type, Multiple Types, Location Type):
(Union Decl, Decl Summary): Document this.
* data/glr.c (YYSTYPE): Implement this.
* data/glr.cc (YYSTYPE): Likewise.
* data/lalr1.cc (YYSTYPE): Likewise.
* data/yacc.c (YYSTYPE): Likewise.
* src/output.c (prepare): Output tag_seen_flag.
* src/parse-gram.y (declaration, grammar_declaration):
Use 'union_seen' rather than 'typed' to determine whether
%union has been seen, since grammars can now be typed without
%union.
(symbol_declaration, type.opt, symbol_def):
Keep track of whether a tag has been seen.
* src/reader.c (union_seen, tag_seen): New vars.
(typed): remove.
* src/reader.h (union_seen, tag_seen, typed): Likewise.
* src/scan-code.l (untyped_var_seen): New variable.
(handle_action_dollar): Adjust to above changes.
(handle_action_dollar, handle_action_at):
Improve overflow checking for outlandish numbers.
* tests/input.at (AT_CHECK_UNUSED_VALUES): Redo test to
avoid new diagnostics generated by above changes.
* tests/regression.at (YYSTYPE typedef): Add test to check
for type tags without %union.

18 years ago* src/symlist.c (symbol_list_length): Return int, not unsigned
Paul Eggert [Sun, 9 Jul 2006 19:55:15 +0000 (19:55 +0000)] 
* src/symlist.c (symbol_list_length): Return int, not unsigned
int, since callers expect int.

18 years ago(gram_scanner_cursor): Remove decl, since this
Paul Eggert [Sun, 9 Jul 2006 19:51:48 +0000 (19:51 +0000)] 
(gram_scanner_cursor): Remove decl, since this
object is now static.

18 years ago(flags_argmatch): Return void, not int,
Paul Eggert [Sun, 9 Jul 2006 19:48:45 +0000 (19:48 +0000)] 
(flags_argmatch): Return void, not int,
to pacify ./configure --enable-gcc-warnings.

18 years ago(STRING_FREE): Don't use FLEX_PREFIX (last_string)
Paul Eggert [Sun, 9 Jul 2006 19:44:34 +0000 (19:44 +0000)] 
(STRING_FREE): Don't use FLEX_PREFIX (last_string)
since last_string is already defined to FLEX_PREFIX (last_string).

18 years agoImplement --warnings/-W.
Akim Demaille [Sun, 9 Jul 2006 17:01:22 +0000 (17:01 +0000)] 
Implement --warnings/-W.
* src/getargs.c (report_argmatch, trace_argmatch): Remove,
replaced by...
(flags_argmatch, FLAGS_ARGMATCH): this new function and macro.
Adjust callers.
* src/getargs.h, src/getargs.c (warnings, warnings_flags)
(warnings_args, warnings_types): New.
(getargs, short_options, long_options): Accept -W/--warnings.
Sort the options by alphabetical order, upper case letter right
before its lower case.

18 years agoChange %merge result type clash warnings to errors. Discussed at
Joel E. Denny [Sun, 9 Jul 2006 16:38:31 +0000 (16:38 +0000)] 
Change %merge result type clash warnings to errors.  Discussed at
<http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00026.html>.
* src/reader.c (record_merge_function_type): Use complain_at.
* tests/glr-regression.at (Missed %merge type warnings when LHS type is
declared later): Update test case results.

18 years ago* src/getargs.h, src/getargs.c: Swap --report and --trace handling
Akim Demaille [Sun, 9 Jul 2006 15:38:42 +0000 (15:38 +0000)] 
* src/getargs.h, src/getargs.c: Swap --report and --trace handling
to be in alphabetical order.
(trace_args): Spelling fixes.

18 years ago* data/yacc.c (YYID, yy_stack_print): Prefix local vars with "yy"
Paul Eggert [Sun, 9 Jul 2006 07:38:12 +0000 (07:38 +0000)] 
* data/yacc.c (YYID, yy_stack_print): Prefix local vars with "yy"
so they don't collide with user-defined macros.
(yy_stack_print): Don't assume that yytype_int16 promotes to int;
this was never guaranteed, and now that we're using gnulib stdint,
which defines int_fast16_t to long int, the problem is exposed.

18 years ago* data/c.m4 (b4_basename): Simplify a bit, since we don't
Paul Eggert [Sun, 9 Jul 2006 04:39:10 +0000 (04:39 +0000)] 
* data/c.m4 (b4_basename): Simplify a bit, since we don't
need the full POSIX semantics (and weren't implementing them
anyway).

18 years agoRegenerate.
Paul Eggert [Sun, 9 Jul 2006 03:45:57 +0000 (03:45 +0000)] 
Regenerate.

18 years agoAdjust to Autoconf 2.60 and today's gnulib.
Paul Eggert [Sun, 9 Jul 2006 03:44:51 +0000 (03:44 +0000)] 
Adjust to Autoconf 2.60 and today's gnulib.
* bootstrap (gnulib_modules): Add stdint.
Remove special case for m4/onceonly_2_57.m4, since gnulib-tool
no longer copies it.
(intl_files_to_remove): Remove m4/longlong.m4 and m4/wchar_t.m4,
since stdint needs the former and wcwidth (which is now required
by mbswidth) needs the latter.
Append 'datarootdir = @datarootdir@' to po/Makefile.in.in, to
work around a compatibility glitch between gettext 0.14.6 and
Autoconf 2.60.
* configure.ac (AC_PREREQ): Require Autoconf 2.60.
Do not check for uintptr_t, since new stdint module does the right
thing.
* lib/.cvsignore: Remove alloca.c, alloca.h, alloca_.h.
Add stdint.h, stdint_.h, wcwidth.h.
* m4/.cvsignore: Remove alloca.m4, onceonly.m4.
Add absolute-header.m4, double-slash-root.m4, longlong.m4,
stdint.m4, wchar_t.m4, wcwidth.m4.
* src/files.c: Include <dirname.h> and <stdio-safer.h> in the
usual order for ../lib/*.h files.
(file_name_split): Use last_component, not base_name, to adjust
to gnulib changes.
* src/parse-gram.h: Include <strverscmp.h> in the usual order
for ../lib/*.h files.
(YYTYPE_INT16, YYTYPE_INT8, YYTYPE_UINT16, YYTYPE_UINT8):
Define unconditionally, since we now assume the stdint module.
* src/scan-skel.l: Include <dirname.h>.
(BASE_QPUTS): Use last_component, not base_name.
* src/system.h: Include <unlocked-io.h> in the usual order
for ../lib/*.h files.  Include <stdint.h> unconditionally,
since we now use the stdint module.
(uintptr_t): Declare if UINTPTR_MAX is not defined, not
HAVE_UINTPTR_T, since we now use the stdint module.
(base_name): Remove decl, since files now include <dirname.h>
to get the decl.

18 years ago* data/c.m4 (b4_location_initial_column, b4_location_initial_line):
Akim Demaille [Sat, 8 Jul 2006 20:38:14 +0000 (20:38 +0000)] 
* data/c.m4 (b4_location_initial_column, b4_location_initial_line):
New, default to 1.
* data/yacc.c, data/glr.c, data/location.cc: Use them.
* NEWS, doc/bison.texinfo: The initial column and line are 1 by
default.
* tests/calc.at: Adjust.

18 years ago* data/c.m4 (b4_dirname): New.
Akim Demaille [Sat, 8 Jul 2006 14:24:56 +0000 (14:24 +0000)] 
* data/c.m4 (b4_dirname): New.
(b4_syncline): Also output the location of its invocation (from
the skeleton).
(b4_user_action, b4_define_user_action, b4_user_actions)
(b4_user_initial_action, b4_user_post_prologue, b4_user_start_header)
(b4_user_stype): New.
* data/yacc.c, data/glr.c, data/lalr1.cc, data/glr.cc: Use them.

18 years agoIn the grammar file, the first column is 1 not 0 on the first line as
Joel E. Denny [Sat, 8 Jul 2006 00:02:04 +0000 (00:02 +0000)] 
In the grammar file, the first column is 1 not 0 on the first line as
on every other line.
* src/parse-gram.y (%initial-action): Initialize @$ correctly.
* tests/input.at (Torturing the Scanner): Update output.

* src/scan-gram.l (scanner_cursor): Declare it static.

18 years agoIn warnings, say "previous declaration" rather than "first
Joel E. Denny [Fri, 7 Jul 2006 21:25:03 +0000 (21:25 +0000)] 
In warnings, say "previous declaration" rather than "first
declaration".
* src/symtab.c (redeclaration): Do that here.
* src/reader.c (record_merge_function_type): In the case of a result
type clash, report the previous declaration rather than the very first
one in the grammar file.
* tests/glr-regression.at (Missed %merge type warnings when LHS type is
declared later): Add a third declaration to check this behavior.
* tests/input.at (Incompatible Aliases): Update output.

18 years ago* ChangeLog: Add mailing list references to some of the 2006-06-26 patches.
Joel E. Denny [Fri, 7 Jul 2006 19:43:33 +0000 (19:43 +0000)] 
* ChangeLog: Add mailing list references to some of the 2006-06-26 patches.

18 years ago* doc/Doxyfile.in: New.
Akim Demaille [Tue, 27 Jun 2006 14:09:54 +0000 (14:09 +0000)] 
* doc/Doxyfile.in: New.
* doc/Makefile.am: Use it.
* src/lalr.h, src/symtab.h: Initial doxygenation.

18 years agoDon't miss %merge result type warnings just because the LHS types are
Joel E. Denny [Mon, 26 Jun 2006 04:45:24 +0000 (04:45 +0000)] 
Don't miss %merge result type warnings just because the LHS types are
declared after the %merge.
* src/reader.c (get_merge_function): Don't set the merger type yet.
(record_merge_function_type): New function for setting the merger type
and checking for clashes.
(grammar_current_rule_merge_set): Set the location of the %merge for
the current rule.
(packgram): Invoke record_merge_function_type for each rule now that
all symbol type declarations have been parsed.
* src/reader.h (merger_list.type_declaration_location): New member
storing the location of the first %merge from which the type for this
merging function was derived.
* src/symlist.h (symbol_list.merger_declaration_location): New member
storing the location of a rule's %merge, if any.
* tests/glr-regression.at (Missed %merge type warnings when LHS type is
declared later): New test to catch the error fixed by the above patch.

18 years agoFix code formatting.
Joel E. Denny [Mon, 26 Jun 2006 04:29:34 +0000 (04:29 +0000)] 
Fix code formatting.

18 years agoGet action warnings (grammar_rule_check) right even when symbol
Joel E. Denny [Mon, 26 Jun 2006 04:16:50 +0000 (04:16 +0000)] 
Get action warnings (grammar_rule_check) right even when symbol
declarations appear after the rules.  Don't mistake the type of $$ in
a midrule to be that of its parent rule's $$.
* src/reader.c (grammar_current_rule_end): Don't invoke
grammar_rule_check yet since not all symbol declarations may have been
parsed yet.
(grammar_midrule_action): Likewise.
Don't record whether the midrule's $$ has been used yet since actions
haven't been translated yet.
Record the midrule's parent rule and its RHS index within the parent
rule.
(grammar_current_rule_action_append): Don't translate the action yet
since not all symbol declarations may have been parsed yet and, thus,
warnings about types for $$, $n, @$, and @n can't be reported yet.
(packgram): Translate the action and invoke grammar_rule_check now that
all symbol declarations have been parsed.
* src/scan-code.l (handle_action_dollar): Now that this is invoked
after parsing the entire grammar file, the symbol list here in the case
of a midrule is actually the midrule's empty RHS, so reference its
parent rule's RHS where necessary.
On the other hand, now that you can already know it's a midrule, you
aren't forced to think $$ has the same type as its parent rule's $$.
(handle_action_at): In the case of a midrule, reference the parent rule
where necessary.
* src/symlist.c (symbol_list_new): Initialize new midrule-related
members.
(symbol_list_length): Now that this is invoked after all rules have
been parsed, a NULL symbol (rather than a NULL symbol list node)
terminates a rule.  symbol_list_print already does this correctly.
* src/symlist.h (symbol_list.midrule_parent_rule,
symbol_list.midrule_parent_rhs_index): New members so that midrules can
remember their relationships with their parents.
* tests/input.at (Type Clashes): Extend to catch the midrule $$ error
fixed by the above patch.
(_AT_UNUSED_VALUES_DECLARATIONS, AT_CHECK_UNUSED_VALUES): New m4 macros
implementing...
(Unused values): ... this old test case and...
(Unused values before symbol declarations): ... this new test case.
This one is the same as `Unused values' except that all symbol
declarations appear after the rules in order to catch the rest of the
errors fixed by the above patch.

18 years agoFix formatting in most recent entry.
Joel E. Denny [Mon, 26 Jun 2006 03:35:27 +0000 (03:35 +0000)] 
Fix formatting in most recent entry.

18 years agoMore cleanup.
Joel E. Denny [Mon, 26 Jun 2006 03:28:57 +0000 (03:28 +0000)] 
More cleanup.
* src/reader.c (current_rule): Declare it static since it's no longer
used outside this file.
(grammar_current_rule_action_append): Remove redundant arguments from
translate_rule_action invocation.
* src/reader.h (current_rule): Remove this unused extern.
* src/scan-code.h (translate_rule_action): Remove redundant arguments.
* src/scan-code.l (translate_rule_action): Likewise.

18 years agoClean up yesterday's patch.
Joel E. Denny [Sun, 25 Jun 2006 06:59:54 +0000 (06:59 +0000)] 
Clean up yesterday's patch.
* parse-gram.y (rhs): Move grammar_midrule_action invocation from here
to...
* src/reader.c (grammar_current_rule_action_append): ... here for
consistency with grammar_current_rule_symbol_append.
* tests/regression.at (Braced code in declaration in rules section):
Make yyerror and yylex static as usual.

18 years agoFix bug that mistakes braced code in a declaration in the rules section
Joel E. Denny [Sat, 24 Jun 2006 06:51:27 +0000 (06:51 +0000)] 
Fix bug that mistakes braced code in a declaration in the rules section
to be a rule action.  Mentioned at
<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00105.html>.
* src/scan-gram.l: Move midrule action detection from the start of the
scanning of any braced code to...
* src/parse-gram.y (rhs): ... the parsing of braced code as a rule
action.  For readability, use $2 and @2 rather than the equivalent
global variables.
* tests/regression.at (Braced code in declaration in rules section):
New test to catch the error fixed by the above patch.

Work on code readability some.
* src/scan-code.l (current_rule): Get rid of this misleading and
redundant declaration: it's actually extern'ed in reader.h.
(YY_DECL, code_lex, handle_action_dollar, handle_action_at,
translate_action): Add a rule argument and use it instead of the global
current_rule.
(translate_rule_action): This already receives current_rule through an
argument, so pass it on to translate_action instead of assigning
current_rule to current_rule.
(translate_symbol_action, translate_code): Pass rule = NULL to
translate_action.

18 years agoRename %before-definitions to %start-header and %after-definitions to
Joel E. Denny [Fri, 23 Jun 2006 20:17:28 +0000 (20:17 +0000)] 
Rename %before-definitions to %start-header and %after-definitions to
%end-header.  Don't use these declarations to separate pre-prologue
blocks from post-prologue blocks.  Add new order-independent
declarations %before-header and %after-header as alternatives to the
traditional Yacc pre-prologue and post-prologue blocks.  Discussed at
<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00110.html>.
* NEWS (2.3+): Update for these changes.
* data/glr.c (b4_before_definitions): Update to...
(b4_start_header): ... this.
(b4_after_definitions): Update to...
(b4_end_header): ... this.
* data/glr.cc: Likewise.
* data/lalr1.cc: Likewise.
* data/yacc.c: Likewise.
* doc/bison.texinfo (The prologue): Update names, and replace remaining
prologue blocks with %*-header declarations.
(Calc++ Parser): Likewise.
(Bison Declaration Summary): Update names.
(Bison Symbols): Update description.
* src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to...
(PERCENT_END_HEADER): ... this.
(PERCENT_BEFORE_DEFINITIONS): Update to...
(PERCENT_START_HEADER): ... this.
(PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
(declaration): Update token names and m4 macro names.
When parsing %end-header and %start-header, invoke translate_code
before muscle_code_grow, and no longer set global booleans to remember
whether these declarations have been seen.
Parse new %after-header and %before-header.
* src/reader.c (before_definitions, after_definitions): Remove.
(prologue_augment): Accept a new bool argument to specify whether to
augment the pre-prologue or post-prologue.
* src/reader.h (before_definitions, after_definitions): Remove these
extern's.
(prologue_augment): Add new bool argument.
* src/scan-gram.l (PERCENT_AFTER_DEFINITIONS): Update to...
(PERCENT_END_HEADER): ... this.
(PERCENT_BEFORE_DEFINITIONS): Update to...
(PERCENT_START_HEADER): ... this.
(PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
* tests/actions.at (Printers and Destructors): Update names.

18 years agoAdd comparison operators for C++ location classes. Discussed at
Joel E. Denny [Thu, 22 Jun 2006 19:46:05 +0000 (19:46 +0000)] 
Add comparison operators for C++ location classes.  Discussed at
<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00092.html>.
* data/c++.m4 (b4_define_location_comparison): New boolean %define
declaration indicating whether filename_type has an operator==.  If
filename_type is `std::string', it defaults to `1', `0' otherwise.
* data/location.cc: Iff b4_define_location_comparison is `1', add
operator== and operator!= for class position and for class location.

Some minor fixes.
* src/scan-action.l: Remove unused file.
* src/symtab.c (symbol_printer_set): Use printer_location not
destructor_location.
* src/symtab.h (struct symbol): Replace incorrect source comment for
printer members.
* tests/input.at (Incompatible Aliases): Update output with correct
printer location.

18 years agoDon't put the pre-prologue in the header file. For the yacc.c code
Joel E. Denny [Wed, 21 Jun 2006 01:37:01 +0000 (01:37 +0000)] 
Don't put the pre-prologue in the header file.  For the yacc.c code
file and the glr.c header and code files, move the pre-prologue before
the token definitions.  Add new %before-definitions and
%after-definitions to declare code that will go in both the header file
and code file.  Discussed at
<http://lists.gnu.org/archive/html/bison-patches/2005-12/msg00000.html>,
<http://lists.gnu.org/archive/html/bison-patches/2006-01/msg00016.html>,
and
<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00055.html>.
* NEWS (2.3+): Describe these changes.
* data/glr.c (b4_pre_prologue): Move from within to before...
(b4_shared_declarations): ... this.
Add new b4_before_definitions before b4_token_enums.
Add new b4_after_definitions at the end.
* data/glr.cc (b4_pre_prologue): Replace with...
(b4_before_definitions): ... this in the header file.
(b4_after_definitions): New near the end of the header file.
* data/lalr1.cc (b4_pre_prologue): Move from the header file to the
code file right before including the header file.
(b4_before_definitions): New in the previous position of
b4_pre_prologue in the header file.
(b4_after_definitions): New near the end of the header file.
* data/yacc.c: Clean up some m4 quoting especially in the header file.
(b4_token_enums_defines): In the code file, move to right before
YYSTYPE for consistency with the header file.
(b4_before_definitions): New right before b4_token_enums_defines in
both the header and code file.
(b4_after_definitions): New right after YYLTYPE and yylloc in both the
header and code file.
* doc/bison.texinfo (Prologue): Show use of %before-definitions instead
of prologues for %union dependencies.
(Bison Declaration Summary): In %defines description, mention the
effect of %before-definitions and %after-definitions on the header
file.
(Calc++ Parser): Forward declare driver in a %before-definitions rather
than in the pre-prologue so that make check succeeds.
(Bison Symbols): Add entries for %before-definitions and
%after-definitions.
* src/parse-gram.y (PERCENT_BEFORE_DEFINITIONS): New token for
%before-definitions.
(PERCENT_AFTER_DEFINITIONS): New token for %after-definitions.
(declaration): Parse those declarations and append to
b4_before_definitions and b4_after_definitions, respectively.
* src/reader.c (before_definitions, after_definitions): New bools to
track whether those declarations have been seen.
(prologue_augment): Add to the post-prologue if %union,
%before-definitions, or %after-definitions has been seen.
* src/reader.h (before_definitions, after_definitions): New extern's.
* src/scan-gram.l: Scan the new declarations.
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Place the second
prologue block in a %before-definitions or a %after-definitions based
on whether the %union is declared.
* tests/regression.at (Early token definitions with --yacc, Early token
definitions without --yacc): Move tests for token definitions into the
post-prologue since token names are no longer defined in the
pre-prologue.

18 years ago* src/symtab.h, src/symtab.c (symbol_from_uniqstr): New.
Akim Demaille [Tue, 20 Jun 2006 11:39:22 +0000 (11:39 +0000)] 
* src/symtab.h, src/symtab.c (symbol_from_uniqstr): New.
(symbol_get): Use it.
* src/parse-gram.y: Use it.

18 years agoInstall these changes:
Akim Demaille [Tue, 20 Jun 2006 11:32:19 +0000 (11:32 +0000)] 
Install these changes:
* data/c.m4 (b4_union_name): Leave a default value.
* data/glr.c, data/yacc.c: Use it.

18 years ago* src/scan-gram.l: Remove unused declaration of last_string_1 so the
Joel E. Denny [Mon, 19 Jun 2006 22:31:33 +0000 (22:31 +0000)] 
* src/scan-gram.l: Remove unused declaration of last_string_1 so the
build succeeds when configured with --enable-gcc-warnings.

18 years agoRegenerate.
Paul Eggert [Mon, 19 Jun 2006 21:33:59 +0000 (21:33 +0000)] 
Regenerate.

18 years ago* src/parse-gram.y (char_name): New function.
Paul Eggert [Mon, 19 Jun 2006 21:32:41 +0000 (21:32 +0000)] 
* src/parse-gram.y (char_name): New function.
(CHAR, STRING, string_content): For %printer, properly escape.
(ID): Prefer fputs to fprintf.
(id): Reindent to be consistent with other rules.
Properly quote char.

18 years ago* bootstrap (TP_URL, WGET_COMMAND): New vars.
Paul Eggert [Mon, 19 Jun 2006 20:33:13 +0000 (20:33 +0000)] 
* bootstrap (TP_URL, WGET_COMMAND): New vars.
(get_translations): New function, which uses HTML scraping to
deduce locations of latest translations.
Use this function to grab both bison and bison-runtime .po files.
Don't bother priming the pump for the runtime-po domain any more,
as it's now translated better than bison is.

18 years ago* src/scan-gram.l: No longer "parse" things after `%union' until
Akim Demaille [Mon, 19 Jun 2006 16:49:44 +0000 (16:49 +0000)] 
* src/scan-gram.l: No longer "parse" things after `%union' until
`{'.  Rather, return a single "%union" token.
No longer make symbols: return strings, and leave the conversion
to symbols to the parser.
(SC_PRE_CODE, token_type): Remove.
* src/parse-gram.y (%union): New field `character'.
Sort tokens.
(CHAR): New token.
(ID, ID_COLON): Now that the scanner no longer makes them
identifiers, adjust all uses to invoke symbol_get.
(id_colon): New, wraps the conversion from string to symbol.
(%union): Accept a possible union_name.
(symbol): Now can be a char.
* data/c.m4 (b4_union_name): Leave a default value.
* data/glr.c, data/yacc.c: Use it.

18 years agoAdd name for twlevo.
Paul Eggert [Thu, 15 Jun 2006 18:29:10 +0000 (18:29 +0000)] 
Add name for twlevo.

18 years agoFor associating token numbers with token names for "yacc.c", don't use
Joel E. Denny [Sun, 11 Jun 2006 18:27:44 +0000 (18:27 +0000)] 
For associating token numbers with token names for "yacc.c", don't use
#define statements unless `--yacc' is specified; always use enum
yytokentype.  Most important discussions start at:
<http://lists.gnu.org/archive/html/bison-patches/2005-09/msg00053.html>,
<http://lists.gnu.org/archive/html/bison-patches/2005-12/msg00052.html>,
and
<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00043.html>.
* NEWS (2.3+): Mention.
* data/c.m4 (b4_yacc_if): New.
(b4_token_enums_defines): Use b4_yacc_if to decide whether to add the
token #define's.
* doc/bison.texinfo (Bison Options): Describe the effect of `--yacc'
on token name definitions.
* src/getargs.c (usage): Capitalize `Yacc' in English.
* src/output.c (prepare): Define b4_yacc_flag.
* tests/regression.at (Early token definitions): Test that tokens names
are defined before the pre-prologue not just before the post-prologue.
Remove this test case and copy to...
(Early token definitions with --yacc): ... this to test #define's.
(Early token definitions without --yacc): ... and this to test enums.

18 years ago* NEWS: Reword the post-2.3 change to not be so optimistic about
Paul Eggert [Sun, 11 Jun 2006 08:16:04 +0000 (08:16 +0000)] 
* NEWS: Reword the post-2.3 change to not be so optimistic about
removing the old "look-ahead" spelling.
Update previous look-ahead/lookahead change reports.
* REFERENCES: look-ahead -> lookahead (since that's
what he actually wrote).
* doc/refcard.tex: look ahead -> lookahead,
look-ahead -> lookahead

18 years agoFor consistency, use `lookahead' instead of `look-ahead' or
Joel E. Denny [Sat, 10 Jun 2006 03:02:23 +0000 (03:02 +0000)] 
For consistency, use `lookahead' instead of `look-ahead' or
`look_ahead'.  Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-01/msg00049.html>
and then at
<http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00017.html>.
* NEWS: For the next release, note the change to `--report'.
* TODO, doc/bison.1: Update English.
* doc/bison.texinfo: Update English.
(Understanding Your Parser, Bison Options): Document as
`--report=lookahead' rather than `--report=look-ahead'.
* src/conflicts.c: Update English in comments.
(lookahead_set): Rename from look_ahead_set.
(flush_reduce): Rename argument look_ahead_tokens to lookahead_tokens.
(resolve_sr_conflict): Rename local look_ahead_tokens to
lookahead_tokens, and update other uses.
(flush_shift, set_conflicts, conflicts_solve, count_sr_conflicts,
count_rr_conflicts, conflicts_free): Update uses.
* src/getargs.c (report_args): Move "lookahead" before alternate
spellings.
(report_types): Update uses.
(usage): For `--report' usage description, state `lookahead' spelling
rather than `look-ahead'.
* src/getargs.h (report.report_lookahead_tokens): Rename from
report_look_ahead_tokens.
* src/lalr.c: Update English in comments.
(compute_lookahead_tokens): Rename from compute_look_ahead_tokens.
(state_lookahead_tokens_count): Rename from
state_look_ahead_tokens_count.
Rename local n_look_ahead_tokens to n_lookahead_tokens.
(lookahead_tokens_print): Rename from look_ahead_tokens_print.
Rename local n_look_ahead_tokens to n_lookahead_tokens.
Update other uses.
Update English in output.
(add_lookback_edge, initialize_LA, lalr, lalr_free): Update uses.
* src/print.c: Update English in comments.
(lookahead_set): Rename from look_ahead_set.
(print_reduction): Rename argument lookahead_token from
look_ahead_token.
(print_core, state_default_rule, print_reductions, print_results):
Update uses.
* src/print_graph.c: Update English in comments.
(print_core): Update uses.
* src/state.c: Update English in comments.
(reductions_new): Update uses.
(state_rule_lookahead_tokens_print): Rename from
state_rule_look_ahead_tokens_print, and update other uses.
* src/state.h: Update English in comments.
(reductions.lookahead_tokens): Rename from look_ahead_tokens.
(state_rule_lookahead_tokens_print): Rename from
state_rule_look_ahead_tokens_print.
* src/tables.c: Update English in comments.
(conflict_row, action_row): Update uses.
* tests/glr-regression.at
(Incorrect lookahead during deterministic GLR,
Incorrect lookahead during nondeterministic GLR): Rename
print_look_ahead to print_lookahead.
* tests/torture.at: Update English in comments.
(AT_DATA_LOOKAHEAD_TOKENS_GRAMMAR): Rename from
AT_DATA_LOOK_AHEAD_TOKENS_GRAMMAR.
(Many lookahead tokens): Update uses.
* data/glr.c: Update English in comments.
* lalr1.cc: Likewise.
* yacc.c: Likewise.
* src/conflicts.h: Likewise.
* src/lalr.h: Likewise.
* src/main.c: Likewise.
* src/output.c: Likewise.
* src/parse-gram.c: Likewise.
* src/tables.h: Likewise.
* tests/calc.at: Likewise.