X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/fce629c0efad342c9b1c538eb447b22731e031d0..2df9ec37748b216c64d947d2d47ea15f4cab1cc1:/ChangeLog diff --git a/ChangeLog b/ChangeLog index 17023e24..edb5cf66 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,373 @@ +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. + * data/location.cc (position::position): Accept file, line and + column as arguments with default values. + Always qualify initial line and column literals as unsigned. + (location::location): Provide convenience constructors. + +2008-11-15 Akim Demaille + + 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_) + (b4_symbol_constructor_definition_): Instead of generating + specializations of an overloaded template function, just generate + several functions whose names are forged from the token names + without the token.prefix. + (b4_symbol_constructor_declarations): Generate them for all the + symbols, not just by class of symbol type, now that instead of + specializing a function template by the token, we generate a + function named after the token. + (b4_symbol_constructor_specialization_) + (b4_symbol_constructor_specializations): Remove. + * etc/bench.pl.in: Adjust to this new API. + +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. + + * 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. + +2008-11-13 Akim Demaille + + Compute at M4 time some of the subtractions. + * data/lalr1.cc (b4_substract): 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. + + * data/lalr1.cc (symbol::token): New. + (yytoknum_): Define when %define lex_symbol, independently of + %debug. + (yytoken_number_): Move into... + (symbol::token): here, since that's the only use. + The other one is YYPRINT which was not officially supported + by lalr1.cc, and anyway it did not work since YYPRINT uses this + array under a different name (yytoknum). + +2008-11-13 Akim Demaille + + YYERRCODE. + * TODO (YYERRCODE): Mention the case of $undef. + +2008-11-13 Akim Demaille + + TODO: YYPRINT. + * TODO (YYPRINT): New. + +2008-11-13 Akim Demaille + + Comment changes. + * data/lalr1.cc, data/yacc.c: Fix the description of the + yytranslate and yytoknum tables. + +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. + + * data/lalr1.cc (b4_symbol_constructor_definition_): Qualify + location_type with the class name. + Since will now be output in the header, declare "inline". + No longer use b4_symbol_constructor_specializations, but + b4_symbol_constructor_definitions in the header. + Don't call it in the *.cc file. + +2008-11-13 Akim Demaille + + Define yytranslate in the header for lex_symbol. + * data/lalr1.cc: Move the invocation of b4_yytranslate_definition + into the header file when using %define lex_symbol. + (yytranslate_): Declare inline. + +2008-11-13 Akim Demaille + + 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. + + * data/lalr1.cc: Move symbol_type and symbol_base_type + constructors into... + (b4_symbol_constructor_definitions): here. + Adjust. + +2008-11-13 Akim Demaille + + 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. + +2008-11-13 Akim Demaille + + Remove useless class specification. + * data/lalr1.cc (b4_symbol_constructor_specialization_): No need + to refer to the class name to use a type defined by the class for + arguments of member functions. + +2008-11-13 Akim Demaille + + Finer input type for yytranslate. + This patch is debatable: the tradition expects yylex to return an int + which happens to correspond to token_number (which is an enum). This + allows for instance to return characters (such as '*' etc.). But this + 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. + +2008-11-13 Akim Demaille + + Honor lex-params in %define lex_symbol mode. + * data/lalr1.cc: Use b4_lex_param. + +2008-11-13 Akim Demaille + + Simplify names. + * src/output.c (symbol_definitions_output): Rename symbol + attributes type_name and has_type_name as type and has_type. + * data/lalr1.cc: Adjust uses. + +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. + + * 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 + number. + Adjust its caller for new-line issues. + +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. + + * src/output.c (is_identifier): Move to... + * src/symtab.c (is_identifier): here. + * src/symtab.h, src/symtab.c (symbol_id_get): New. + * src/output.c (symbol_definitions_output): Use it to define "id" + and "has_id". + Remove the definition of "tag_is_id". + * data/lalr1.cc: Use the "id" and "has_id" whereever "tag" and + "tag_is_id" were used to produce code. + We still use "tag" for documentation. + +2008-11-11 Akim Demaille + + Locations are no longer required by lalr1.cc. + * data/lalr1.cc (_b4_args, b4_args): New. + Adjust all uses of locations to make them optional. + * tests/c++.at (AT_CHECK_VARIANTS): No longer use the locations. + (AT_CHECK_NAMESPACE): Check the use of locations. + * tests/calc.at (_AT_DATA_CALC_Y): Adjust to be usable with or + without locations with lalr1.cc. + Test these cases. + * tests/output.at: Check lalr1.cc with and without location + support. + * tests/regression.at (_AT_DATA_EXPECT2_Y, _AT_DATA_DANCER_Y): + Don't use locations. + +2008-11-11 Akim Demaille + + AT_FULL_COMPILE. + * tests/local.at (AT_FULL_COMPILE): New. + * tests/actions.at, tests/calc.at, tests/regression.at: Use it. + +2008-11-11 Akim Demaille + + Support parens in calc++. + * doc/bison.texinfo (Calc++ Scanner, Calc++ Parser): Support parens. + * examples/calc++/test (run): Check the expected output. + Adjust callers. + Check parens too. + +2008-11-11 Akim Demaille + + Simplify lalr1.cc since %defines is mandatory. + * data/lalr1.cc: Remove useless calls to b4_defines_if. + +2008-11-11 Akim Demaille + + TODO: yyfmt. + * TODO (yysyntax_error): New item. + +2008-11-11 Akim Demaille + + Prefer M4 to CPP. + * data/lalr1.cc: Use b4_error_verbose_if instead of #if + YYERROR_VERBOSE. + +2008-11-11 Akim Demaille + + Support i18n of the parse error messages. + * TODO (lalr1.cc/I18n): Remove. + * data/lalr1.cc (yysyntax_error_): Support the translation of the + error messages, as done in yacc.c. + Stay within the yy* pseudo namespace. + +2008-11-11 Akim Demaille + + More TODO. + * TODO (single stack, yysyntax_error): New. + +2008-11-11 Akim Demaille + + Make it possible to return a symbol_type from yylex. + * data/lalr1.cc (b4_lex_symbol_if): New. + (parse): When lex_symbol is defined, expected yylex to return the + complete lookahead. + * etc/bench.pl.in (generate_grammar_list): Extend to support this + yylex interface. + (bench_variant_parser): Exercise it. + +2008-11-11 Akim Demaille + + Remove useless bench case. + * etc/bench.pl.in (bench_variant_parser): VARIANT_DESTROY is + no longer used. + +2008-11-11 Akim Demaille + + Improve display of directives. + * etc/bench.pl.in (parse_term): Don't add useless eol. + +2008-11-11 Akim Demaille + + Use string_cast in the bench. + * etc/bench.pl.in (generate_grammar_list): Define and use + string_cast. + +2008-11-11 Akim Demaille + + Replace yychar with a Boolean. + * data/lalr1.cc (parse::yychar): Replace by... + (parse::yyempty): this. + +2008-11-11 Akim Demaille + + Factor the tables. + * TODO: New item. + +2008-11-11 Akim Demaille + + Let yytranslate handle the eof case. + * data/lalr1.cc (yytranslate_): Handle the EOF case. + Adjust callers. + No longer expect yychar to be equal to yyeof_, rather, test the + lookahead's (translated) kind. + +2008-11-11 Akim Demaille + + yychar cannot be empty in yyerrlab. + * TODO (yychar == yyempty_): New. + * data/lalr1.cc: Remove the handling of this case. + This eases forthcoming changes related to yychar and yytranslate. + 2008-11-11 Akim Demaille Bench: syntactic sugar for %define/#define. @@ -22,7 +392,7 @@ 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_)