#4471: bison-3.4
--------------------+-----------------------
 Reporter:  bdubbs  |       Owner:  lfs-book
     Type:  task    |      Status:  new
 Priority:  normal  |   Milestone:  8.5
Component:  Book    |     Version:  SVN
 Severity:  normal  |  Resolution:
 Keywords:          |
--------------------+-----------------------

Comment (by bdubbs):

 Noteworthy changes in release 3.4.1 (2019-05-22) [stable]
 - Portability fixes.

 Noteworthy changes in release 3.4 (2019-05-19) [stable]

 * Deprecated features

   The %pure-parser directive is deprecated in favor of '%define api.pure'
   since Bison 2.3b (2008-05-27), but no warning was issued; there is one
   now.  Note that since Bison 2.7 you are strongly encouraged to use
   '%define api.pure full' instead of '%define api.pure'.

 * New features
 * Colored diagnostics

   As an experimental feature, diagnostics are now colored, controlled by
 the
   new options --color and --style.

   To use them, install the libtextstyle library before configuring Bison.
   It is available from

     https://alpha.gnu.org/gnu/gettext/

   for instance

     https://alpha.gnu.org/gnu/gettext/libtextstyle-0.8.tar.gz

   The option --color supports the following arguments:
     - always, yes: Enable colors.
     - never, no: Disable colors.
     - auto, tty (default): Enable colors if the output device is a tty.

   To customize the styles, create a CSS file similar to

     /* bison-bw.css */
     .warning   { }
     .error     { font-weight: 800; text-decoration: underline; }
     .note      { }

   then invoke bison with --style=bison-bw.css, or set the BISON_STYLE
   environment variable to "bison-bw.css".

 * Disabling output

   When given -fsyntax-only, the diagnostics are reported, but no output is
   generated.

   The name of this option is somewhat misleading as bison does more than
   just checking the syntax: every stage is run (including checking for
   conflicts for instance), except the generation of the output files.

 * Include the generated header (yacc.c)

   Before, when --defines is used, bison generated a header, and pasted an
   exact copy of it into the generated parser implementation file.  If the
   header name is not "y.tab.h", it is now #included instead of being
   duplicated.

   To use an '#include' even if the header name is "y.tab.h" (which is what
   happens with --yacc, or when using the Autotools' ylwrap), define
   api.header.include to the exact argument to pass to #include.  For
   instance:

     %define api.header.include {"parse.h"}

   or

     %define api.header.include {<parser/parse.h>}

 * api.location.type is now supported in C (yacc.c, glr.c)

   The %define variable api.location.type defines the name of the type to
 use
   for locations.  When defined, Bison no longer defines YYLTYPE.

   This can be used in programs with several parsers to factor their
   definition of locations: let one of them generate them, and the others
   just use them.

 * Changes

 * Graphviz output

   In conformance with the recommendations of the Graphviz team, if
 %require
   "3.4" (or better) is specified, the option --graph generates a *.gv file
   by default, instead of *.dot.

 * Diagnostics overhaul

   Column numbers were wrong with multibyte characters, which would also
   result in skewed diagnostics with carets.  Beside, because we were
   indenting the quoted source with a single space, lines with tab
 characters
   were incorrectly underlined.

   To address these issues, and to be clearer, Bison now issues diagnostics
   as GCC9 does.  For instance it used to display (there's a tab before the
   opening brace):

     foo.y:3.37-38: error: $2 of ‘expr’ has no declared type
      expr: expr '+' "number"        { $$ = $1 + $2; }
                                          ^~
   It now reports

     foo.y:3.37-38: error: $2 of ‘expr’ has no declared type
         3 | expr: expr '+' "number" { $$ = $1 + $2; }
           |                                     ^~

   Other constructs now also have better locations, resulting in more
 precise
   diagnostics.

 * Fix-it hints for %empty

   Running Bison with -Wempty-rules and --update will remove incorrect
 %empty
   annotations, and add the missing ones.

 * Generated reports

   The format of the reports (parse.output) was improved for readability.

 * Better support for --no-line.

   When --no-line is used, the generated files are now cleaner: no lines
 are
   generated instead of empty lines.  Together with using
 api.header.include,
   that should help people saving the generated files into version control
   systems get smaller diffs.

 * Documentation

   A new example in C shows an simple infix calculator with a hand-written
   scanner (examples/c/calc).

   A new example in C shows a reentrant parser (capable of recursive calls)
   built with Flex and Bison (examples/c/reccalc).

   There is a new section about the history of Yaccs and Bison.

 * Bug fixes

   A few obscure bugs were fixed, including the second oldest (known) bug
 in
   Bison: it was there when Bison was entered in the RCS version control
   system, in December 1987.  See the NEWS of Bison 3.3 for the previous
   oldest bug.

--
Ticket URL: <http://wiki.linuxfromscratch.org/lfs/ticket/4471#comment:1>
LFS Trac <http://wiki.linuxfromscratch.org/lfs/>
Linux From Scratch: Your Distro, Your Rules.
-- 
http://lists.linuxfromscratch.org/listinfo/lfs-book
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to