examples: move the variant examples into the C++ directory

* examples/variant-11.test examples/variant-11.yy,
* examples/variant.test examples/variant.yy:
Move into examples/c++/.
* examples/c++/README: New.
* examples/README, examples/c++/local.mk, examples/local.mk:
Adjust.
This commit is contained in:
Akim Demaille
2018-10-23 21:04:06 +02:00
parent a4dce889a4
commit 8fd5f0d5a5
9 changed files with 71 additions and 35 deletions

6
NEWS
View File

@@ -16,6 +16,10 @@ GNU Bison NEWS
In C++ parsers, parser::operator() is now a synonym for the parser::parse.
** Documentation
A new section, "A Simple C++ Example", is a tutorial for parsers in C++.
* Noteworthy changes in release 3.1.91 (2018-10-18) [beta]
** Bug fixes
@@ -88,7 +92,7 @@ GNU Bison NEWS
Enabling api.value.automove does not require support for modern C++. The
generated code is valid C++98/03, but will use copies instead of moves.
The new examples/variant-11.yy shows these features in action.
The new examples/c++/variant-11.yy shows these features in action.
*** C++: The implicit default semantic action is always run

View File

@@ -24,15 +24,7 @@ https://www.gnu.org/software/bison/manual/html_node/Multi_002dfunction-Calc.html
* Examples in C++
** variant.yy - Self-contained example in C++
A simple C++ example in a single file, based on variants and symbol
constructors. Variants allow to use any C++ type as semantic value type,
and symbol constructors ensure consistency between declared token type and
effective semantic value.
** variant-11.yy - Self-contained example in modern C++
Another simple C++ example, closely related to the previous one, but
exhibiting support for C++11's move semantics.
** c++ - A directory of simple C++ examples
** calc++ - A Complete C++ Example
A fully featured C++ version of the canonical example for parsers: a

38
examples/c++/README Normal file
View File

@@ -0,0 +1,38 @@
This directory contains examples of Bison grammar files in C++.
* Examples in C++
** simple.yy - Simple example in C++14
A very simple example in C++, based on variants and symbol constructors.
Variants allow to use any C++ type as semantic value type, and symbol
constructors ensure consistency between declared token type and effective
semantic value.
Extracted from the documentation: "A Simple C++ Example".
https://www.gnu.org/software/bison/manual/html_node/A-Simple-C_002b_002b-Example.html
** variant.yy - Self-contained example in C++98
A varition of simple.yy, in C++98.
** variant-11.yy - Self-contained example in modern C++
Another variation of simple.yy, closely related to the previous one, but
exhibiting support for C++11's move semantics.
-----
Local Variables:
mode: outline
fill-column: 76
End:
Copyright (C) 2018 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the "GNU Free
Documentation License" file as part of this distribution.
# LocalWords: mfcalc calc parsers yy

View File

@@ -13,13 +13,16 @@
## You should have received a copy of the GNU General Public License
## along with this program. If not, see <http://www.gnu.org/licenses/>.
## -------------------- ##
## Building & testing. ##
## -------------------- ##
cxxdir = $(examplesdir)/c++
## -------- ##
## Simple. ##
## -------- ##
BUILT_SOURCES += $(simple_sources)
CLEANFILES += %D%/simple.[ch] %D%/simple.output
CLEANDIRS += %D%/*.dSYM
cxx_DATA = $(simple_extracted)
simple_extracted = %D%/simple.yy
simple_sources = $(simple_extracted)
@@ -37,9 +40,24 @@ if ENABLE_CXX14
endif
## ------------ ##
## Installing. ##
## ------------ ##
## ---------- ##
## Variants. ##
## ---------- ##
cxxdir = $(docdir)/examples/c++
cxx_DATA = $(simple_extracted)
check_PROGRAMS += %D%/variant
nodist_%C%_variant_SOURCES = %D%/variant.yy
%C%_variant_CPPFLAGS = -I$(top_builddir)
dist_TESTS += %D%/variant.test
%D%/variant.cc: $(BISON_IN) $(dist_pkgdata_DATA)
if ENABLE_CXX11
check_PROGRAMS += %D%/variant-11
nodist_%C%_variant_11_SOURCES = %D%/variant-11.yy
%C%_variant_11_CXXFLAGS = $(CXX11_CXXFLAGS)
%C%_variant_11_CPPFLAGS = -I$(top_builddir)
dist_TESTS += %D%/variant-11.test
%D%/variant-11.cc: $(BISON_IN) $(dist_pkgdata_DATA)
endif
dist_cxx_DATA = %D%/README %D%/variant.yy %D%/variant-11.yy
CLEANFILES += %D%/variant.output %D%/variant-11.output

View File

@@ -48,24 +48,8 @@ $(extracted): %D%/extracted.stamp
examplesdir = $(docdir)/examples
dist_examples_DATA = %D%/README %D%/variant.yy %D%/variant-11.yy
dist_examples_DATA = %D%/README
check_PROGRAMS += %D%/variant
nodist_%C%_variant_SOURCES = %D%/variant.yy
%C%_variant_CPPFLAGS = -I$(top_builddir)
dist_TESTS += %D%/variant.test
%D%/variant.cc: $(BISON_IN) $(dist_pkgdata_DATA)
if ENABLE_CXX11
check_PROGRAMS += %D%/variant-11
nodist_%C%_variant_11_SOURCES = %D%/variant-11.yy
%C%_variant_11_CXXFLAGS = $(CXX11_CXXFLAGS)
%C%_variant_11_CPPFLAGS = -I$(top_builddir)
dist_TESTS += %D%/variant-11.test
%D%/variant-11.cc: $(BISON_IN) $(dist_pkgdata_DATA)
endif
CLEANFILES += %D%/variant.output %D%/variant-11.output
CLEANDIRS += %D%/*.dSYM
include %D%/calc++/local.mk