X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/d7f4d8238287e588b193b17601bb9f6622ec3d7a..d78f0ac9d8c8830542faf9d00d0b6ef652dda45e:/ChangeLog

diff --git a/ChangeLog b/ChangeLog
index 28c3ce80..757e1fd0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,456 @@
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+	Add %precedence support.
+	Unfortunately it is not possible to reuse the %prec directive.  This
+	is because to please POSIX, we do not require to end the rules with a
+	semicolon.  As a result,
+	
+	foo: bar %prec baz
+	
+	is ambiguous: either a rule which precedence is that of baz, or a rule,
+	and then a declaration of the precedence of the token baz.
+	
+	* doc/bison.texinfo: Document %precedence.
+	(Precedence Only): New.
+	* src/assoc.h, src/assoc.c (precedence_assoc): New.
+	* src/conflicts.c (resolve_sr_conflict): Support it.
+	* src/scan-gram.l, src/parse-gram.y (%precedence): New token.
+	Parse it.
+	* tests/calc.at: Use %precedence for NEG.
+	* tests/conflicts.at (%precedence does not suffice)
+	(%precedence suffices): New tests.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Make benches in a sub dirs.
+	* etc/bench.pl.in ($dir): New.
+	Use it.
+	Check the use of constructors with an argument.
+	(bench_variant_parser): Fix.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	fix eof condition
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Fix --help.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Require the generation of parse-gram.output.
+	* src/Makefile.am (YACC): Pass --report=all.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Formatting changes.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Update TODO.
+	* TODO: Remove obsolete items.
+	Update others.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Enhance bench.pl.
+	* etc/bench.pl.in (parse, parse_expr, parse_term, parse_fact)
+	(@token, $grammar, $bench): New.
+	(generate_grammar_variant): Rename as...
+	(generate_grammar_list): this.
+	(generate_grammar): Adjust.
+	(bench_grammar): Rename as...
+	(bench): this.
+	Use it in the various bench-marking routines.
+	(-b, -g): New options.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Use a static hierarchy for symbols in the C++ parser.
+	* data/lalr1.cc (symbol_base_type, symbol_type)
+	(stack_symbol_type): Make it a static hierarchy.
+	Adjust dependencies.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	bench.pl -d, --directive.
+	* etc/bench.pl.in (@directive): New.
+	(&bench_grammar): Use it.
+	(&bench_list_grammar): New, to provide access to the "variant"
+	grammar.
+	Use it.
+	(getopts): Support -d, --directive.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Use inline for small operations.
+	* data/lalr1.cc (symbol_base_type, symbol_type)
+	(stack_symbol_type): Declare constructor and other operations as
+	inline.
+	(yy_destroy_): Inline.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Introduce a hierarchy for symbols.
+	* data/lalr1.cc (symbol_base_type, symbol_type): New.
+	(data_type): Rename as...
+	(stack_symbol_type): this.
+	Derive from symbol_base_type.
+	(yy_symbol_value_print_): Merge into...
+	(yy_symbol_print_): this.
+	Rename as...
+	(yy_print_): this.
+	(yydestruct_): Rename as...
+	(yy_destroy_): this.
+	(b4_symbols_actions, YY_SYMBOL_PRINT): Adjust.
+	(parser::parse): yyla is now of symbol_type.
+	Use its type member instead of yytoken.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Rename data_type and stack_symbol_type.
+	* data/lalr1.cc (data_type): Rename as...
+	(stack_symbol_type): this.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Handle semantic value and location together.
+	* data/lalr1.cc (b4_symbol_actions): Bounce $$ and @$ to
+	yydata.value and yydata.location.
+	(yy_symbol_value_print_, yy_symbol_print_, yydestruct_)
+	(YY_SYMBOL_PRINT): Now take semantic value and location as a
+	single arg.
+	Adjust all callers.
+	(yydestruct_): New overload for a stack symbol.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Push a complete symbol, not connected parts.
+	* data/lalr1.cc (yypush_): Take a data_type&, not disconnected
+	state, value and location.
+	Adjust callers.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Agregate yylval and yylloc.
+	* data/lalr1.cc (parser::yylval, parser::yylloc): Replace by...
+	(parser::yyla): this.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Rely on the state stack to display reduction traces.
+	To display rhs symbols before a reduction, we used information about the rule
+	reduced, which required the tables yyrhs and yyprhs.  Now use rely only on the
+	state stack to get the same information.
+	
+	* data/lalr1.cc (b4_rhs_data, b4_rhs_state): New.
+	Use them.
+	(parser::yyrhs_, parser::yyprhs_): Remove.
+	(parser::yy_reduce_print_): Use the state stack.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+	Fuse yyval and yyloc into yylhs.
+	* data/lalr1.cc (b4_lhs_value, b4_lhs_location): Adjust to using
+	yylhs.
+	(parse): Replace yyval and yyloc with yylhs.value and
+	yylhs.location.
+	After a user action, compute yylhs.state earlier.
+	(yyerrlab1): Do not play tricks with yylhs.location, rather, use a
+	fresh error_token.
+
+2008-11-09  Di-an Jan  <dianj@freeshell.org>
+
+	Remove unused variable.
+	* src/output.c (type_names_output): Remove unused variable sep.
+
+2008-11-09  Paolo Bonzini  <bonzini@gnu.org>
+
+	Change tests/output.at quoting.
+	* tests/output.at (AT_CHECK_OUTPUT): Use conventional m4 quoting when
+	expanding arguments.
+
+2008-11-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Don't add a semicolon to actions for %skeleton or %language.
+	It breaks Java test cases as reported by Akim Demaille.
+	* src/scan-code.l: Implement.
+
+2008-11-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Clean up %skeleton and %language priority implementation.
+	* src/getargs.c (skeleton_prio): Use default_prio rather than 2, and
+	remove static qualifier because others will soon need to see it.
+	(language_prio): Likewise.
+	(getargs): Use command_line_prio rather than 0.
+	* src/getargs.h (command_line_prio, grammar_prio, default_prio): New
+	enum fields.
+	(skeleton_prio): Extern it.
+	(language_prio): Extern it.
+	* src/parse-gram.y: Use grammar_prio rather than 1.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Moving push traces into yypush_.
+	* data/lalr1.cc (yypush_): Now takes a optional trace message.
+	Adjust all uses.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	The single-stack C++ parser is now the standard one.
+	* data/lalr1.cc: Rename as...
+	* data/lalr1-split.cc: this.
+	* data/lalr1-fusion.cc: Rename as...
+	* data/lalr1.cc: this.
+	* etc/bench.pl.in: Adjust.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Avoid empty-if warnings.
+	Reported by Quentin Hocquet.
+	
+	* data/lalr1-fusion.cc (YY_SYMBOL_PRINT, YY_REDUCE_PRINT)
+	(YY_STACK_PRINT): Provide some contents even when !YYDEBUG.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Pass command line location to skeleton_arg and language_argmatch.
+	* src/getargs.h, src/getargs.c (skeleton_arg, language_argmatch):
+	The location argument is now mandatory.
+	Adjust all dependencies.
+	(getargs): Use command_line_location.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	-D, --define.
+	* src/getargs.c (usage): Document -D.
+	Fix help string for --locations.
+	(command_line_location): New.
+	(short_options, long_options, getargs): Support -D, --define.
+	(getargs): Move -d support at the right place.
+	* doc/bison.texinfo (Bison Options): Update.
+	* tests/input.at (%define, --define): New.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Initialize the muscle table before parsing the command line.
+	* src/getargs.c (quotearg.h, muscle_tab.h): Include.
+	(getargs): Define file_name.
+	* src/main.c (main): Initialize muscle_tab before calling
+	getargs.
+	* src/muscle_tab.c (muscle_init): No longer define file_name, as
+	its value is not available yet.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Locations without columns for command line arguments.
+	* src/location.c (location_print): Don't display negative columns.
+	* src/location.h: Document this.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Fix --help.
+	* src/getargs.c (usage): Fix help string for -W.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Handle more general types of option arguments.
+	* build-aux/cross-options.pl: The argument ends at the first
+	space, not the first non-symbol character.
+	Use @var for each word appearing the argument description.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Destroy the variants that remain on the stack in case of error.
+	* data/lalr1-fusion.cc (yydestruct_): Invoke the variant's
+	destructor.
+	Display the value only if yymsg is nonnull.
+	(yyreduce): Invoke yydestruct_ when popping lhs symbols.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Add "%define assert" to variants.
+	This is used to help the user catch cases where some value gets
+	ovewritten by a new one.  This should not happen, as this will
+	probably leak.
+	
+	Unfortunately this uncovered a bug in the C++ parser itself: the
+	lookahead value was not destroyed between two calls to yylex.  For
+	instance if the previous lookahead was a std::string, and then an int,
+	then the value of the std::string was correctly taken (i.e., the
+	lookahead was now an empty string), but std::string structure itself
+	was not reclaimed.
+	
+	This is now done in variant::build(other&) (which is used to take the
+	value of the lookahead): other is not only stolen from its value, it
+	is also destroyed.  This incurs a new performance penalty of a few
+	percent, and union becomes faster again.
+	
+	* data/lalr1-fusion.cc (variant::build(other&)): Destroy other.
+	(b4_variant_if): New.
+	(variant::built): New.
+	Use it whereever the status of the variant changes.
+	* etc/bench.pl.in: Check the penalty of %define assert.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Use "%define variant" in bench.pl.
+	* etc/bench.pl.in: No longer use the pseudo directive %variants,
+	just use %define variants.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+	Regen.
+	* src/parse-gram.h, src/parse-gram.c: Regen.
+
+2008-11-04  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Fix user actions without a trailing semicolon.
+	Reported by Sergei Steshenko at
+	<http://lists.gnu.org/archive/html/bug-bison/2008-11/msg00001.html>.
+	* THANKS (Sergei Steshenko): Add.
+	* src/scan-code.l (SC_RULE_ACTION): Fix it.
+	* tests/regression.at (Fix user actions without a trailing semicolon):
+	New test case.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Use b4_copyright_years.
+	* data/yacc.c (b4_copyright_years): New.
+	Fix its value according to the comments in the file.
+	Use it and undefine it.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Formatting changes.
+	* data/lalr1-fusion.cc, src/parse-gram.y: here.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Formatting changes.
+	* data/lalr1-fusion.cc: here.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Use strict on bench.pl.
+	* etc/bench.pl.in (&run, &generate_grammar): New.
+	Rename the grammar generating functions for consistency.
+	Change the interface so that the list of benches to run is passed
+	as (optionless) arguments.
+	(&compile): Use &run.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Remove spurious initial empty lines.
+	* data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java,
+	* data/yacc.c: End the @output lines with an @.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Improve the display of sizes.
+	* etc/bench.p.in: Higher precision.
+	Sort by decreasing size.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Don't memcpy C++ structures.
+	* data/lalr1-fusion.cc (b4_symbol_variant): Adjust additional
+	arguments.
+	(variant::build): New overload for
+	copy-construction-that-destroys.
+	(variant::swap): New.
+	(parser::yypush_): Use it in variant mode.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Better defaults for bench.pl.
+	* etc/bench.pl.in ($verbose, $cflags, $iterations): Change the
+	default values.
+	Adjust &verbose uses.
+	(-q, --quiet): New.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Make variant.yy more complex.
+	std::list cannot be copied via memcpy, they are more demanding than
+	std::string.  Use one std::list to strengthen the test.
+	
+	* examples/variant.yy: Use lalr1-fusion.cc, not lalr1.cc.
+	Adjust.
+	Create a list of strings, instead of a single large string.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	bench.pl --bench.
+	* etc/bench.pl.in (--bench, $bench): New.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Sort methods.
+	* data/lalr1-fusion.cc (destroy): Use as() in its definition.
+	Define it after as().
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Useless parens.
+	* data/lalr1-fusion.cc (b4_rhs_location): Remove useless parens.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Issue missing synclines after user actions.
+	* data/c.m4 (b4_case): Issue synclines on the output file.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Remove trailing empty line.
+	* data/lalr1-fusion.cc: Don't add an empty line after the user's
+	epilogue.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Fix output of copyright years.
+	* data/bison.m4 (b4_copyright): Fix the indentation of the
+	copyright year paragraph.
+	Use b4_copyright_years when no years are given.
+	* data/lalr1.cc, data/lalr1-fusion.cc, data/location.cc
+	(b4_copyright_years): New.
+	Use it.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Avoid the spurious initial empty line.
+	* data/lalr1-fusion.cc, data/location.cc: Put a trailing "@" at
+	the end of @output request to suppress the empty line that
+	results.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Remove parser::rhs_number_type.
+	* data/lalr1-fusion.cc (rhs_number_type): No longer define it.
+	(yyrhs_): Use b4_table_define.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Fix iteration type.
+	* data/lalr1-fusion.cc: Use an int to iterate up to an int.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Factor the declaration of the integer tables.
+	* data/lalr1-fusion.cc (b4_table_define): New.
+	Use it.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Fix indentation of tables in lalr1.cc
+	* data/lalr1-fusion.cc: Fix the indentation.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+	Destroy the lhs symbols after reduction.
+	* data/lalr1-fusion.cc (parse): After the user action, when in
+	variant mode, destroy the lhs symbols.
+
 2008-11-03  Akim Demaille  <demaille@gostai.com>
 
 	Simplify yysyntax_error_ use.