bisonc++ (1.5.0)

  * The algorithms for lookahead propagation and detection of grammars not
    deriving sentences have been redesigned and rewritten. The previously used
    algorithm propagating lookaheads suffered from spurious reduce/reduce
    conflicts for some grammars (e.g., see the one in
    documentation/regression/icmake1). Also, 1.4.0 choked on a (fairly)
    complex grammar like the one used by icmake V 7.00. These problems are now
    solved, and comparable problems should no longer occur.
    
    The layout and organization of the output has been changed as well. Now
    there are basically three forms of verbose output: No verbose output, in
    which the file *.output is not written, standard verbose output, in which
    an overview of the essential parts of the grammar is written to the file
    *.output, and --construction, in which case all lookaheadsets, as well as
    the first and follow sets are written to *.output.

    Multiple new classes were added, and some previously existing classes were
    removed. See the file README.class-setup and the file CLASSES for details.

    The man-page and manual were adapted on minor points.

bisonc++ (1.4.0)

  * It turned out that in the previous versions, S/R conflicts were also
    produced for empty default reductions. Now detectSR() checks whether there
    is one empty reduction. If so, no S/R conflicts are possible in that
    state. Instead a SHIFT (which is already the default solution of a S/R
    conflict) is performed in these situations. So, now for all
    tokens for which a known continuation state exist the known continuation
    state is selected; for all other tokens the default reduction (reducing to
    its associated state) is selected. See state/detectsr.cc for details.
    
    Since the above change also represents a change of algorithm, the
    subversion was incremented. I added a sub-subversion to have a separate
    level of version-numbers for minor modifications.

    The documentation/regression/run script did not properly return to its
    initial working directory, and it called a test that no longer
    existed. Both errors have been repaired.

    Some leftover references to the Academic Free License were replaced by
    references to the GPL.

    The previously used scripts below make/ are obsolete and were removed from
    this and future distributions. Icmake should be used instead, for which a
    top-level script (build) and support scripts in the ./icmake/ directory
    are available. Icmake is available on a great many architectures. See the
    file INSTALL (and INSTALL.im, replacing the previously used INSTALL.cf)
    for further details.

    All plain `unsigned' variables were changed to `size_t'

bisonc++ (1.03-1) unstable; urgency=low

  * License changed to the GNU GENERAL PUBLIC LICENSE. See the file
    `copyright'. 

    According to the manual page, the debug-output generated by parsers
    created using the --debug option should be user-controllable through the
    `setDebug()' member. These feature is now actually implemented.

    The usage info now correctly shows the -V flag as a synonym for the 
    --verbose option.

    From now on this file will contain the `upstream' changes. The Debian
    related changes are in changelog.Debian.gz

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Wed, 19 Jul 2006 13:12:39 +0200

bisonc++ (1.02) unstable; urgency=low

  * Following suggestions made by George Danchev, this version was compiled by
    the unstable's g++ compiler (version >= 4.1), which unveiled several flaws
    in the library's class header files. These flaws were removed (i.e.,
    repaired).

    In order to facilitate compiler selection, the compiler to use is defined
    in the INSTALL.cf file.

    The debian control-files (i.e., all files under the debian subdirectory)
    were removed from the source distribution, which is now also named in
    accordance with the Debian policy. A diff.gz file was added.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu,  6 Jul 2006 12:41:43 +0200

bisonc++ (1.01) unstable; urgency=low

  * Synchronized the version back to numbers-only, adapted the debian
    standards and the required bobcat library in the debian/control file.
    No implementation changes as compared to the previous version, but I felt 
    the need to join various sub-sub-versions back to just one standard
    version. 

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 26 Jun 2006 12:11:15 +0200

bisonc++ (1.00a) unstable; urgency=low

  * Debian's Linda and lintian errors, warnings and notes processed. No
    messages are generated by linda and lintian in this version.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 28 May 2006 14:26:03 +0200

bisonc++ (1.00) unstable; urgency=low

  * Bisonc++ Version 1.00 has changed markedly as compared to its predecessor,
    bisonc++ 0.98.510.
    
    The main reason for upgrading to 1.00 following a year of testing the 0.98
    series is that the grammar analysis and lookahead propagation algorithms
    as used in bisonc++ 0.98.510 were either too cumbersome and contained some
    unfortunate errors.
    
    The errors were discovered during my 2005-2006 C++ class, where some
    students produced grammars which were simple, but were incorrectly
    analyzed by bisonc++ 0.98. It turned out that the lookahead (LA)
    propagation contained several flaws. Furthermore, a plain and simple bug
    assigned the last-used priority to terminal tokens appearing literally in
    the grammar (i.e., without explicitly defining them in a %token or
    comparable directive). A simple, but potentially very confusing bug.
    
    At the cosmetic level, the information produced with the --construction
    option was modified, aiming at better legibility of the construction
    process.
    
    The `examples' directory was reduced in size, moving most examples to a
    new directory `regression', which now contains a script `run' that can be
    used to try each of the examples below the `regression' directory. Some of
    the examples call `bison', so in order to run those examples `bison' must
    be installed as well. It usually is.
    
    A minor backward IN-compatibility results from a change in prototype of
    some private parser member functions. This should only affect exising
    Parser.h header files. Simply replacing the `support functions for
    parse()' section shown at the end of the header file by the following
    lines should make your header file up-to-date again. Note that bisonc++
    does not by itself rewrite Parser.h to prevent undoing any modifications
    you may have implemented in the parser-class header file:
    
        // support functions for parse():
            void executeAction(int ruleNr);
            void errorRecovery();
            int lookup();
            void nextToken();
    
    Please note that this version depends on bobcat 1.7.1 or beyond. If you
    compile bobcat yourself, then you may want to know that bobcat's Milter
    and Xpointer classes are not used by bisonc++, so they could optionally be
    left out of bobcat's compilation.


 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun,  7 May 2006 15:10:05 +0200

bisonc++ (0.98.510) unstable; urgency=low

  * When no %union has been declared, no $$ warnings are issued anymore about
    non-exisiting types;
    When no %union has been declared a $<type>i or $<type>$ warning is issued
    about non-exisiting types.

    The State table (in the generated parse.cc file) containing `PARSE_ACCEPT'
    was created with a `REDUCE' indication for grammars whose start symbol's
    production rules were non-repetitive. This was repaired in
    state/writestatearray.cc by setting the (positive) non-reduce indication
    for states using shifts and/or the accept state.

    The logic in writeStateArray() was modifed: a separate ShiftReduce::Status
    variable is now used to store the possible actions: SHIFT, REDUCE or
    ACCEPT. The tables show `SHIFTS' if a state uses shifts; `ACCEPTS' if a
    state contains PARSE_ACCEPT; and `REDUCE' otherwise.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Tue, 21 Mar 2006 20:47:49 +0100

bisonc++ (0.98.500) unstable; urgency=low

  * Handling of $<type>i and $<type>$ repaired, added the 
    %negative-dollar-indices directive.

    $<type> specifications were not properly parsed. Instead of $<type>i or
    $<type>$ constructions like $i<type> and $$<type> were parsed, which is
    contrary to the manual's specification. The function parsing the $-values
    is defined in parser/handledollar.cc. 

    The handling of negative $-indices is improved. Negative $-indices are
    used when synthesizing attributes. In that context, $0 is useful, since it
    refers to the nonterminal matched before the current rule is starting to
    be used, allowing rules like `vardef: typename varlist ' where `varlist'
    inherits the type specification defined at `typename'. 

    In most situations indices are positive. Therefore bisonc++ will warn when
    zero or non-positive $-indices are seen. The %negative-dollar-indices
    directive may be used to suppress these warnings.

    $-indices exceeding the number of elements continue to cause an error. 

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun,  5 Mar 2006 13:59:08 +0100

bisonc++ (0.98.402) unstable; urgency=low

  * links against bobcat 1.6.0, using bobcat's new Arg:: interface

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 26 Dec 2005 19:25:42 +0100

bisonc++ (0.98.400) unstable; urgency=low

  * state/writestatearray.cc adds {} around individual union values to allow
    warningless compilation of the generated parse.cc file by g++-4.0.

    bisonc++ is now itself too compiled by g++-4.0.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Fri, 18 Nov 2005 22:46:06 +0100

bisonc++ (0.98.007) unstable; urgency=low

  * Added a README.flex file giving some background information about the
    provided implementation of the lexical scanner (bisonc++/scanner/yylex.cc)

    Modified the compilation scripts: bisconc++/flex/FlexLexer.h is now
    included by default. This FlexLexer.h file is expected by
    bisonc++/scanner/yylex.cc and by the Scanner class.

    Simplified some compilation scripts.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Fri,  9 Sep 2005 11:42:24 +0200

bisonc++ (0.98.006) unstable; urgency=low

  * Removed the dependency on `icmake'. No change of functionality
    See the instructions in the `INSTALL' file when you want to compile and
    install `bisonc++' yourself, rather than using the binary (.deb)
    distribution. 

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat,  3 Sep 2005 17:42:29 +0200

bisonc++ (0.98.005) unstable; urgency=low

  * Removed the classes Arg, Errno, Msg and Wrap1, using the Bobcat library's
    versions of these classes from now on. No feature-changes.

    Added minor modifications to the `build' script.

    Annoying Error: The function `ItemSets::deriveAction()' did not recognize
    the `ACCEPT' action, so some (most ?) grammars could not be properly
    recognized. I applied a quick hack: if an action isn't `shift' or
    `reduce', it can be `accept', resulting in acceptance of the grammar. This
    solves the actual problem, but I'll have to insepct this in a bit more
    detail. For now, it should work ok.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 22 Aug 2005 13:05:28 +0200

bisonc++ (0.98.004) unstable; urgency=low

  * When new lookahead set elements are added to existing states,
    d_recheckState in itemsets/lookaheads.cc (ItemSets::checkLookaheads()) was
    reassigned to the state index whose lookaheadset was enlarged. However, if
    that happened for existing state `i' and then, during the same
    state-inspection, for state `j' where j > i, then the recheck would start
    at `j' rather than `i'. This problem was solved by giving d_recheckState
    only a lower value than its current value.
    
    With R/R conflicts involving `ACCEPT' reductions (with, e.g., `S_$: S .'),
    ACCEPT is selected as the chosen alternative. See State::setReduce()
    (state/setreduce.cc). Since this matches with the `first reduction rule'
    principle, it should be ok.
    
    %stype specifications may consist of multiple elements: the remainder of
    the line beyond %stype is interpreted as the type definition. The
    specification should (therefore) not contain comment or other characters
    that are not part of the actual type definition. The man-page is adapted
    accordingly. Same holds true for the %ltype directive
    
    Added a check whether the grammar derives a sentence
    (itemsets/derivesentence.cc). If not, a fatal error is issued. This
    happens at the end of the program's actions, and at this point files
    etc. have already been generated. They are kept rather than removed for
    further reference. Grammars not deriving sentences should probably not be
    used.
    
    The original Bison documentation has been converted to a Bisonc++ user
    guide. Furthermore, a html-converted manual page is now available under
    /usr/share/doc/bisonc++/man

    The `calculator' example used in the man-page is now under
    /usr/share/doc/bisonc++/man/calculator 

    Bisonc++ is distributed under the Academic Free License, see the file
    COPYING in /usr/share/doc/bisonc++

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun,  7 Aug 2005 13:49:07 +0200

bisonc++ (0.98.003) unstable; urgency=low

  * Incomplete default State constructor now explicitly defined, prevents
    the incidental erroneous rapporting of conflicts for some states.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Thu, 26 May 2005 07:21:20 +0200

bisonc++ (0.98.002) unstable; urgency=low

  * The Wrap1 configurable unary predicate template class replaces various
    other templates (WrapStatic, Wrap, Pred1Wrap). No further usage or
    implementation changes/modifications.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 22 May 2005 15:27:19 +0200

bisonc++ (0.98.001) unstable; urgency=low

  * This is a complete rewrite of the former bisonc++ (0.91) version. The
    program bisonc++ is now a C++ program, producing C++ sources, using the
    algorithm for creating LALR-1 grammars as outlined by Aho, Sethi and
    Ullman's (1986) `Dragon' book. The release number will remain 0.98 for a
    while, and 0.98.001 holds the initial package, new style. Also see the
    man-page, since some things have been changed (augmented) since the
    previous version. No dramatic changes in the grammar specification method:
    Bisonc++ still uses bison's way to specify grammars, but some features,
    already obsolete in bisonc++ 0.91 were removed.

    Also note my e-mail address: the U. of Groningen's official policy now is
    to remove department specific information, so it's `@rug.nl' rather than
    `@rc.rug.nl', as used before.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 16 May 2005 13:39:38 +0200

bisonc++ (0.91) unstable; urgency=low

  * Added several missing short options (like -B etc) to the getopt() function
    call. I forgot to add them to the previous version(s). Internally, all old
    C style allocations were changed to C++ style allocations, using operators
    new and delete. Where it was immediately obvious that a vector could be
    used, I now use vectors. The internally used types `core' `shifts' and
    'reductions' (types.h) now use a vector data member rather than an int [1]
    member, which is then allocated to its proper (I may hope) size when the
    structs are allocated.

 -- Frank B. Brokken <f.b.brokken@rc.rug.nl>  Sat, 19 Feb 2005 10:21:58 +0100

bisonc++ (0.90) unstable; urgency=low

  * Command-line options now override matching declarations specified in the
    grammar specification file.

    All %define declarations have been removed. Instead their first arguments
    are now used to specify declarations. E.g., %parser-skeleton instead of
    %define parser-skeleton.

    All declarations use lower-case letters, and use only separating hyphens,
    no underscores. E.g., %lsp-needed rather than %define LSP_NEEDED
    The declaration %class-name replaces the former %name declaration

    All yy and YY name prefixes of symbols defined by bisonc++ have been
    removed. The parser-state `yydefault' has been renamed to `defaultstate'.

 -- Frank B. Brokken <f.b.brokken@rc.rug.nl>  Sun,  6 Feb 2005 12:50:40 +0100

bisonc++ (0.82) unstable; urgency=low

  * Added d_nError as protected data member to the base class. Missed it
    during the initial conversion. d_nErrors counts the number of parsing
    errors. Replaces yynerrs from bison(++)

 -- Frank B. Brokken <f.b.brokken@rc.rug.nl>  Sat, 29 Jan 2005 18:58:24 +0100

bisonc++ (0.81) unstable; urgency=low

  * Added the option --show-files to display the names of the files that are
    used or generated by bisonc++.

 -- Frank B. Brokken <f.b.brokken@rc.rug.nl>  Fri, 28 Jan 2005 14:50:48 +0100

bisonc++ (0.80) unstable; urgency=low

  * Completed the initial debian release. No changes in the software.

 -- Frank B. Brokken <f.b.brokken@rc.rug.nl>  Fri, 28 Jan 2005 14:30:05 +0100

bisonc++ (0.70-1) unstable; urgency=low

  * Initial Release.

 -- Frank B. Brokken <f.b.brokken@rc.rug.nl>  Thu, 27 Jan 2005 22:34:50 +0100

