mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 04:13:03 +00:00
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:
21
examples/c++/Makefile
Normal file
21
examples/c++/Makefile
Normal 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)
|
||||||
@@ -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`.
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user