doc: an introductory example for C++

Suggested by Victor Khomenko.
http://lists.gnu.org/archive/html/bug-bison/2018-08/msg00037.html

* doc/bison.texi (A Simple C++ Example): New.
* examples/c++/local.mk, examples/c++/simple.test: New.
Extract, check, and install this new example.
* examples/local.mk: Adjust.
* examples/test: Adjust to the case where the dirname differs
from the test name.
This commit is contained in:
Akim Demaille
2018-10-23 20:14:47 +02:00
parent 7c4b40de61
commit a4dce889a4
9 changed files with 283 additions and 7 deletions

45
examples/c++/local.mk Normal file
View File

@@ -0,0 +1,45 @@
## Copyright (C) 2018 Free Software Foundation, Inc.
##
## 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/>.
## -------------------- ##
## Building & testing. ##
## -------------------- ##
BUILT_SOURCES += $(simple_sources)
CLEANFILES += %D%/simple.[ch] %D%/simple.output
CLEANDIRS += %D%/*.dSYM
simple_extracted = %D%/simple.yy
simple_sources = $(simple_extracted)
extracted += $(simple_extracted)
if ENABLE_CXX14
check_PROGRAMS += %D%/simple
nodist_%C%_simple_SOURCES = $(simple_sources)
%C%_simple_CXXFLAGS = $(CXX11_CXXFLAGS)
# Don't use gnulib's system headers.
%C%_simple_CPPFLAGS = -I$(top_builddir)
dist_TESTS += %D%/simple.test
%D%/simple.cc: $(BISON_IN) $(dist_pkgdata_DATA)
endif
## ------------ ##
## Installing. ##
## ------------ ##
cxxdir = $(docdir)/examples/c++
cxx_DATA = $(simple_extracted)

4
examples/c++/simple.test Normal file
View File

@@ -0,0 +1,4 @@
#! /bin/sh
: >input
run 0 "{I have three numbers for you., 1, 2, 3, And that's all!}"

View File

@@ -69,6 +69,7 @@ check_PROGRAMS += %D%/calc++
nodist_%C%_calc___SOURCES = \
$(calcxx_sources)
# Don't use gnulib's system headers.
%C%_calc___CPPFLAGS = -I$(top_builddir)/%D%
%C%_calc___CXXFLAGS = $(AM_CXXFLAGS) $(FLEX_SCANNER_CXXFLAGS)
dist_TESTS += %D%/calc++.test

View File

@@ -69,5 +69,6 @@ CLEANFILES += %D%/variant.output %D%/variant-11.output
CLEANDIRS += %D%/*.dSYM
include %D%/calc++/local.mk
include %D%/c++/local.mk
include %D%/mfcalc/local.mk
include %D%/rpcalc/local.mk

View File

@@ -28,6 +28,7 @@ extracted += $(mfcalc_extracted)
check_PROGRAMS += %D%/mfcalc
nodist_%C%_mfcalc_SOURCES = $(mfcalc_sources)
# Don't use gnulib's system headers.
%C%_mfcalc_CPPFLAGS = -I$(top_builddir)/%D%
%C%_mfcalc_LDADD = -lm

View File

@@ -28,6 +28,7 @@ extracted += $(rpcalc_extracted)
check_PROGRAMS += %D%/rpcalc
nodist_%C%_rpcalc_SOURCES = $(rpcalc_sources)
# Don't use gnulib's system headers.
%C%_rpcalc_CPPFLAGS = -I$(top_builddir)/%D%
%C%_rpcalc_LDADD = -lm

View File

@@ -15,7 +15,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
me=`basename $1 .test`
me=$(basename "$1" .test)
medir=$(basename "$(dirname "$1")")
# Number of the current test.
number=1
@@ -27,7 +28,7 @@ exit=true
cwd=`pwd`
# The exercised program.
for p in $cwd/examples/$me/$me $cwd/examples/$me
for p in "$cwd/examples/$medir/$me" "$cwd/examples/$me"
do
if test -x "$p"; then
prog=$p