]> git.saurik.com Git - bison.git/commitdiff
Fixes.
authorAkim Demaille <demaille@gostai.com>
Sat, 15 Nov 2008 13:41:58 +0000 (14:41 +0100)
committerAkim Demaille <demaille@gostai.com>
Sat, 15 Nov 2008 13:41:58 +0000 (14:41 +0100)
ChangeLog

index 4543fdd47db62e9edf58f72dd23c099d6ae896e2..fea590450d0ab28d2ccf75a85982918b79c5a6e9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,19 +1,21 @@
 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 '['.
-       
+
+       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 
+       (tag): Accept
        , but not <.
        * data/lalr1.cc (b4_symbol_value, b4_symbol_value_template)
        (b4_symbol_variant): Leave space around types as parameters.
@@ -30,7 +32,7 @@
        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>
 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.
-       
+       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>
 
-       Instead of using make_symbol<TOK_FOO>, generate make_FOO for each token type.
+       Instead of using make_symbol<TOK_FOO>, 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.
 2008-11-13  Akim Demaille  <demaille@gostai.com>
 
        %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.
 2008-11-13  Akim Demaille  <demaille@gostai.com>
 
        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
 2008-11-13  Akim Demaille  <demaille@gostai.com>
 
        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.
 
 2008-11-13  Akim Demaille  <demaille@gostai.com>
 
-       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.
+       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.
+       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...
 2008-11-13  Akim Demaille  <demaille@gostai.com>
 
        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.
 2008-11-13  Akim Demaille  <demaille@gostai.com>
 
        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.
+       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.
+       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.
 2008-11-11  Akim Demaille  <demaille@gostai.com>
 
        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)
 2008-11-10  Akim Demaille  <demaille@gostai.com>
 
        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.
 2008-11-09  Akim Demaille  <demaille@gostai.com>
 
        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.
 2008-11-03  Akim Demaille  <demaille@gostai.com>
 
        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
 
        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)
 2008-11-03  Akim Demaille  <demaille@gostai.com>
 
        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.