commit 719782e6ba4e48d0c62904f20f383422773017d8 Author: Akim Demaille <[email protected]> Date: Fri Oct 26 08:28:18 2018 +0200
examples: add a Makefile for C++ short examples * examples/c++/Makefile: New. * examples/c++/local.mk, examples/c++/README: Adjust. diff --git a/examples/c++/Makefile b/examples/c++/Makefile new file mode 100644 index 00000000..47e1fb4e --- /dev/null +++ b/examples/c++/Makefile @@ -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) diff --git a/examples/c++/README b/examples/c++/README index e4154961..96cb7c9f 100644 --- a/examples/c++/README +++ b/examples/c++/README @@ -2,22 +2,30 @@ This directory contains examples of Bison grammar files 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 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. +Run as `./simple`. + 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. +Run as `./variant`. + ** 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. +Run as `./variant` or `./variant NUMBER`. ----- diff --git a/examples/c++/local.mk b/examples/c++/local.mk index b9c2f071..b5f8f8fe 100644 --- a/examples/c++/local.mk +++ b/examples/c++/local.mk @@ -61,5 +61,5 @@ if ENABLE_CXX11 %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 +dist_cxx_DATA = %D%/README %D%/Makefile %D%/variant.yy %D%/variant-11.yy +CLEANFILES += %D%/simple.output %D%/variant.output %D%/variant-11.output
