X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/6a5aa0cdbb6468a33a3c131a6fca0cbba1e6ccfa..cb823b6f0c5d025e3667f994222037476c41ea1a:/ChangeLog diff --git a/ChangeLog b/ChangeLog index 592ab9d6..4543fdd4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,152 @@ +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. @@ -19,7 +168,7 @@ 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. @@ -30,7 +179,7 @@ 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. @@ -50,7 +199,7 @@ 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_) @@ -73,7 +222,7 @@ 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. @@ -89,7 +238,7 @@ 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. @@ -120,7 +269,7 @@ 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". @@ -141,10 +290,10 @@ 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. @@ -155,7 +304,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. @@ -175,7 +324,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. @@ -197,7 +346,7 @@ 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 @@ -210,10 +359,10 @@ 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. @@ -359,7 +508,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_)