examples: ship and install variant.yy

This file was meant to be shown as an example.  Install it.

* README, data/README: Put Emacs metadata in the final section.
* examples/README: New.
* examples/variant.yy: Use %empty.
* examples/local.mk: Install both these files.
This commit is contained in:
Akim Demaille
2018-08-14 07:49:09 +02:00
parent 7ab25ad020
commit 30c179fee8
5 changed files with 55 additions and 8 deletions

3
README
View File

@@ -37,13 +37,12 @@ test case in each bug report.
For any copyright year range specified as YYYY-ZZZZ in this package,
note that the range specifies every single year in that closed interval.
-----
Local Variables:
mode: outline
End:
-----
Copyright (C) 1992, 1998-1999, 2003-2005, 2008-2015, 2018 Free Software
Foundation, Inc.

View File

@@ -1,5 +1,3 @@
-*- outline -*-
This directory contains data needed by Bison.
* Skeletons
@@ -52,6 +50,10 @@ into various formats.
-----
Local Variables:
mode: outline
End:
Copyright (C) 2002, 2008-2015, 2018 Free Software Foundation, Inc.
This file is part of GNU Bison.

39
examples/README Normal file
View File

@@ -0,0 +1,39 @@
This directory contains examples of Bison grammar files.
* mfcalc
A C example of a multi-function calculator. Extracted from the
documentation.
* calc++
A C++ version of the canonical example for parsers: a calculator.
Also uses Flex for the scanner.
* variant.yy
A C++ examples that uses variants (they allow to use any C++ type as
semantic value type) and symbol constructors (they ensure consistency
between declared token type and effective semantic value).
-----
Local Variables:
mode: outline
End:
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
# LocalWords: mfcalc calc parsers yy

View File

@@ -41,6 +41,13 @@ $(extracted): %D%/extracted.stamp
@test -f $@ || rm -f %D%/extracted.stamp
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) %D%/extracted.stamp
## ---------- ##
## Examples. ##
## ---------- ##
examplesdir = $(docdir)/examples
dist_examples_DATA = %D%/README %D%/variant.yy
include %D%/calc++/local.mk
include %D%/mfcalc/local.mk
include %D%/rpcalc/local.mk

View File

@@ -88,13 +88,13 @@ result:
;
list:
/* nothing */ { /* Generates an empty string list */ }
| list item { std::swap ($$, $1); $$.push_back ($2); }
%empty { /* Generates an empty string list */ }
| list item { std::swap ($$, $1); $$.push_back ($2); }
;
item:
TEXT { std::swap ($$, $1); }
| NUMBER { $$ = string_cast ($1); }
TEXT { std::swap ($$, $1); }
| NUMBER { $$ = string_cast ($1); }
;
%%