]> git.saurik.com Git - bison.git/log
bison.git
15 years agovariables: parse.error
Akim Demaille [Thu, 18 Jun 2009 08:00:36 +0000 (10:00 +0200)] 
variables: parse.error

Implement, document, and test the replacement of %error-verbose
by %define parse.error "verbose".

* data/bison.m4 (b4_error_verbose_if): Reimplement to track the
values of the parse.error variable.
Make "simple" its default value.
Check the valid values.
* src/parse-gram.y: Use %define parse.error.
(PERCENT_ERROR_VERBOSE): New token.
Support it.
* src/scan-gram.l: Support %error-verbose.

* doc/bison.texinfo (Decl Summary): Replace the documentation of
%define error-verbose by that of %define parse.error.
* NEWS: Document it.

* tests/actions.at, tests/calc.at: Use parse.error instead of
%error-verbose.

15 years agoRegen.
Alex Rozenman [Sat, 27 Jun 2009 17:35:25 +0000 (20:35 +0300)] 
Regen.

15 years agoNamed symbol references.
Alex Rozenman [Sat, 23 May 2009 15:48:03 +0000 (18:48 +0300)] 
Named symbol references.

Discussed in:
http://lists.gnu.org/archive/html/bison-patches/2009-01/msg00000.html
http://lists.gnu.org/archive/html/bison-patches/2009-02/msg00002.html
http://lists.gnu.org/archive/html/bison-patches/2009-03/msg00009.html

* src/parse-gram.y: Add new syntax (named_ref.opt).
* src/reader.c: Store named refs in symbol lists.
* src/reader.h: New argument for symbol_append and
action_append functions.
* src/scan-code.h: Add new field (named_ref) into
code_props data structure. Keeps named ref of midrule
actions.
* src/scan-code.l: Support for named refs in semantic
action code. New function 'parse_named_ref'.
* src/scan-gram.l: Support bracketed id.
* src/symlist.c: Store named refs in symbol lists.
* src/symlist.h: New field in symbol list: named_ref.
* src/named-ref.h: New file, a struct for named_ref.
* src/named-ref.cp: New file, named_ref_new function.
* src/local.mk: Add two new files.
* tests/testsuite.at: Include new test group:
* tests/named-refs.at: this new file.

15 years agohash: check insertion for memory exhaustion.
Akim Demaille [Thu, 25 Jun 2009 04:03:18 +0000 (06:03 +0200)] 
hash: check insertion for memory exhaustion.

* src/uniqstr.c (uniqstr_new): New.

15 years agovariables: rename namespace as api.namespace.
Akim Demaille [Wed, 24 Jun 2009 14:52:23 +0000 (16:52 +0200)] 
variables: rename namespace as api.namespace.

Discussed in
http://lists.gnu.org/archive/html/bison-patches/2009-04/msg00033.html

* data/bison.m4 (b4_percent_define_copy_, b4_percent_define_copy):
New.
(b4_percent_define_use): New.
Use it where applicable.
* data/c++.m4: Replace uses of the variable "namespace" by
"api.namespace".
Default the latter to the former.
* doc/bison.texinfo (Decl Summary): Document "namespace" as
obsolete.
Document api.namespace.
Use @samp to document %define uses, keep @code for identifiers.
* NEWS: Likewise.
* tests/c++.at, tests/input.at: Test api.namespace instead of
namespace. (The tests passed with namespace.)

15 years agostyle changes.
Akim Demaille [Thu, 11 Jun 2009 12:50:25 +0000 (14:50 +0200)] 
style changes.

* data/xslt/xml2dot.xsl, data/xslt/xml2xhtml.xsl: Space changes.
* src/print-xml.c: Style changes.
* tests/conflicts.at: Comment changes.

15 years agoxml: beware of user strings used to give a %prec to rules.
Akim Demaille [Thu, 11 Jun 2009 12:45:10 +0000 (14:45 +0200)] 
xml: beware of user strings used to give a %prec to rules.

* tests/conflicts.at (%prec with user strings): New.
* src/gram.c (grammar_rules_print_xml): Escape the precedence for
XML output.

15 years agohash: check insertion for memory exhaustion.
Akim Demaille [Thu, 11 Jun 2009 12:42:12 +0000 (14:42 +0200)] 
hash: check insertion for memory exhaustion.

* src/muscle-tab.c (muscle_insert, muscle_grow)
* src/state.c (state_hash_insert): Check the return value of
hash_insert.

15 years agotests: honor TESTSUITEFLAGS in every check target.
Akim Demaille [Thu, 11 Jun 2009 12:36:18 +0000 (14:36 +0200)] 
tests: honor TESTSUITEFLAGS in every check target.

* tests/local.mk (RUN_TESTSUITE): New.
(check-local, installcheck-local, maintainer-check-g++)
(maintainer-check-posix, maintainer-check-valgrind): Use it.

15 years agognulib: update.
Akim Demaille [Thu, 11 Jun 2009 07:15:03 +0000 (09:15 +0200)] 
gnulib: update.

The previous patch accidently sent back gnulib in the past.
Reported by Eric Blake.

* gnulib: update to latest.

15 years agodeterministic test suite.
Akim Demaille [Wed, 10 Jun 2009 18:14:52 +0000 (20:14 +0200)] 
deterministic test suite.

Some consistency checks on symbols are performed after all the
symbols were read, by an iteration over the symbol table.  This
traversal is nondeterministic, which can be a problem for test
cases.

Avoid this.

Addresses another form of nondeterminism reported by Joel E. Denny.
http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00023.html

* tests/input.at (Numbered tokens): Split the hexadecimal/decimal
test in two.
Use different file names for the three tests to make the
maintenance easier.

15 years agognulib: update.
Akim Demaille [Wed, 10 Jun 2009 08:40:55 +0000 (10:40 +0200)] 
gnulib: update.

* gnulib: Update to latest.
* lib/.cvsignore, lib/.gitignore, m4/.cvsignore,
* m4/.gitignore: Regen.
* src/symtab.c (symbol_from_uniqstr, semantic_type_from_uniqstr):
Call xalloc_die on hash_insert failures.
Requested by the new __warn_unused_result__ attribute of
hash_insert.

15 years agodeterministic user-token-number redeclaration errors.
Akim Demaille [Wed, 3 Jun 2009 21:15:38 +0000 (23:15 +0200)] 
deterministic user-token-number redeclaration errors.

Address nondeterminism reported by Joel E. Denny.
http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00023.html

* src/uniqstr.h: Comment changes.
* src/location.h (boundary_cmp, location_cmp): New.
* src/symtab.c (user_token_number_redeclaration): New.
(symbol_translation): Use it.
* tests/input.at (Numbered tokens): Adjust the expected output.

15 years agobuild: avoid ignored errors.
Akim Demaille [Fri, 22 May 2009 14:13:41 +0000 (16:13 +0200)] 
build: avoid ignored errors.

* doc/local.mk ($(CROSS_OPTIONS_TEXI)): Don't generate ignored
errors, they pollute the output.

15 years agoConvert multiple variable definition warnings to complaints.
Joel E. Denny [Sat, 23 May 2009 06:25:28 +0000 (02:25 -0400)] 
Convert multiple variable definition warnings to complaints.

* NEWS (2.5): Add a new entry for that change.
* doc/bison.texinfo (Decl Summary): Update %define entry.
(Bison Options): Update -D/--define/-F/--force-define entry.
* src/muscle-tab.c (muscle_percent_define_insert): Implement.
* src/muscle-tab.h (muscle_percent_define_insert): Update
comments.
* tests/input.at (`%define errors'): Update.
(`%define, --define, --force-define'): Update.
(cherry picked from commit e3a33f7c23fc9febd1bbff33045c8b455a1972a8)

15 years ago-F/--force-define and relative %define/-D/--define priorities.
Joel E. Denny [Fri, 22 May 2009 21:14:08 +0000 (17:14 -0400)] 
-F/--force-define and relative %define/-D/--define priorities.

* NEWS (2.5): Add documentation to -D/--define entry.
* build-aux/cross-options.pl: Hard-code association of
--force-define with %define.
* doc/bison.texinfo (Decl Summary): In %define entry,
cross-reference command-line options.
(Bison Options): Add documentation to -D/--define entry.
(Option Cross Key): Widen column for --force-define row.
* src/getargs.c (usage): Document -F/--force-define.  Realign
options in output.
(short_options, long_options, getargs): Parse -F/--force-define,
and update muscle_percent_define_insert invocations.
* src/muscle-tab.h (muscle_percent_define_how): New enum type.
(muscle_percent_define_insert): Add argument with that type.
* src/muscle-tab.c (muscle_percent_define_insert): Implement
-F/--force-define behavior and priorities.
(muscle_percent_define_ensure): Update
muscle_percent_define_insert invocation.
* src/parse-gram.y (prologue_declaration): Update
muscle_percent_define_insert invocations.
* tests/input.at (`%define, --define'): Rename to...
(`%define, --define, --force-define'): ... this and extend.
(cherry picked from commit 34d419381579dd30642e5646aaeaece36207be94)

Conflicts:

src/getargs.c
src/parse-gram.c
src/parse-gram.h
src/parse-gram.y

15 years agoUpdate some comments to make sense for -D.
Joel E. Denny [Fri, 22 May 2009 05:39:07 +0000 (01:39 -0400)] 
Update some comments to make sense for -D.

* data/bison.m4 (b4_check_user_names): In header comments, say
"user occurrence" instead of "grammar occurrence".
* src/muscle-tab.h (muscle_percent_define_insert): Likewise.
(muscle_percent_code_grow): Likewise just for consistency.
(cherry picked from commit 246c4efafed178058a22b96d7a046340f6119057)

Conflicts:

src/muscle-tab.h

15 years ago* data/c++.m4 (b4_namespace_close): Simplify slightly.
Joel E. Denny [Wed, 20 May 2009 21:14:08 +0000 (17:14 -0400)] 
* data/c++.m4 (b4_namespace_close): Simplify slightly.
(cherry picked from commit e7bfa8b7211e2a02f4cec6f122b3141ad2ca97fb)

15 years agoHandle a trailing `:' in a user-supplied C++ namespace better.
Joel E. Denny [Tue, 19 May 2009 21:51:05 +0000 (17:51 -0400)] 
Handle a trailing `:' in a user-supplied C++ namespace better.

* data/c++.m4 (b4_namespace_close): Don't let it be printed
among the closing braces here.  This fix might make the
generated code easier to debug, but otherwise it should be
insignificant because a trailing `:' is a C++ error already.
(cherry picked from commit 8c221795affd367ac106161610d42fc94633e3fd)

15 years agoremove useless variable.
Akim Demaille [Tue, 19 May 2009 09:29:40 +0000 (11:29 +0200)] 
remove useless variable.

* src/getargs.c (skeleton_arg): Remove now useless variable.
Should help the compiler see that this printf-like call is sane.

15 years agoRename token.prefix as api.tokens.prefix.
Akim Demaille [Fri, 15 May 2009 14:06:31 +0000 (16:06 +0200)] 
Rename token.prefix as api.tokens.prefix.

Discussed here.
http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00024.html.

* NEWS, data/bison.m4, data/c.m4, data/java.m4, doc/bison.texinfo,
* tests/c++.at, tests/calc.at, tests/java.at, tests/local.at
(token.prefix): Rename as...
(api.tokens.prefix): this.

15 years agodoc: use C++ headers.
Akim Demaille [Thu, 7 May 2009 21:18:44 +0000 (23:18 +0200)] 
doc: use C++ headers.

* doc/bison.texinfo (Calc++ Scanner): Prefer C++ headers to C
headers.

15 years agodoc: token.prefix
Akim Demaille [Thu, 7 May 2009 07:13:08 +0000 (09:13 +0200)] 
doc: token.prefix

* doc/bison.simple (Decl Summary): Document token.prefix.
(Calc++ Parser): Various fixes.
Formatting changes.
Use token.prefix.
Introduce a macro TOKEN to shorten the code and make it more
readable.
(Calc++ Scanner): Adjust.
* NEWS (Variable token.prefix): New.

15 years agotests: check token numbers.
Akim Demaille [Tue, 5 May 2009 07:35:34 +0000 (09:35 +0200)] 
tests: check token numbers.

* tests/input.at (Numbered tokens): New.

15 years agobison: catch bad symbol names.
Akim Demaille [Mon, 4 May 2009 19:23:55 +0000 (21:23 +0200)] 
bison: catch bad symbol names.

* src/scan-gram.l({int}{id}): Report as an invalid identifier.
* tests/input.at: Adjust.

15 years agoidentifiers: dashes are letters.
Akim Demaille [Mon, 4 May 2009 19:15:17 +0000 (21:15 +0200)] 
identifiers: dashes are letters.

Dashes can now start identifiers (symbols and directives).

* src/scan-gram.l ({letter}): Add dash.
({id}): Remove it.
* tests/input.at (Symbols): Adjust.
Remove stray comment.
* tests/regression.at (Invalid inputs): Adjust error message.
* doc/bison.texinfo (Symbols): Update.

15 years agoDeclare %code to be a permanent feature.
Joel E. Denny [Fri, 1 May 2009 06:51:31 +0000 (02:51 -0400)] 
Declare %code to be a permanent feature.

* NEWS (2.4.2): Here.
* doc/bison.texinfo (Prologue Alternatives): Don't say it's
experimental.
(Decl Summary): Likewise.
(cherry picked from commit cefb18280b83ea19b742a22f7be8661b518874b5)

15 years agoConvert underscores to dashes in some %define variable names.
Joel E. Denny [Thu, 30 Apr 2009 05:04:33 +0000 (01:04 -0400)] 
Convert underscores to dashes in some %define variable names.

For now, just api.push-pull and lr.keep-unreachable-states.
Maintain old names for backward compatibility.
* NEWS (2.5): Document.
* data/c.m4 (b4_identification): Update comment.
* data/yacc.c: Update access.
* doc/bison.texinfo: Update.
* etc/bench.pl.in (bench_push_parser): Update use.
* src/files.c (tr): Move to...
* src/getargs.c, src/getargs.h (tr): ... here because I can't
think of a better place to expose it.  My logic is that, for all
uses of tr so far, command-line arguments can be involved, and
getargs.h is already included.
* src/main.c (main): Update access.
* src/muscle_tab.c (muscle_percent_define_insert): Convert old
variable names to new variable names before assigning value.
* src/reader.c (reader): Update setting default.
* tests/calc.at: Update uses.
* tests/conflicts.at (Unreachable States After Conflict
Resolution): Update use.
* tests/input.at (%define enum variables): Update use.
(%define backward compatibility): New test group.
* tests/push.at: Update uses.
* tests/reduce.at: Update uses.
* tests/torture.at: Update uses.
(cherry picked from commit 812775a0391e122eff1983afea2da96c600c7307)

Conflicts:

data/c.m4
etc/bench.pl.in
src/parse-gram.c
src/parse-gram.h
tests/conflicts.at

15 years agoSet all front-end %define defaults in one place.
Joel E. Denny [Thu, 30 Apr 2009 04:31:12 +0000 (00:31 -0400)] 
Set all front-end %define defaults in one place.

* src/main.c (main): Move lr.keep_unreachable_states default...
* src/reader.c (reader): ... to here.
(cherry picked from commit 1c4aa81df1fd11e2be5b2af78b4375f85bb2e59e)

15 years agoRename lr.default_reductions to lr.default-reductions.
Joel E. Denny [Thu, 30 Apr 2009 01:48:21 +0000 (21:48 -0400)] 
Rename lr.default_reductions to lr.default-reductions.

* NEWS (2.5): Here.
* doc/bison.texinfo: Here.
* src/lalr.c (initialize_LA): Here.
* src/print.c (print_reductions): Here.
* src/reader.c (reader): Here.
* src/tables.c (action_row): Here.
* tests/input.at (%define enum variables): Here.
* tests/reduce.at (AT_TEST_LR_DEFAULT_REDUCTIONS): Here.
(cherry picked from commit 1d0f55cc843d6dfca01e2c13fd49ee2c119c6631)

15 years agoPacify ./configure --enable-gcc-warnings.
Joel E. Denny [Thu, 30 Apr 2009 00:50:01 +0000 (20:50 -0400)] 
Pacify ./configure --enable-gcc-warnings.

* tests/input.at (Symbols): Prototype yyerror and yylex.
(cherry picked from commit 0b59345789e88b34ec7e3a68b99d6fbd368cb798)

Conflicts:

ChangeLog

15 years agoDocument how `%define "var" "value"' is not M4-friendly.
Joel E. Denny [Thu, 30 Apr 2009 00:05:32 +0000 (20:05 -0400)] 
Document how `%define "var" "value"' is not M4-friendly.

* src/parse-gram.y (variable): In comments here.
(cherry picked from commit 904ea1bca411d4d5f4f729e7f2982841a858f5ea)

Conflicts:

src/parse-gram.c

15 years agoClean up recent patches a little.
Joel E. Denny [Fri, 24 Apr 2009 06:13:26 +0000 (02:13 -0400)] 
Clean up recent patches a little.

Reported by Akim Demaille.
* doc/bison.texinfo (Understanding): Fix typos.
* src/print.c (print_reductions): Don't use negated variable.
(cherry picked from commit 379261b3fd4e799c37bda6d354e7b8fe582357a6)

15 years agoList accepted values for a %define enum variable with an invalid value.
Joel E. Denny [Fri, 24 Apr 2009 05:42:58 +0000 (01:42 -0400)] 
List accepted values for a %define enum variable with an invalid value.

Suggested by Akim Demaille at
<http://lists.gnu.org/archive/html/bison-patches/2009-04/msg00082.html>.
* data/bison.m4 (_b4_percent_define_check_values): Implement.
* src/muscle-tab.c (muscle_percent_define_check_values): Implement.
* tests/input.at (%define lr.default_reductions invalid values): Merge
into...
(%define enum variables): ... here, and update output.
(cherry picked from commit 25029e164a3b2385ae6d95ca4cd19bad36550c92)

15 years agoRename "default rule" to "default reduction".
Joel E. Denny [Thu, 23 Apr 2009 08:12:58 +0000 (04:12 -0400)] 
Rename "default rule" to "default reduction".

This includes changing variable names in code, changing
comments, and renaming %define lr.default_rules to %define
lr.default_reductions.
* NEWS (2.5): Update IELR documentation.
* data/bison.m4 (b4_integral_parser_tables_map): Adjust YYDEFACT
documentation.
* data/glr.c, data/lalr1.java: Sync copyright dates.
* doc/bison.texinfo (Decl Summary): Adjust lr.default_reductions
and lr.type documentation.  Make some other wording
improvements.
(Glossary): Adjust cross-references and Default Reduction
definition.
* src/lalr.c (state_lookahead_tokens_count): Adjust code.
Remove a confusing comment pointed out by Akim Demaille.
(initialize_LA): Adjust code.
* src/print-xml.c (print_reductions): Adjust code.
* src/print.c (print_reductions): Adjust code.
* src/reader.c (reader): Adjust code.
* src/tables.c (action_row): Adjust code.
(token_actions): Adjust code.
* src/tables.h: Adjust YYDEFACT documentation.
* tests/input.at (%define lr.default_rules invalid values):
Rename test group to...
(%define lr.default_reductions invalid values): ... this, and
update grammar file and expected output.
* tests/reduce.at (AT_TEST_LR_DEFAULT_RULES): Rename to...
(AT_TEST_LR_DEFAULT_REDUCTIONS): ... this, and update.

15 years agotests: check the use of dashes and periods in symbols.
Akim Demaille [Tue, 21 Apr 2009 20:17:25 +0000 (22:17 +0200)] 
tests: check the use of dashes and periods in symbols.

* tests/input.at (Symbol): New test group.

15 years agoDocument %define lr.type and lr.default_rules.
Joel E. Denny [Tue, 21 Apr 2009 09:12:01 +0000 (05:12 -0400)] 
Document %define lr.type and lr.default_rules.

* NEWS (2.5): Add an entry.
* src/getargs.c (usage): Mention IELR(1) and canonical LR(1)
besides just LALR(1) and GLR(1).
* doc/bison.texinfo (Introduction): Likewise.
(Language and Grammar): Bison is no longer limited to LALR(1)
restrictions.
(GLR parsing): Say deterministic or LR(1) rather than LALR(1)
when trying to distinguish from GLR.  Talk about LR(1) grammars
rather than LALR(1) grammars.
(Decl Summary): In %define api.push_pull entry, say it applies
to deterministic parsers in C rather than LALR(1) parsers in C.
Add lr.default_rules entry.
Add lr.type entry.
(Mystery Conflicts): Bison is no longer limited to LALR(1)
restrictions.
(Generalized LR Parsing): Same changes as for the previous GLR
section.
(Memory Management): Say deterministic rather than LALR(1).
(Understanding): Correct some bison output.
Index discussion of "accepting state".
Say deterministic rather than LALR(1).
(Bison Options): In --yacc entry, say deterministic rather than
LALR(1).
In --report, --graph, and --xml entries, just don't mention
LALR(1).
(C++ Parsers): Say deterministic rather than LALR(1).
(Table of Symbols): Likewise in YYSTACK_USE_ALLOCA entry.
(Glossary): Add Accepting State, Consistent State, Default Rule,
and IELR(1) definitions.
In Generalized LR (GLR) definition, make same changes as in
previous GLR sections.
In LALR(1) definition, say Bison uses LALR(1) by default rather
than implying Bison is limited to LALR(1).
(LocalWords): Add IELR.
(cherry picked from commit 34a6c2d19b85d4650b2d90f60b76d44071d167d1)

15 years agoFinish implementing %define lr.type.
Joel E. Denny [Tue, 21 Apr 2009 07:40:16 +0000 (03:40 -0400)] 
Finish implementing %define lr.type.

Its value can be "LALR", "IELR", or "canonical LR".
* lib/timevar.def (TV_IELR_PHASE1): New var.
(TV_IELR_PHASE2): New var.
(TV_IELR_PHASE3): New var.
(TV_IELR_PHASE4): New var.
* src/local.mk (src_bison_SOURCES): Add AnnotationList.c,
AnnotationList.h, InadequacyList.c, InadequacyList.h, Sbitset.c,
Sbitset.h, ielr.c, and ielr.h.
* src/getargs.h, src/getargs.c (enum trace, trace_args,
trace_types): Add trace_ielr.
* src/lalr.h, src/lalr.c (ngotos): Export it.
(F): Rename to...
(goto_follows): ... this, update all uses, and export it.
(set_goto_map): Export it.
(map_goto): Export it.
(compute_lookahead_tokens): Don't free goto_follows yet.  Now
handled in ielr.
(initialize_LA): Export it.  Move lookback allocation to...
(lalr): ... here because, for canonical LR, initialize_LA must
be invoked but lookback and much of the rest of LALR isn't
needed.
* main.c (main): Instead of lalr, invoke ielr, which invokes
lalr.
* src/reader.c (reader): Default lr.type to "LALR".
Default lr.default_rules to "accepting" if lr.type is "canonical
LR".  Leave the default as "all" otherwise.
Check for a valid lr.type value.
* src/state.h, src/state.c (struct state_list): Add state_list
member.
(state_new): Initialize state_list member to NULL.
(state_new_isocore): New function, exported.
* tests/existing.at (AT_TEST_EXISTING_GRAMMAR): New macro that
exercises all values of lr.type.
(GNU AWK Grammar): Rename test group to...
(GNU AWK 3.1.0 Grammar): ... this, and extend to use
AT_TEST_EXISTING_GRAMMAR.
(GNU Cim Grammar): Extend to use AT_TEST_EXISTING_GRAMMAR.
(GNU pic Grammar): Rename test group to...
(GNU pic (Groff 1.18.1) Grammar): ... this, and extend to use
AT_TEST_EXISTING_GRAMMAR.
* tests/reduce.at (AT_TEST_LR_TYPE): New macro that exercises
all values of lr.type.
(Single State Split): New test groups using AT_TEST_LR_TYPE.
(Lane Split): Likewise.
(Complex Lane Split): Likewise.
(Split During Added Lookahead Propagation): Likewise.

15 years agoAdd new files for IELR and canonical LR implementation.
Joel E. Denny [Tue, 21 Apr 2009 06:10:57 +0000 (02:10 -0400)] 
Add new files for IELR and canonical LR implementation.

* src/AnnotationList.c: New.
* src/AnnotationList.h: New.
* src/InadequacyList.c: New.
* src/InadequacyList.h: New.
* src/Sbitset.c: New.
* src/Sbitset.h: New.
* src/ielr.c: New.
* src/ielr.h: New.

15 years agoImplement %define lr.default_rules.
Joel E. Denny [Mon, 20 Apr 2009 04:55:50 +0000 (00:55 -0400)] 
Implement %define lr.default_rules.

Its value describes the states that are permitted to contain
default rules: "all", "consistent", or "accepting".
* src/reader.c (reader): Default lr.default_rules to "all".
Check for a valid lr.default_rules value.
* src/lalr.c (state_lookahead_tokens_count): If lr.default_rules
is "accepting", then only mark the accepting state as
consistent.
(initialize_LA): Tell state_lookahead_tokens_count whether
lr.default_rules is "accepting".
* src/tables.c (action_row): If lr.default_rules is not "all",
then disable default rules in inconsistent states.
* src/print.c (print_reductions): Use this opportunity to
perform some assertions about whether lr.default_rules was
obeyed correctly.
* tests/local.at (AT_TEST_TABLES_AND_PARSE): New macro that
helps with checking the parser tables for a grammar.
* tests/input.at (%define lr.default_rules invalid values): New
test group.
* tests/reduce.at (AT_TEST_LR_DEFAULT_RULES): New macro using
AT_TEST_TABLES_AND_PARSE.
(`no %define lr.default_rules'): New test group generated by
AT_TEST_LR_DEFAULT_RULES.
(`%define lr.default_rules "all"'): Likewise.
(`%define lr.default_rules "consistent"'): Likewise.
(`%define lr.default_rules "accepting"'): Likewise.

15 years agoFormatting change.
Akim Demaille [Mon, 20 Apr 2009 21:48:38 +0000 (23:48 +0200)] 
Formatting change.

15 years agobison: factoring.
Akim Demaille [Mon, 20 Apr 2009 21:38:07 +0000 (23:38 +0200)] 
bison: factoring.

* src/output.c (token_definitions_output): Use symbol_id_get
instead of duplicating its logic.
* TODO (YYERRCODE): Extend.

15 years agovariables: prefer error-verbose to error_verbose.
Akim Demaille [Mon, 20 Apr 2009 10:25:47 +0000 (12:25 +0200)] 
variables: prefer error-verbose to error_verbose.

* data/bison.m4 (b4_error_verbose_if): Based on error-verbose
instead of error_verbose.
* src/scan-gram.l (%error-verbose): Map the error-verbose
variable.
* doc/bison.texinfo: Promote %define error-verbose instead of
%error-verbose.
* tests/actions.at: Prefer %define error-verbose to %error-verbose.

15 years agoRegen.
Akim Demaille [Mon, 20 Apr 2009 11:09:51 +0000 (13:09 +0200)] 
Regen.

* src/parse-gram.h, src/parse-gram.c: Regen.

15 years agovariables: accept dashes.
Akim Demaille [Mon, 20 Apr 2009 10:24:23 +0000 (12:24 +0200)] 
variables: accept dashes.

* data/bison.m4 (b4_percent_define_if_define_): Also map dashes to
underscores.
* src/scan-gram.l ({id}): Also accept dashes after the initial
letter.
({directive}): Use {id}.
* src/parse-gram.y: Comment and formatting changes.
* doc/bison.texinfo (Symbols): Adjust the lexical definitions of
symbols.
* src/complain.h, src/complain.c (yacc_at): New.
* src/symtab.c (symbol_new): Use yacc_at to report inappropriate
symbol names.
* src/output.c (token_definitions_output): Do not #define token
names with dashes.

15 years agoConsistently refer to Yacc, not YACC.
Akim Demaille [Mon, 20 Apr 2009 10:53:46 +0000 (12:53 +0200)] 
Consistently refer to Yacc, not YACC.

* src/getargs.c (usage, warnings_args): s/YACC/Yacc/.

15 years agoPacify make maintainer-check-posix.
Joel E. Denny [Fri, 17 Apr 2009 20:14:17 +0000 (16:14 -0400)] 
Pacify make maintainer-check-posix.

* tests/input.at (%define, --define): Move bison command-line
options before grammar file name.

15 years agoDocument semicolon warnings.
Joel E. Denny [Sat, 4 Apr 2009 06:10:33 +0000 (02:10 -0400)] 
Document semicolon warnings.

* NEWS (2.5): Here.
(cherry picked from commit a2d0567444f8ab1fc079796169a9845fec62ed0f)

15 years agoFix ChangeLog.
Akim Demaille [Tue, 14 Apr 2009 06:18:24 +0000 (08:18 +0200)] 
Fix ChangeLog.

15 years agovariables: use `parse.assert' instead of `assert'.
Akim Demaille [Tue, 14 Apr 2009 04:52:31 +0000 (06:52 +0200)] 
variables: use `parse.assert' instead of `assert'.

* TODO (assert): Remove.
* data/bison.m4 (b4_assert_if): Replace with...
(b4_parse_assert_if): this.
* data/lalr1.cc, data/variant.hh, tests/c++.at: Adjust.
* doc/bison.texinfo (Decl Summary): Document parse.assert.

15 years agovariables: use `parse.assert' instead of `debug'.
Akim Demaille [Tue, 14 Apr 2009 04:51:01 +0000 (06:51 +0200)] 
variables: use `parse.assert' instead of `debug'.

* src/getargs.c (getargs): Map -t to %define trace.parse.
* src/scan-gram.l (%debug): Map to %define trace.parse.
* data/bison.m4 (b4_percent_define_if_define): Map `.' in variable
names to `_' in macro names.
(b4_debug_if): Replace with...
(b4_parse_trace_if): this.
* data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java,
* data/yacc.c: Adjust.
* doc/bison.texinfo (Decl Summary): Document %debug as obsoleted.
Use @code to label the variable list.
Document the variable parse.trace.
(Tracing): Promote the parse.trace variable.
* TODO: %printer is not documented.

15 years agodoc: minor fixes.
Akim Demaille [Mon, 13 Apr 2009 18:57:38 +0000 (20:57 +0200)] 
doc: minor fixes.

* doc/bison.texinfo (Decl Summary): Fix entry about %debug.
(Table of Symbols): Remove duplicate entry for %debug.

15 years agosubmodules: update to latest
Eric Blake [Fri, 10 Apr 2009 13:36:49 +0000 (07:36 -0600)] 
submodules: update to latest

* submodules/autoconf: Use latest upstream Autoconf.

Signed-off-by: Eric Blake <ebb9@byu.net>
(cherry picked from commit 7ba0d59da0ec8f6876a66ea81bb9f9190ddec358)

15 years agoWork around autoconf 2.63b bug in testsuite.
Eric Blake [Tue, 7 Apr 2009 04:05:38 +0000 (22:05 -0600)] 
Work around autoconf 2.63b bug in testsuite.

* tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Avoid tripping
autoconf bug related to # in test.

Signed-off-by: Eric Blake <ebb9@byu.net>
(cherry picked from commit ab3a683f0560e4ec24a06754386ee8c76da6ef67)

15 years ago* NEWS (2.5): New section. Describe new -D/--define feature.
Joel E. Denny [Mon, 6 Apr 2009 21:35:41 +0000 (17:35 -0400)] 
* NEWS (2.5): New section.  Describe new -D/--define feature.

15 years agoRegen.
Akim Demaille [Sun, 5 Apr 2009 20:19:20 +0000 (22:19 +0200)] 
Regen.

* src/parse-gram.h, src/parse-gram.c: Regen.

15 years agorename muscle_tab.* as muscle-tab.* for consistency.
Akim Demaille [Sun, 5 Apr 2009 20:18:06 +0000 (22:18 +0200)] 
rename muscle_tab.* as muscle-tab.* for consistency.

* src/muscle_tab.h, src/muscle_tab.c: Rename as...
* src/muscle-tab.h, src/muscle-tab.c: these.
* src/getargs.c, src/local.mk, src/main.c, src/output.c,
* src/parse-gram.y, src/reader.c, src/scan-code.l: Adjust.

15 years agoMakefile: introduce $(BISON).
Akim Demaille [Sun, 5 Apr 2009 20:13:06 +0000 (22:13 +0200)] 
Makefile: introduce $(BISON).

* src/local.mk (BISON): New.
(YACC): Use it.

15 years agoparser: handle %locations as %define locations.
Akim Demaille [Sun, 5 Apr 2009 20:05:08 +0000 (22:05 +0200)] 
parser: handle %locations as %define locations.

* src/getargs.h, src/getargs.c (locations_flag): Remove.
* src/getargs.c, src/scan-code.l: Use muscle_percent_define_ensure
to set "locations" to true.
* src/output.c (prepare): Don't output "locations".
* src/scan-gram.l (%locations): Handle it as a %<flag>.
* src/parse-gram.y: It's no longer a token.
Don't handle it.
* data/bison.m4 (b4_locations_if): Define it with
b4_percent_define_if_define.
* data/c.m4, data/glr.cc: Adjust.

15 years agoRegen.
Akim Demaille [Sun, 5 Apr 2009 19:51:51 +0000 (21:51 +0200)] 
Regen.

* src/parse-gram.c: Regen.

15 years agomuscle: factor the handling of obsolete of obsolete directives.
Akim Demaille [Sun, 5 Apr 2009 19:48:45 +0000 (21:48 +0200)] 
muscle: factor the handling of obsolete of obsolete directives.

Suggested by Joel E. Denny.

* src/muscle_tab.h, src/muscle_tab.c (muscle_percent_define_ensure):
New, extracted from...
* src/parse-gram.y (prologue_declaration: pure-parser): here.
Remove it.
(prologue_declaration: "%<flag>"): Use
muscle_percent_define_ensure.
(%error-verbose, %pure-parser): No longer tokens.
* src/scan-gram.l (pure-parser): Return as a %<flag>.

15 years agoFix options documentation.
Joel E. Denny [Mon, 6 Apr 2009 06:16:39 +0000 (02:16 -0400)] 
Fix options documentation.

* build-aux/cross-options.pl: As in --help output, write optional
arguments as [=ARG] not =[ARG].
* doc/bison.texinfo (Bison Options): Add -W/--warnings argument.

15 years agoReplace BISON_PROG_GNU_M4 with Autoconf's AC_PROG_GNU_M4.
Joel E. Denny [Sun, 5 Apr 2009 00:58:46 +0000 (20:58 -0400)] 
Replace BISON_PROG_GNU_M4 with Autoconf's AC_PROG_GNU_M4.

If the first m4 in $PATH is wrong, it keeps looking.  Moreover, its
requirements for a correct m4 are stricter.
* m4/m4.m4: Make it a symbolic link to submodules/autoconf/m4/m4.m4.
* configure.ac: Update to use AC_PROG_GNU_M4.
Reported by Eric Blake.

15 years agoHelp with updating web manual.
Joel E. Denny [Fri, 3 Apr 2009 22:32:02 +0000 (18:32 -0400)] 
Help with updating web manual.

* HACKING: Incorporate instructions from gnulib/doc/README.
* bootstrap.conf (gnulib_modules): Add gendocs.

15 years agoRegen.
Akim Demaille [Fri, 3 Apr 2009 08:33:17 +0000 (10:33 +0200)] 
Regen.

* src/parse-gram.h, src/parse-gram.c: Regen.

15 years agoFactor %FLAG at scan level.
Akim Demaille [Fri, 3 Apr 2009 04:50:06 +0000 (06:50 +0200)] 
Factor %FLAG at scan level.

* src/parse-gram.y (PERCENT_DEBUG, PERCENT_ERROR_VERBOSE): Token
definitions and associated rules, replaced by....
(PERCENT_FLAG): this new token type, and rule.
* src/scan-gram.l (RETURN_PERCENT_FLAG): New.
Use it for %debug and %error-verbose.

15 years agoRegen.
Akim Demaille [Fri, 3 Apr 2009 05:07:10 +0000 (07:07 +0200)] 
Regen.

* src/parse-gram.h, src/parse-gram.c: Regen.

15 years agoUpdate ChangeLog.
Akim Demaille [Fri, 3 Apr 2009 08:29:41 +0000 (10:29 +0200)] 
Update ChangeLog.

15 years agoTreat %debug as %define debug.
Akim Demaille [Thu, 2 Apr 2009 22:32:49 +0000 (00:32 +0200)] 
Treat %debug as %define debug.

* data/bison.m4 (b4_debug_if): New.
* data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c,
* data/lalr1.java: Use it instead of b4_debug_flag.
* src/getargs.h, src/getargs.c (debug_flag): Remove.
* src/output.c (prepare): Don't output it.
* src/parse-gram.y: Treat %debug as %define debug.

15 years agoRegen.
Akim Demaille [Fri, 3 Apr 2009 05:06:08 +0000 (07:06 +0200)] 
Regen.

* src/parse-gram.h, src/parse-gram.c: Regen.

15 years agoTreat %error-verbose as %define error_verbose.
Akim Demaille [Thu, 2 Apr 2009 22:18:47 +0000 (00:18 +0200)] 
Treat %error-verbose as %define error_verbose.

This allows to pass -Derror_verbose on the command line.  Better yet, it
allows to pass -Derror_verbose=$(ERROR_VERBOSE), with ERROR_VERBOSE being
defined as false or true.

* data/bison.m4 (b4_percent_define_if_define): Instead of relying
on b4_percent_define_ifdef, for does not check the defined value,
but only whether the symbol is defined, rely on
b4_percent_define_flag_if, so that a value of "false" is processed
as a false.
If not defined, define the flag to "false".
(b4_error_verbose_if): New.
* data/glr.c, data/lalr1.cc, data/yacc.c: Use it instead of
b4_error_verbose_flag.
* src/getargs.h, src/getargs.c (error_verbose_flag): Remove.
* src/output.c (prepare): Don't output it.
* src/parse-gram.y (%error-verbose): Treat as %define error_verbose.

15 years agoFix strange %define locations for default values.
Joel E. Denny [Fri, 3 Apr 2009 07:13:36 +0000 (03:13 -0400)] 
Fix strange %define locations for default values.

Reported by Akim Demaille at
<http://lists.gnu.org/archive/html/bug-bison/2007-12/msg00001.html>
and discussed again starting at
<http://lists.gnu.org/archive/html/bison-patches/2008-11/msg00102.html>.
* data/bison.m4 (b4_percent_define_default): Leave syncline blank
because location information is bogus.
Use angle brackets to delimit fake file name because square brackets
look like over-quoted m4.  Choose a better fake file name.
Use negative line numbers.
* src/muscle_tab.c (muscle_percent_define_default): Likewise.
* src/location.c (location_print): If line for a boundary is negative,
only print that boundary's file name.
* src/location.h: Document that.
* tests/skeletons.at (%define Boolean variables: invalid skeleton
defaults): Update output.

15 years agoPacify ./configure --enable-gcc-warnings.
Joel E. Denny [Fri, 3 Apr 2009 04:32:27 +0000 (00:32 -0400)] 
Pacify ./configure --enable-gcc-warnings.

* Makefile.am (AM_CFLAGS): Remove $(WERROR_CFLAGS) because many files
in lib won't compile with it.
* src/local.mk (src_bison_CFLAGS): Use $(WERROR_CFLAGS) here only.

15 years agobootstrap: --help to stdout.
Akim Demaille [Tue, 31 Mar 2009 08:41:25 +0000 (10:41 +0200)] 
bootstrap: --help to stdout.

* bootstrap (usage): Don't send --help to stderr.
Use a here doc instead of a long string.

15 years agobootstrap: README-hacking no longer exists
Akim Demaille [Tue, 31 Mar 2009 08:40:17 +0000 (10:40 +0200)] 
bootstrap: README-hacking no longer exists

* bootstrap (checkout_only_file): Set to HACKING.

15 years agoChangeLog: formatting changes.
Akim Demaille [Fri, 27 Mar 2009 06:28:26 +0000 (07:28 +0100)] 
ChangeLog: formatting changes.

15 years agodoc: merge HACKING and README-hacking.
Akim Demaille [Thu, 26 Mar 2009 22:36:18 +0000 (23:36 +0100)] 
doc: merge HACKING and README-hacking.

Two files is confusing.
Reported by Alexandre Duret-Lutz.

* README-hacking: Merge into...
* HACKING (Working from the repository): here.

15 years agodoc: update README-hacking.
Akim Demaille [Thu, 26 Mar 2009 22:14:45 +0000 (23:14 +0100)] 
doc: update README-hacking.

* README-hacking: We now use git and git submodules.
Reported by Ralf Wildenhues and Alexandre Duret-Lutz.

15 years agolalr1.cc: avoid GCC 4.3 warnings.
Akim Demaille [Fri, 27 Mar 2009 06:26:24 +0000 (07:26 +0100)] 
lalr1.cc: avoid GCC 4.3 warnings.

GCC 4.3 now warns about "a || b && c" and asks for explicit
parentheses.
Reported by Alexandre Duret-Lutz.
* data/location.cc: Update copyright years.
(Position::operator==): Use parens to make precedence explicit.
Compare lines and columns first, as they are more likely to be
different, and they are faster to compare.

15 years agognulib: update.
Akim Demaille [Fri, 27 Mar 2009 06:23:53 +0000 (07:23 +0100)] 
gnulib: update.

* gnulib: Update to latest.
* src/local.mk (AM_CFLAGS): Move to...
* Makefile.am: here.
* etc/prefix-gnulib-mk (prefix_assignment): Also transform
AM_CFLAGS.

15 years agoComment changes.
Akim Demaille [Wed, 18 Feb 2009 16:57:00 +0000 (17:57 +0100)] 
Comment changes.

15 years agoShare b4_yytranslate_define.
Akim Demaille [Wed, 31 Dec 2008 16:21:56 +0000 (17:21 +0100)] 
Share b4_yytranslate_define.

* data/lalr1.cc (b4_yytranslate_define): Move to...
* data/c++.m4: here.

15 years agoUse locations in the variant example.
Akim Demaille [Wed, 31 Dec 2008 15:13:04 +0000 (16:13 +0100)] 
Use locations in the variant example.

Yes, this obfuscates the point of this example, variants only.  But glr.cc
cannot work (yet?) without locations.  This change makes it easier to use
this example with glr.cc.

* examples/variant.yy (assert): %define it.
(locations): Request them.
(yylex): Bind the location to the stage.

15 years agoDub make_TOKEN as a public type interface.
Akim Demaille [Wed, 31 Dec 2008 15:08:02 +0000 (16:08 +0100)] 
Dub make_TOKEN as a public type interface.

* data/c++.m4 (b4_symbol_constructor_declare)
(b4_symbol_constructor_define): New empty stubs.
(b4_public_types_declare, b4_public_types_define): Use them.
* data/lalr1.cc (b4_symbol_constructor_declare)
(b4_symbol_constructor_declare_)
(b4_symbol_constructor_define_, b4_symbol_constructor_define):
Move to...
* data/variant.hh: here.
Remove the "b4_variant_if" parts, as variant.hh is loaded only if
needed.
* data/lalr1.cc: No longer invoke b4_symbol_constructor_define and
b4_symbol_constructor_declare, as it is now done by
b4_public_types_define and b4_public_types_declare.

15 years agoCoding style changes.
Akim Demaille [Wed, 31 Dec 2008 14:12:50 +0000 (15:12 +0100)] 
Coding style changes.

* data/lalr1.cc (b4_symbol_constructor_declaration_)
(b4_symbol_constructor_declarations)
(b4_symbol_constructor_definition_)
(b4_symbol_constructor_definitions)
(b4_yytranslate_definition): Rename as...
(b4_symbol_constructor_declare_)
(b4_symbol_constructor_declare)
(b4_symbol_constructor_define_)
(b4_symbol_constructor_define)
(b4_yytranslate_define): these.
* data/variant.hh (b4_variant_definition): Rename as...
(b4_variant_define): this.

15 years agoFactor b4_assert_if, b4_lex_symbol_if, and b4_variant_if.
Akim Demaille [Wed, 31 Dec 2008 14:07:48 +0000 (15:07 +0100)] 
Factor b4_assert_if, b4_lex_symbol_if, and b4_variant_if.

* data/bison.m4 (b4_percent_define_if_define): New.
* data/c++.m4 (b4_variant_if): Move to...
* data/bison.m4: Here, using b4_percent_define_if_define.
* data/lalr1.cc (b4_assert_if, b4_lex_symbol_if): Move to...
* data/bison.m4: Here, using b4_percent_define_if_define.

15 years agoDub symbol_type_base as a public type.
Akim Demaille [Wed, 31 Dec 2008 13:29:25 +0000 (14:29 +0100)] 
Dub symbol_type_base as a public type.

* data/c++.m4 (b4_public_types_declare): Now define
symbol_type_base and symbol_type.
(b4_public_types_define): New.
In both cases, the definitions are taken verbatim from lalr1.cc.
* data/lalr1.cc: Adjust.

15 years agob4_public_types_declare.
Akim Demaille [Wed, 31 Dec 2008 12:46:02 +0000 (13:46 +0100)] 
b4_public_types_declare.

* data/c++.m4 (b4_public_types_declare): New.
* data/glr.cc, data/lalr1.cc: Use it.

15 years agob4_semantic_type_declare.
Akim Demaille [Wed, 31 Dec 2008 11:44:58 +0000 (12:44 +0100)] 
b4_semantic_type_declare.

* data/c++.m4 (b4_semantic_type_declare): New.
Factors and generalizes what was in glr.cc and lalr1.cc.
* data/variant.hh (b4_semantic_type_declare): Redefine it for
variants.
* data/lalr1.cc, data/glr.cc: Use it.

15 years agoUpgrade gnulib.
Akim Demaille [Wed, 25 Feb 2009 23:09:31 +0000 (00:09 +0100)] 
Upgrade gnulib.

* gnulib: Upgrade from master.
* lib/.cvsignore, lib/.gitignore, m4/.cvsignore, m4/.gitignore:
Regen.

15 years agoRemove useless arguments.
Akim Demaille [Wed, 18 Feb 2009 15:27:14 +0000 (16:27 +0100)] 
Remove useless arguments.

* data/glr.c (yy_reduce_print): $$ and @$ are not used and not
relevant.

15 years agoComment changes.
Akim Demaille [Fri, 2 Jan 2009 09:28:56 +0000 (10:28 +0100)] 
Comment changes.

* data/lalr1.cc: here.

15 years agoFix glr.cc's debug level handling.
Akim Demaille [Wed, 31 Dec 2008 16:23:35 +0000 (17:23 +0100)] 
Fix glr.cc's debug level handling.

* data/glr.cc (yydebug_): Remove, as it is actually yydebug from
glr.c which is used.
(debug_level, set_debug_level): Adjust.

15 years agoCopyright years.
Akim Demaille [Wed, 31 Dec 2008 15:55:12 +0000 (16:55 +0100)] 
Copyright years.

* data/glr.c: Add 2007 and 2008 here, consistenly with the comments.

15 years agoStyle changes.
Akim Demaille [Wed, 31 Dec 2008 15:12:02 +0000 (16:12 +0100)] 
Style changes.

* etc/bench.pl.in (generate_grammar_list): Consitently use
location_type, not yy::location.

15 years agoComment change.
Akim Demaille [Wed, 31 Dec 2008 12:48:40 +0000 (13:48 +0100)] 
Comment change.

* data/lalr1.cc: here.

15 years agoMake yyparser::error public.
Akim Demaille [Wed, 31 Dec 2008 11:35:32 +0000 (12:35 +0100)] 
Make yyparser::error public.

* data/lalr1.cc: here.
There is no good reason to keep it private (and it is convenient
to use it from the scanner for instance).  It is already public in
glr.cc.

15 years agoComment changes.
Akim Demaille [Wed, 31 Dec 2008 11:26:00 +0000 (12:26 +0100)] 
Comment changes.

* data/glr.cc: here.

15 years agoRemove trailing blanks.
Akim Demaille [Wed, 31 Dec 2008 10:42:31 +0000 (11:42 +0100)] 
Remove trailing blanks.

The epilogue has its own ending \n, no need to add another.

* data/glr.c, data/lalr1.java, data/yacc.c: dnl when outputing the
epilogue.
* data/glr.cc: dnl when extending the epilogue.
Remove stray "private:".

15 years agoUse b4_c_modern.
Akim Demaille [Wed, 18 Feb 2009 16:54:39 +0000 (17:54 +0100)] 
Use b4_c_modern.

* data/c.m4 (b4_c_function_decl): Here.