examples: add a Makefile for C++ short examples

* examples/c++/Makefile: New.
* examples/c++/local.mk, examples/c++/README: Adjust.
This commit is contained in:
Akim Demaille
2018-10-26 08:28:18 +02:00
parent ee175dfd00
commit 719782e6ba
3 changed files with 31 additions and 2 deletions

21
examples/c++/Makefile Normal file
View File

@@ -0,0 +1,21 @@
# This Makefile is designed to be simple and readable. It does not
# aim at portability. It requires GNU Make.
BISON = bison
CXX = g++
CXXFLAGS =
PROGS = simple variant variant-11
simple: CXXFLAGS = -std=c++14
variant-11: CXXFLAGS = -std=c++11
all: $(PROGS)
%.cc %.hh: %.yy
$(BISON) $(BISONFLAGS) -o $*.cc $<
%: %.cc
$(CXX) $(CXXFLAGS) -o$@ $<
clean:
rm -f $(PROGS:=.cc) $(PROGS)

View File

@@ -2,22 +2,30 @@ This directory contains examples of Bison grammar files in C++.
* Examples in C++ * Examples in C++
You can run `make` to compile these examples. And `make clean` to tidy
afterwards.
** simple.yy - Simple example in C++14 ** simple.yy - Simple example in C++14
A very simple example in C++, based on variants and symbol constructors. 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 Variants allow to use any C++ type as semantic value type, and symbol
constructors ensure consistency between declared token type and effective constructors ensure consistency between declared token type and effective
semantic value. semantic value.
Run as `./simple`.
Extracted from the documentation: "A Simple C++ Example". Extracted from the documentation: "A Simple C++ Example".
https://www.gnu.org/software/bison/manual/html_node/A-Simple-C_002b_002b-Example.html https://www.gnu.org/software/bison/manual/html_node/A-Simple-C_002b_002b-Example.html
** variant.yy - Self-contained example in C++98 ** variant.yy - Self-contained example in C++98
A varition of simple.yy, in C++98. A varition of simple.yy, in C++98.
Run as `./variant`.
** variant-11.yy - Self-contained example in modern C++ ** variant-11.yy - Self-contained example in modern C++
Another variation of simple.yy, closely related to the previous one, but Another variation of simple.yy, closely related to the previous one, but
exhibiting support for C++11's move semantics. exhibiting support for C++11's move semantics.
Run as `./variant` or `./variant NUMBER`.
----- -----

View File

@@ -61,5 +61,5 @@ if ENABLE_CXX11
%D%/variant-11.cc: $(BISON_IN) $(dist_pkgdata_DATA) %D%/variant-11.cc: $(BISON_IN) $(dist_pkgdata_DATA)
endif endif
dist_cxx_DATA = %D%/README %D%/variant.yy %D%/variant-11.yy dist_cxx_DATA = %D%/README %D%/Makefile %D%/variant.yy %D%/variant-11.yy
CLEANFILES += %D%/variant.output %D%/variant-11.output CLEANFILES += %D%/simple.output %D%/variant.output %D%/variant-11.output