Akim Demaille 5acc29041e bench: calc: work on a string instead of a file
The cost of the file layer is large and makes benchmarks too coarse,
as seen for in following example, first with a file, then with a
literal string:

    0. %skeleton "yacc.c" %define parse.lac full
    1. %skeleton "yacc-v1.c" %define nofinal %define parse.lac full
    2. %skeleton "yacc-v2.c" %define nofinal %define parse.lac full
    3. %skeleton "yacc-v3.c" %define nofinal %define parse.lac full
    4. %skeleton "yacc.c"
    5. %skeleton "yacc-v1.c" %define nofinal
    6. %skeleton "yacc-v2.c" %define nofinal
    7. %skeleton "yacc-v3.c" %define nofinal
    --------------------------------------------------
    Benchmark           Time           CPU Iterations
    --------------------------------------------------
    BM_y0           32558 ns      32537 ns      21228
    BM_y1           32400 ns      32369 ns      21233
    BM_y2           33485 ns      33464 ns      20625
    BM_y3           32139 ns      32125 ns      21446
    BM_y4           31343 ns      31329 ns      21747
    BM_y5           31344 ns      31317 ns      22035
    BM_y6           31287 ns      31255 ns      22039
    BM_y7           31387 ns      31373 ns      22178
    --------------------------------------------------
    Benchmark           Time           CPU Iterations
    --------------------------------------------------
    BM_y0           10642 ns      10634 ns      63601
    BM_y1           10657 ns      10654 ns      63625
    BM_y2           10441 ns      10432 ns      65957
    BM_y3           10558 ns      10554 ns      64546
    BM_y4            9521 ns       9516 ns      72011
    BM_y5            9179 ns       9157 ns      75028
    BM_y6            9360 ns       9356 ns      73770
    BM_y7            9365 ns       9359 ns      72609

Of course, at the same time it is less realistic: most users read
files rather that strings, so it might lead to us to pay attention to
costs most people don't see.

* etc/bench.pl.in (&calc_input): Output into a file given as argument.
Output in C syntax.
(&generate_grammar_calc): Use it.
Simplify the grammar: remove operators we don't care about.
Rewrite the scanner to work on a char* instead of a FILE*.
2020-03-22 15:59:22 +01:00
2020-03-06 08:32:26 +01:00
2020-03-17 19:21:07 +01:00
2020-02-15 09:59:50 +01:00
2020-03-17 19:20:13 +01:00
2020-03-06 08:25:52 +01:00
2019-09-22 07:48:10 +02:00
2020-03-01 06:23:49 +01:00
2020-03-01 06:23:49 +01:00
2019-04-23 19:28:08 +02:00
2020-03-17 19:21:24 +01:00
2019-10-17 11:51:20 -07:00
2020-03-08 10:13:16 +01:00
2019-09-22 07:48:10 +02:00
2020-01-19 14:50:09 +01:00
2006-01-22 07:59:51 +00:00
2006-01-22 07:59:51 +00:00
2020-01-05 10:26:35 +01:00
2020-01-11 06:03:51 +01:00
2020-03-01 06:23:49 +01:00
2020-02-10 20:46:56 +01:00
2020-01-19 11:36:47 +01:00
2007-08-15 20:21:33 +00:00
2020-03-17 19:20:13 +01:00
2020-01-05 10:26:35 +01:00
2020-01-05 10:26:35 +01:00
2019-10-21 08:53:06 +02:00
2020-03-08 10:13:16 +01:00

This package contains the GNU Bison parser generator.

Installation

Build from git

Here are basic installation instructions for a repository checkout:

$ git submodule update --init
$ ./bootstrap

then proceed with the usual configure && make steps.

The file README-hacking.md is about building, modifying and checking Bison.

Build from tarball

See the file INSTALL for generic compilation and installation instructions.

Bison requires GNU m4 1.4.6 or later. See https://ftp.gnu.org/gnu/m4/m4-1.4.6.tar.gz.

Running a non installed bison

Once you ran make, you might want to toy with this fresh bison before installing it. In that case, do not use src/bison: it would use the installed files (skeletons, etc.), not the local ones. Use tests/bison.

Colored diagnostics

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

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/pub/gnu/gettext/libtextstyle-0.20.5.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, say bison-bw.css, 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.

Relocatability

If you pass --enable-relocatable to configure, Bison is relocatable.

A relocatable program can be moved or copied to a different location on the file system. It can also be used through mount points for network sharing. It is possible to make symlinks to the installed and moved programs, and invoke them through the symlink.

See "Enabling Relocatability" in the documentation.

Internationalization

Bison supports two catalogs: one for Bison itself (i.e., for the maintainer-side parser generation), and one for the generated parsers (i.e., for the user-side parser execution). The requirements between both differ: bison needs ngettext, the generated parsers do not. To simplify the build system, neither are installed if ngettext is not supported, even if generated parsers could have been localized. See http://lists.gnu.org/archive/html/bug-bison/2009-08/msg00006.html for more details.

Questions

See the section FAQ in the documentation (doc/bison.info) for frequently asked questions. The documentation is also available in PDF and HTML, provided you have a recent version of Texinfo installed: run make pdf or make html.

If you have questions about using Bison and the documentation does not answer them, please send mail to help-bison@gnu.org.

Bug reports

Please send bug reports to bug-bison@gnu.org. Be sure to include the version number from bison --version, and a complete, self-contained test case in each bug report.

Copyright statements

For any copyright year range specified as YYYY-ZZZZ in this package, note that the range specifies every single year in that closed interval.

Description
No description provided
Readme 18 MiB
Languages
C 61%
M4 11.7%
C++ 11.3%
Shell 4.1%
XSLT 3.1%
Other 8.8%