]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
Support parametric types.
[bison.git] / ChangeLog
index 592ab9d6cce18dd00a3b6d0d939df927f732e111..4543fdd47db62e9edf58f72dd23c099d6ae896e2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,152 @@
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+       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<std::string> > >.
+       
+       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  <akim@betelgeuse.gostai.ensta.fr>
+
+       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  <akim@betelgeuse.gostai.ensta.fr>
+
+       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  <akim@betelgeuse.gostai.ensta.fr>
+
+       Formatting change.
+
+2008-11-15  Akim Demaille  <akim@betelgeuse.gostai.ensta.fr>
+
+       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  <demaille@gostai.com>
+
+       Better error message.
+       * bootstrap (find_tool): Fix the error message.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+       Update variant.yy to newest interface.
+       * examples/variant.yy: Define lex_symbol.
+       Adjust.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+       Don't use locations in variant.yy.
+       * examples/variant.yy: Adjust to not using locations.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+       Comment changes.
+       * data/local.mk, etc/local.mk, examples/local.mk: Use Automake
+       comments for the license.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+       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  <demaille@gostai.com>
+
+       Comment changes.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+       djgpp/local.mk.
+       * Makefile.am (EXTRA_DIST): Move djgpp related part to...
+       * djgpp/local.mk: this new file.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+       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  <demaille@gostai.com>
+
+       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  <demaille@gostai.com>
+
+       Regen.
+       * src/parse-gram.h, src/parse-gram.h: Regen.
+
+2008-11-15  Akim Demaille  <demaille@gostai.com>
+
+       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  <demaille@gostai.com>
+
+       Remove useless variable.
+       * doc/Makefile.am (srcsrcdir): Remove.
+
 2008-11-15  Akim Demaille  <demaille@gostai.com>
 
        Remove data/Makefile.am.
        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.
        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.
        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_)
        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.
        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.
        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".
        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.
        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.
 
        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.
 
        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
        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.
        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_)