mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-19 09:13:04 +00:00
Add ChangeLog entry for the previous checkin.
This commit is contained in:
62
ChangeLog
62
ChangeLog
@@ -1,3 +1,15 @@
|
|||||||
|
2008-11-11 Akim Demaille <demaille@gostai.com>
|
||||||
|
|
||||||
|
Test 214 was failing: it greps with a pattern containing [ ]*
|
||||||
|
which obviously meant to catch spaces and tabs, but contained only
|
||||||
|
spaces. Tabulations in sources are a nuisance, so to simplify the
|
||||||
|
matter, get rid of all the tabulations in the Java sources. The
|
||||||
|
other skeletons will be treated equally later.
|
||||||
|
|
||||||
|
* data/java.m4, data/lalr1.java: Untabify.
|
||||||
|
* tests/java.at: Simplify AT_CHECK_JAVA_GREP invocations:
|
||||||
|
tabulations are no longer generated.
|
||||||
|
|
||||||
2008-11-11 Paolo Bonzini <bonzini@gnu.org>
|
2008-11-11 Paolo Bonzini <bonzini@gnu.org>
|
||||||
|
|
||||||
* bootstrap.conf: Replace m4/warning.m4 with warnings module.
|
* bootstrap.conf: Replace m4/warning.m4 with warnings module.
|
||||||
@@ -21,7 +33,7 @@
|
|||||||
2008-11-10 Di-an Jan <dianj@freeshell.org>
|
2008-11-10 Di-an Jan <dianj@freeshell.org>
|
||||||
|
|
||||||
* NEWS: Document them.
|
* NEWS: Document them.
|
||||||
|
|
||||||
General Java skeleton improvements.
|
General Java skeleton improvements.
|
||||||
* configure.ac (gt_JAVACOMP): Request target of 1.4, which allows
|
* configure.ac (gt_JAVACOMP): Request target of 1.4, which allows
|
||||||
using gcj < 4.3 in the testsuite, according to comments in
|
using gcj < 4.3 in the testsuite, according to comments in
|
||||||
@@ -83,7 +95,7 @@
|
|||||||
%define init_throws.
|
%define init_throws.
|
||||||
* tests/java.at (Java %parse-param and %lex-param): Adjust grep.
|
* tests/java.at (Java %parse-param and %lex-param): Adjust grep.
|
||||||
(Java constructor init and init_throws): Add tests.
|
(Java constructor init and init_throws): Add tests.
|
||||||
|
|
||||||
2008-11-10 Akim Demaille <demaille@gostai.com>
|
2008-11-10 Akim Demaille <demaille@gostai.com>
|
||||||
|
|
||||||
Update TODO.
|
Update TODO.
|
||||||
@@ -116,7 +128,7 @@
|
|||||||
Make parser::yytranslate static.
|
Make parser::yytranslate static.
|
||||||
Small speedup (1%) on the list grammar. And makes yytranslate_ available
|
Small speedup (1%) on the list grammar. And makes yytranslate_ available
|
||||||
in non member functions.
|
in non member functions.
|
||||||
|
|
||||||
* data/lalr1.cc (yytranslate_): Does not need to be a instance
|
* data/lalr1.cc (yytranslate_): Does not need to be a instance
|
||||||
function.
|
function.
|
||||||
|
|
||||||
@@ -136,7 +148,7 @@
|
|||||||
|
|
||||||
Use "enum" for integral constants.
|
Use "enum" for integral constants.
|
||||||
This is just nicer to read, I observed no speedup.
|
This is just nicer to read, I observed no speedup.
|
||||||
|
|
||||||
* data/lalr1.cc (yyeof_, yylast_, yynnts_, yyempty_, yyfinal_)
|
* data/lalr1.cc (yyeof_, yylast_, yynnts_, yyempty_, yyfinal_)
|
||||||
(yterror_, yyerrcode_, yyntokens_): Define as members of an enum.
|
(yterror_, yyerrcode_, yyntokens_): Define as members of an enum.
|
||||||
(yyuser_token_number_max_, yyundef_token_): Move into...
|
(yyuser_token_number_max_, yyundef_token_): Move into...
|
||||||
@@ -184,12 +196,12 @@
|
|||||||
hard to filter these tables when only a subset of the symbols (say the
|
hard to filter these tables when only a subset of the symbols (say the
|
||||||
tokens, or the nterms, or the tokens that have and external number
|
tokens, or the nterms, or the tokens that have and external number
|
||||||
*and* a type-name) was of interest.
|
*and* a type-name) was of interest.
|
||||||
|
|
||||||
Now instead of monolithic tables, we define one macro per cell. For
|
Now instead of monolithic tables, we define one macro per cell. For
|
||||||
instance "b4_symbol(0, tag)" is a macro name which contents is
|
instance "b4_symbol(0, tag)" is a macro name which contents is
|
||||||
self-decriptive. The macro "b4_symbol" provides easier access to
|
self-decriptive. The macro "b4_symbol" provides easier access to
|
||||||
these cells.
|
these cells.
|
||||||
|
|
||||||
* src/output.c (type_names_output): Remove.
|
* src/output.c (type_names_output): Remove.
|
||||||
(symbol_numbers_output, symbol_definitions_output): New.
|
(symbol_numbers_output, symbol_definitions_output): New.
|
||||||
(muscles_output): Call them.
|
(muscles_output): Call them.
|
||||||
@@ -223,7 +235,7 @@
|
|||||||
|
|
||||||
Support constructor with an argument.
|
Support constructor with an argument.
|
||||||
This improves the "list" bench by 2%.
|
This improves the "list" bench by 2%.
|
||||||
|
|
||||||
* data/lalr1.cc (variant::build): Add an overloaded version with
|
* data/lalr1.cc (variant::build): Add an overloaded version with
|
||||||
an argument.
|
an argument.
|
||||||
* tests/c++.at (AT_CHECK_VARIANT): Check it.
|
* tests/c++.at (AT_CHECK_VARIANT): Check it.
|
||||||
@@ -240,12 +252,12 @@
|
|||||||
Unfortunately it is not possible to reuse the %prec directive. This
|
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
|
is because to please POSIX, we do not require to end the rules with a
|
||||||
semicolon. As a result,
|
semicolon. As a result,
|
||||||
|
|
||||||
foo: bar %prec baz
|
foo: bar %prec baz
|
||||||
|
|
||||||
is ambiguous: either a rule which precedence is that of baz, or a rule,
|
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.
|
and then a declaration of the precedence of the token baz.
|
||||||
|
|
||||||
* doc/bison.texinfo: Document %precedence.
|
* doc/bison.texinfo: Document %precedence.
|
||||||
(Precedence Only): New.
|
(Precedence Only): New.
|
||||||
* src/assoc.h, src/assoc.c (precedence_assoc): New.
|
* src/assoc.h, src/assoc.c (precedence_assoc): New.
|
||||||
@@ -378,7 +390,7 @@
|
|||||||
To display rhs symbols before a reduction, we used information about the rule
|
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
|
reduced, which required the tables yyrhs and yyprhs. Now use rely only on the
|
||||||
state stack to get the same information.
|
state stack to get the same information.
|
||||||
|
|
||||||
* data/lalr1.cc (b4_rhs_data, b4_rhs_state): New.
|
* data/lalr1.cc (b4_rhs_data, b4_rhs_state): New.
|
||||||
Use them.
|
Use them.
|
||||||
(parser::yyrhs_, parser::yyprhs_): Remove.
|
(parser::yyrhs_, parser::yyprhs_): Remove.
|
||||||
@@ -444,7 +456,7 @@
|
|||||||
|
|
||||||
Avoid empty-if warnings.
|
Avoid empty-if warnings.
|
||||||
Reported by Quentin Hocquet.
|
Reported by Quentin Hocquet.
|
||||||
|
|
||||||
* data/lalr1-fusion.cc (YY_SYMBOL_PRINT, YY_REDUCE_PRINT)
|
* data/lalr1-fusion.cc (YY_SYMBOL_PRINT, YY_REDUCE_PRINT)
|
||||||
(YY_STACK_PRINT): Provide some contents even when !YYDEBUG.
|
(YY_STACK_PRINT): Provide some contents even when !YYDEBUG.
|
||||||
|
|
||||||
@@ -509,19 +521,19 @@
|
|||||||
This is used to help the user catch cases where some value gets
|
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
|
ovewritten by a new one. This should not happen, as this will
|
||||||
probably leak.
|
probably leak.
|
||||||
|
|
||||||
Unfortunately this uncovered a bug in the C++ parser itself: the
|
Unfortunately this uncovered a bug in the C++ parser itself: the
|
||||||
lookahead value was not destroyed between two calls to yylex. For
|
lookahead value was not destroyed between two calls to yylex. For
|
||||||
instance if the previous lookahead was a std::string, and then an int,
|
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
|
then the value of the std::string was correctly taken (i.e., the
|
||||||
lookahead was now an empty string), but std::string structure itself
|
lookahead was now an empty string), but std::string structure itself
|
||||||
was not reclaimed.
|
was not reclaimed.
|
||||||
|
|
||||||
This is now done in variant::build(other&) (which is used to take the
|
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
|
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
|
is also destroyed. This incurs a new performance penalty of a few
|
||||||
percent, and union becomes faster again.
|
percent, and union becomes faster again.
|
||||||
|
|
||||||
* data/lalr1-fusion.cc (variant::build(other&)): Destroy other.
|
* data/lalr1-fusion.cc (variant::build(other&)): Destroy other.
|
||||||
(b4_variant_if): New.
|
(b4_variant_if): New.
|
||||||
(variant::built): New.
|
(variant::built): New.
|
||||||
@@ -610,7 +622,7 @@
|
|||||||
Make variant.yy more complex.
|
Make variant.yy more complex.
|
||||||
std::list cannot be copied via memcpy, they are more demanding than
|
std::list cannot be copied via memcpy, they are more demanding than
|
||||||
std::string. Use one std::list to strengthen the test.
|
std::string. Use one std::list to strengthen the test.
|
||||||
|
|
||||||
* examples/variant.yy: Use lalr1-fusion.cc, not lalr1.cc.
|
* examples/variant.yy: Use lalr1-fusion.cc, not lalr1.cc.
|
||||||
Adjust.
|
Adjust.
|
||||||
Create a list of strings, instead of a single large string.
|
Create a list of strings, instead of a single large string.
|
||||||
@@ -805,22 +817,22 @@
|
|||||||
In order to make it easy to perform benchmarks to ensure that there are no
|
In order to make it easy to perform benchmarks to ensure that there are no
|
||||||
performance loss, lalr1.cc is forked into lalr1-fusion.cc. Eventually,
|
performance loss, lalr1.cc is forked into lalr1-fusion.cc. Eventually,
|
||||||
lalr1-fusion.cc will replace lalr1.cc.
|
lalr1-fusion.cc will replace lalr1.cc.
|
||||||
|
|
||||||
Meanwhile, to make sure that lalr1-fusion.cc is correctly exercized by the
|
Meanwhile, to make sure that lalr1-fusion.cc is correctly exercized by the
|
||||||
test suite, the user must install a symbolic link from lalr1.cc to it.
|
test suite, the user must install a symbolic link from lalr1.cc to it.
|
||||||
|
|
||||||
Instead of having three stacks (state, value, location), use a stack
|
Instead of having three stacks (state, value, location), use a stack
|
||||||
of triples. This considerably simplifies the code (and it will be
|
of triples. This considerably simplifies the code (and it will be
|
||||||
easier not to require locations as currently does the C++ parser),
|
easier not to require locations as currently does the C++ parser),
|
||||||
and also gives a 10% speedup according to etc/bench (probably mainly since
|
and also gives a 10% speedup according to etc/bench (probably mainly since
|
||||||
memory allocation is done once instead of three times).
|
memory allocation is done once instead of three times).
|
||||||
|
|
||||||
Another motivation is to make it easier to destruct properly
|
Another motivation is to make it easier to destruct properly
|
||||||
semantic values: now that they are bound to their state (hence
|
semantic values: now that they are bound to their state (hence
|
||||||
symbol type) it will be easier to call the appropriate destructor.
|
symbol type) it will be easier to call the appropriate destructor.
|
||||||
|
|
||||||
These changes should probably benefit the C parser too.
|
These changes should probably benefit the C parser too.
|
||||||
|
|
||||||
* data/lalr1.cc: Copy as... * data/lalr1-fusion.cc: this new
|
* data/lalr1.cc: Copy as... * data/lalr1-fusion.cc: this new
|
||||||
file.
|
file.
|
||||||
(b4_rhs_value, b4_rhs_location): New definitions overriding those
|
(b4_rhs_value, b4_rhs_location): New definitions overriding those
|
||||||
@@ -836,7 +848,7 @@
|
|||||||
Push the state, value, and location at the same time.
|
Push the state, value, and location at the same time.
|
||||||
This is needed to prepare a forthcoming patch that fuses the three
|
This is needed to prepare a forthcoming patch that fuses the three
|
||||||
stacks into one.
|
stacks into one.
|
||||||
|
|
||||||
* data/lalr1.cc (parser::yypush_): New.
|
* data/lalr1.cc (parser::yypush_): New.
|
||||||
(parser::yynewstate): Change the semantics: instead of arriving to
|
(parser::yynewstate): Change the semantics: instead of arriving to
|
||||||
this label when value and location have been pushed, but yystate
|
this label when value and location have been pushed, but yystate
|
||||||
@@ -869,11 +881,11 @@
|
|||||||
variants which (i) requires Boost on the user side, (ii) is slow, and
|
variants which (i) requires Boost on the user side, (ii) is slow, and
|
||||||
(iii) has useless overhead (the parser knows the type of the semantic value
|
(iii) has useless overhead (the parser knows the type of the semantic value
|
||||||
there is no reason to duplicate this information as Boost.Variants do).
|
there is no reason to duplicate this information as Boost.Variants do).
|
||||||
|
|
||||||
This implementation reserves a buffer large enough to store the largest
|
This implementation reserves a buffer large enough to store the largest
|
||||||
objects. yy::variant implements this buffer. It was implemented with
|
objects. yy::variant implements this buffer. It was implemented with
|
||||||
Quentin Hocquet.
|
Quentin Hocquet.
|
||||||
|
|
||||||
* src/output.c (type_names_output): New.
|
* src/output.c (type_names_output): New.
|
||||||
(output_skeleton): Invoke it.
|
(output_skeleton): Invoke it.
|
||||||
* data/c++.m4 (b4_variant_if): New.
|
* data/c++.m4 (b4_variant_if): New.
|
||||||
@@ -893,7 +905,7 @@
|
|||||||
Parameterize the extraction of semantic values.
|
Parameterize the extraction of semantic values.
|
||||||
To make future changes easier, no longer rely on ".TYPE" being the
|
To make future changes easier, no longer rely on ".TYPE" being the
|
||||||
way to get a semantic value.
|
way to get a semantic value.
|
||||||
|
|
||||||
* data/c.m4 (b4_symbol_value): New.
|
* data/c.m4 (b4_symbol_value): New.
|
||||||
Use it.
|
Use it.
|
||||||
* data/c++.m4, data/yacc.c: Use it.
|
* data/c++.m4, data/yacc.c: Use it.
|
||||||
|
|||||||
Reference in New Issue
Block a user