X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/0634493cdde92cbdb8d9fb95a5bebe596bb53798..4182a0a18681fe4808f474441d62c5d2489e24e4:/ChangeLog?ds=sidebyside diff --git a/ChangeLog b/ChangeLog index a5cd3b97..7b3358ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,331 @@ +2008-11-21 Di-an Jan + + Implement no-XXX arguments for --warnings, --report, --trace. + * src/getargs.c (flags_argmatch): Handles no-XXX. + Fix typo in doxygen comment. + +2008-11-21 Akim Demaille + + Display the changes in cross-options.texi. + * build-aux/cross-options.pl ($sep): New, to separate items. + * doc/local.mk ($(CROSS_OPTIONS_TEXI)): Use diff to display the + changes. + +2008-11-20 Di-an Jan + + Improves options in the manual. + * doc/bison.texinfo (-g, -x): Add space before argument. + (Option Cross Key): Implement FIXME: listing directives also. + * build-aux/cross-options.pl: Read from rather than <>. + (Short Option): Special case -d. Put arguments inside @option. + (Bison Directive): Add column, automatically extracted from + src/scan-gram.l (actual name passed as the first argument) + with special case for %define. + * doc/local.mk (doc/cross-options.texi): Pass src/scan-gram.l + to build-aux/cross-options.pl. + * src/getargs.c (usage): Document limitations of cross-options.pl. + * src/scan-gram.l: Likewise. + +2008-11-18 Joel E. Denny + + Fix unexpanded macros in GLR defines file. + Reported by Csaba Raduly at + . + * THANKS (Csaba Raduly): Add. + * data/glr.c: Fix overquoting on b4_prefix for yylval and yylloc. + * tests/calc.at (_AT_DATA_CALC_Y): If %defines is specified, generate + lexer in a separate module that includes the defines file. + (AT_CHECK_CALC): From AT_FULL_COMPILE, request compilation of lexer + source. + * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Push AT_DEFINES_IF. + Adjust AT_LOC and AT_VAL to use AT_NAME_PREFIX. + (AT_BISON_OPTION_POPDEFS): Pop AT_DEFINES_IF. + (AT_DATA_SOURCE_PROLOGUE): New. + (AT_DATA_GRAMMAR_PROLOGUE): Use AT_DATA_SOURCE_PROLOGUE. + (AT_DATA_SOURCE): New. + (AT_FULL_COMPILE): Extend to support an additional source file. + +2008-11-18 Akim Demaille + + More TODO. + * TODO: More short term issues. + +2008-11-18 Akim Demaille + + Regen. + * src/parse-gram.h, src/parse-gram.c: Regen. + +2008-11-18 Akim Demaille + + Use b4_subtract where possible. + * data/lalr1.cc (b4_subtract): Move to... + * data/bison.m4: here. + * data/glr.c (b4_rhs_data): Use it. + * data/yacc.c (b4_rhs_value, b4_rhs_location): Use it. + +2008-11-18 Akim Demaille + + Remove incorrect mode specification. + * data/glr.cc: Don't pretend it's C code. + +2008-11-17 Joel E. Denny + + Simplify last patch slightly. + * src/getargs.c (getargs): Here. + +2008-11-17 Joel E. Denny + + Fix last warning from --enable-gcc-warnings. + * src/getargs.c (getargs): Don't assign const address to non-const + pointer. + +2008-11-17 Joel E. Denny + + Don't let maintainer-*-check targets force a version update. + * cfg.mk (_is-dist-target): Implement. maintainer-check* was already + handled. + +2008-11-17 Di-an Jan + + * doc/bison.texinfo: Synchronize ``Detail Node Listing''. + Align menus. Adjust word wrapping. Use node names for menu names. + (Examples): Don't abbreviate node names. + (LocalWords): Remove abbreviations. + (Copying): Make description a sentence. + (Java Action Features): Remove period to match the rest of menu. + +2008-11-17 Di-an Jan + + Handles several --enable-gcc-warnings. + * src/getargs.c (command_line_location): Set parameters to void. + * src/output.c (symbol_type_name_cmp): Make static. + (symbols_by_type_name): Set parameters to void. + (symbol_definitions_output): Remove unused parameter. Rename as... + (prepare_symbol_definitions): this. + (muscles_output): Move symbol_definitions_output to... + (output): here as prepare_symbol_definitions. + * tests/c++.at (AT_CHECK_VARIANTS): Remove unused parameters of main. + (AT_CHECK_NAMESPACE): Make unused parameter lloc unnamed. + +2008-11-17 Di-an Jan + + * tests/c++.at (AT_CHECK_VARIANTS): Fixes tests 198-202. + Use AT_DATA_GRAMMAR instead of AT_DATA for compiled tests. + +2008-11-16 Akim Demaille + + Add missing $(EXEEXT). + * doc/local.mk ($(CROSS_OPTIONS_TEXI)): The target is + "src/bison$(EXEEXT)". + Reported by Di-an Jan. + +2008-11-15 Akim Demaille + + * TODO: Update. + +2008-11-15 Akim Demaille + + Formatting changes. + * tests/input.at: here. + +2008-11-15 Akim Demaille + + Remove duplicate header inclusion. + * src/LR0.c: here. + +2008-11-15 Akim Demaille + + * src/parse-gram.h, src/parse-gram.c: Regen. + +2008-11-15 Akim Demaille + + Support parametric types. + + There are two issues to handle: first scanning nested angle + bracket pairs to support types such as std::pair< std::string, + std::list > >. + + Another issue is to address idiosyncracies of C++: do not glue two + closing angle brackets together (otherwise it's operator>>), and + avoid sticking blindly a TYPE to the opening <, as it can result + in '<:' which is a digraph for '['. + + * src/scan-gram.l (brace_level): Rename as... + (nesting): this. + (SC_TAG): New. + Implement support for complex tags. + (tag): Accept + , but not <. + * data/lalr1.cc (b4_symbol_value, b4_symbol_value_template) + (b4_symbol_variant): Leave space around types as parameters. + * examples/variant.yy: Use nested template types and leading ::. + * src/parse-gram.y (TYPE, TYPE_TAG_ANY, TYPE_TAG_NONE, type.opt): + Rename as... + (TAG, TAG_ANY, TAG_NONE, tag.opt): these. + * tests/c++.at: Test parametric types. + +2008-11-15 Akim Demaille + + Test token.prefix. + This is not sufficient, but we test at least that the make_SYMBOL + interface is not affected by token.prefix. A more general test + will be implemented when the support of token.prefix is generalized + to more skeletons. + + * tests/c++.at: One more variant test, using token.prefix. + +2008-11-15 Akim Demaille + + Test the make_TOKEN interface. + * tests/c++.at (AT_CHECK_VARIANTS): Require and use locations. + Factor the common code in yylex. + Use it to test "%define lex_symbol". + +2008-11-15 Akim Demaille + + Formatting change. + +2008-11-15 Akim Demaille + + Simplify code for variants bench marks. + * etc/bench.pl.in (&generate_grammar_list): Define and use + location_type. + Factor the common code in yylex. + +2008-11-15 Akim Demaille + + Better error message. + * bootstrap (find_tool): Fix the error message. + +2008-11-15 Akim Demaille + + Update variant.yy to newest interface. + * examples/variant.yy: Define lex_symbol. + Adjust. + +2008-11-15 Akim Demaille + + Don't use locations in variant.yy. + * examples/variant.yy: Adjust to not using locations. + +2008-11-15 Akim Demaille + + Comment changes. + * data/local.mk, etc/local.mk, examples/local.mk: Use Automake + comments for the license. + +2008-11-15 Akim Demaille + + Remove tests/Makefile.am. + * tests/Makefile.am: Rename as... + * tests/local.mk: this. + * Makefile.am, configure.ac: Adjust. + * Makefile.am (DISTCLEANFILES): Define. + (maintainer-check, maintainer-xml-check, maintainer-push-check): + Remove, we no longer need to bounce to the real targets. + +2008-11-15 Akim Demaille + + Comment changes. + +2008-11-15 Akim Demaille + + djgpp/local.mk. + * Makefile.am (EXTRA_DIST): Move djgpp related part to... + * djgpp/local.mk: this new file. + +2008-11-15 Akim Demaille + + Remove doc/Makefile.am. + * doc/Makefile.am: Rename as... + * doc/local.mk: this. + Adjust paths + * Makefile.am, configure.ac: Adjust. + * Makefile.am (MOSTLYCLEANFILES): New. + * src/local.mk: Adjust. + +2008-11-15 Akim Demaille + + Move sc_tight_scope into maint.mk. + It does not work, and I don't know how it was supposed to work: it + seems to be looking for sources in the build tree. I just moved + it at a better place, fixing it is still required. + + * src/local.mk (echo): Remove. + (sc_tight_scope): Move to... + * maint.mk: here. + +2008-11-15 Akim Demaille + + Regen. + * src/parse-gram.h, src/parse-gram.h: Regen. + +2008-11-15 Akim Demaille + + Remove src/Makefile.am. + * src/Makefile.am: Rename as... + * src/local.mk: this. + Prefix all the paths with src/. + (AUTOMAKE_OPTIONS): Build object files in the sub dirs. + (AM_CPPFLAGS): Find find in builddir/src. + (YACC): Move the flags into... + (AM_YFLAGS): here. + * maint.mk (sc_tight_scope): Disable. + It used to bounce to the version in src/Makefile.am which is now + part of this very Makefile. + * Makefile.am, configure.ac: Adjust. + * src/scan-code-c.c, src/scan-code.l: We can no longer rely on + include "..." to find files "here": we are no longer in src/, so + qualify the includes with src/. + * doc/Makefile.am (PREPATH): No longer include the top_builddir + prefix. + (.x.1): Adjust to be able to create src/foo from the top level + Makefile, instead of going bounce to src/Makefile the creation of + foo. + +2008-11-15 Akim Demaille + + Remove useless variable. + * doc/Makefile.am (srcsrcdir): Remove. + +2008-11-15 Akim Demaille + + Remove data/Makefile.am. + * data/Makefile.am: Rename as... + * data/local.mk: this. + Adjust paths. + * Makefile.am, configure.ac: Adjust. + +2008-11-15 Akim Demaille + + Remove etc/Makefile.am. + * etc/Makefile.am: Rename as... + * etc/local.mk: this. + Adjust. + * Makefile.am, configure.ac: Adjust. + +2008-11-15 Akim Demaille + + Remove examples/local.mk. + examples/calc++/Makefile.am might be interesting to keep as is, since + it is an example in itself. + + * examples/Makefile.am: Rename as... + * examples/local.mk: this. + Adjust. + * Makefile.am, configure.ac: Adjust. + +2008-11-15 Akim Demaille + + Remove build-aux/Makefile.am. + Recursive Makefiles are really way too slow, let's get rid of some of + them. + + * build-aux/Makefile.am: Rename as... + * build-aux/local.mk: this. + Adjust paths. + * Makefile.am, configure.ac: Adjust. + 2008-11-15 Akim Demaille Provide convenience constructors for locations and positions. @@ -8,11 +336,12 @@ 2008-11-15 Akim Demaille - Instead of using make_symbol, generate make_FOO for each token type. + Instead of using make_symbol, generate make_FOO for each + token type. Using template buys us nothing, and makes it uselessly complex to construct a symbol. Besides, it could not be generalized to other languages, while make_FOO would work in C/Java etc. - + * data/lalr1.cc (b4_symbol_): New. (b4_symbol): Use it. (b4_symbol_constructor_declaration_) @@ -31,11 +360,11 @@ 2008-11-13 Akim Demaille %define token.prefix. - Provide a means to add a prefix to the name of the tokens as output in the - generated files. Because of name clashes, it is good to have such a - prefix such as TOK_ that protects from names such as EOF, FILE etc. - But it clutters the grammar itself. - + Provide a means to add a prefix to the name of the tokens as + output in the generated files. Because of name clashes, it is + good to have such a prefix such as TOK_ that protects from names + such as EOF, FILE etc. But it clutters the grammar itself. + * data/bison.m4 (token.prefix): Empty by default. * data/c.m4 (b4_token_enum, b4_token_define): Use it. * data/lalr1.cc (b4_symbol): Ditto. @@ -43,15 +372,14 @@ 2008-11-13 Akim Demaille Compute at M4 time some of the subtractions. - * data/lalr1.cc (b4_substract): New. + * data/lalr1.cc (b4_subtract): New. (b4_rhs_data): Use it. 2008-11-13 Akim Demaille symbol::token. - This is allows the user to get the type of a token return by - yylex. - + This allows the user to get the type of a token returned by yylex. + * data/lalr1.cc (symbol::token): New. (yytoknum_): Define when %define lex_symbol, independently of %debug. @@ -80,9 +408,10 @@ 2008-11-13 Akim Demaille Define make_symbol in the header. - To reach good performances these functions should be inlined (yet this is - to measure precisely). To this end they must be available to the caller. - + To reach good performances these functions should be inlined (yet + this is to measure precisely). To this end they must be available + to the caller. + * data/lalr1.cc (b4_symbol_constructor_definition_): Qualify location_type with the class name. Since will now be output in the header, declare "inline". @@ -99,14 +428,15 @@ 2008-11-13 Akim Demaille - Define the constructors of symbol_type in b4_symbol_constructor_definitions. + Define the constructors of symbol_type in + b4_symbol_constructor_definitions. The constructors are called by the make_symbol functions, which a - forthcoming patch will move elsewhere. Hence the interest of putting them - together. - - The stack_symbol_type does not need to be moved, it is used only by the - parser. - + forthcoming patch will move elsewhere. Hence the interest of + putting them together. + + The stack_symbol_type does not need to be moved, it is used only + by the parser. + * data/lalr1.cc: Move symbol_type and symbol_base_type constructors into... (b4_symbol_constructor_definitions): here. @@ -117,7 +447,7 @@ Make it easier to move the definition of yytranslate_. Forthcoming changes will make it possible to use yytranslate_ from outside the parser implementation file. - + * data/lalr1.cc (b4_yytranslate_definition): New. Use it. @@ -137,7 +467,7 @@ goes against the stronger typing I am trying to have with the new lex interface which return a symbol_type. So in this case, feed yytranslate_ with a token_type. - + * data/lalr1.cc (yytranslate_): When in %define lex-symbol, expect a token_type. @@ -156,10 +486,10 @@ 2008-11-13 Akim Demaille Use b4_type_names for the union type. - The union used to compute the size of the variant used to iterate over the - type of all the symbols, with a lot of redundancy. Now iterate over the - lists of symbols having the same type-name. - + The union used to compute the size of the variant used to iterate + over the type of all the symbols, with a lot of redundancy. Now + iterate over the lists of symbols having the same type-name. + * data/lalr1.cc (b4_char_sizeof_): New. (b4_char_sizeof): Use it. Adjust to be called with a list of numbers instead of a single @@ -169,13 +499,13 @@ 2008-11-13 Akim Demaille Define the "identifier" of a symbol. - Symbols may have several string representations, for instance if they - have an alias. What I call its "id" is a string that can be used as - an identifier. May not exist. - - Currently the symbols which have the "tag_is_id" flag set are those that - don't have an alias. Look harder for the id. - + Symbols may have several string representations, for instance if + they have an alias. What I call its "id" is a string that can be + used as an identifier. May not exist. + + Currently the symbols which have the "tag_is_id" flag set are + those that don't have an alias. Look harder for the id. + * src/output.c (is_identifier): Move to... * src/symtab.c (is_identifier): here. * src/symtab.h, src/symtab.c (symbol_id_get): New. @@ -314,14 +644,14 @@ 2008-11-11 Akim Demaille Introduce make_symbol. - make_symbol provides a means to construct a full symbol (kind, value, - location) in a single shot. It is meant to be a Symbol constructor, - parameterized by the symbol kind so that overloading would prevent - incorrect kind/value pairs. Unfortunately parameterized constructors do - not work well in C++ (unless the parameter also appears as an argument, - which is not acceptable), hence the use of a function instead of a - constructor. - + make_symbol provides a means to construct a full symbol (kind, + value, location) in a single shot. It is meant to be a Symbol + constructor, parameterized by the symbol kind so that overloading + would prevent incorrect kind/value pairs. Unfortunately + parameterized constructors do not work well in C++ (unless the + parameter also appears as an argument, which is not acceptable), + hence the use of a function instead of a constructor. + * data/lalr1.cc (b4_symbol_constructor_declaration_) (b4_symbol_constructor_declarations) (b4_symbol_constructor_specialization_) @@ -473,8 +803,8 @@ 2008-11-10 Akim Demaille Make parser::yytranslate static. - Small speedup (1%) on the list grammar. And makes yytranslate_ available - in non member functions. + Small speedup (1%) on the list grammar. And makes yytranslate_ + available in non member functions. * data/lalr1.cc (yytranslate_): Does not need to be a instance function. @@ -734,9 +1064,10 @@ 2008-11-09 Akim Demaille 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. + 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. @@ -1161,18 +1492,22 @@ 2008-11-03 Akim Demaille Fuse the three stacks into a single one. - 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, - lalr1-fusion.cc will replace lalr1.cc. - 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. + 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, lalr1-fusion.cc will replace + lalr1.cc. - Instead of having three stacks (state, value, location), use a stack - of triples. This considerably simplifies the code (and it will be - easier not to require locations as currently does the C++ parser), - and also gives a 10% speedup according to etc/bench (probably mainly since - memory allocation is done once instead of three times). + 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. + + Instead of having three stacks (state, value, location), use a + stack of triples. This considerably simplifies the code (and it + will be easier not to require locations as currently does the C++ + parser), and also gives a 10% speedup according to + etc/bench (probably mainly since memory allocation is done once + instead of three times). Another motivation is to make it easier to destruct properly semantic values: now that they are bound to their state (hence @@ -1180,8 +1515,8 @@ These changes should probably benefit the C parser too. - * data/lalr1.cc: Copy as... * data/lalr1-fusion.cc: this new - file. + * data/lalr1.cc: Copy as... + * data/lalr1-fusion.cc: this new file. (b4_rhs_value, b4_rhs_location): New definitions overriding those from c++.m4. (state_stack_type, semantic_stack_type, location_stack_type) @@ -1224,14 +1559,15 @@ 2008-11-03 Akim Demaille Use variants to support objects as semantic values. - This patch was inspired by work by Michiel De Wilde. But he used Boost - 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 - there is no reason to duplicate this information as Boost.Variants do). - - This implementation reserves a buffer large enough to store the largest - objects. yy::variant implements this buffer. It was implemented with - Quentin Hocquet. + This patch was inspired by work by Michiel De Wilde. But he used + Boost 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 there is no reason to duplicate this + information as Boost.Variants do). + + This implementation reserves a buffer large enough to store the + largest objects. yy::variant implements this buffer. It was + implemented with Quentin Hocquet. * src/output.c (type_names_output): New. (output_skeleton): Invoke it.