mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-21 18:23:03 +00:00
examples: check the variant example
* examples/mfcalc/local.mk, examples/rpcalc/local.mk: Define the programs in a more natural order, source, preproc, then linker. * examples/test: Be ready to work on programs that are not in a subdir. * examples/variant.test: New. * examples/local.mk: Use it. * examples/variant.yy: Don't use 0 for nullptr. Use a more natural output for a list of string.
This commit is contained in:
@@ -48,6 +48,12 @@ $(extracted): %D%/extracted.stamp
|
|||||||
examplesdir = $(docdir)/examples
|
examplesdir = $(docdir)/examples
|
||||||
dist_examples_DATA = %D%/README %D%/variant.yy
|
dist_examples_DATA = %D%/README %D%/variant.yy
|
||||||
|
|
||||||
|
check_PROGRAMS += %D%/variant
|
||||||
|
nodist_%C%_variant_SOURCES = %D%/variant.yy
|
||||||
|
%C%_variant_CPPFLAGS = -I$(top_builddir)
|
||||||
|
dist_TESTS += %D%/variant.test
|
||||||
|
|
||||||
|
|
||||||
include %D%/calc++/local.mk
|
include %D%/calc++/local.mk
|
||||||
include %D%/mfcalc/local.mk
|
include %D%/mfcalc/local.mk
|
||||||
include %D%/rpcalc/local.mk
|
include %D%/rpcalc/local.mk
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ mfcalc_sources = $(mfcalc_extracted)
|
|||||||
extracted += $(mfcalc_extracted)
|
extracted += $(mfcalc_extracted)
|
||||||
|
|
||||||
check_PROGRAMS += %D%/mfcalc
|
check_PROGRAMS += %D%/mfcalc
|
||||||
%C%_mfcalc_LDADD = -lm
|
|
||||||
nodist_%C%_mfcalc_SOURCES = $(mfcalc_sources)
|
nodist_%C%_mfcalc_SOURCES = $(mfcalc_sources)
|
||||||
|
|
||||||
%C%_mfcalc_CPPFLAGS = -I$(top_builddir)/%D%
|
%C%_mfcalc_CPPFLAGS = -I$(top_builddir)/%D%
|
||||||
|
%C%_mfcalc_LDADD = -lm
|
||||||
|
|
||||||
dist_TESTS += %D%/mfcalc.test
|
dist_TESTS += %D%/mfcalc.test
|
||||||
|
|
||||||
## ------------ ##
|
## ------------ ##
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ rpcalc_sources = $(rpcalc_extracted)
|
|||||||
extracted += $(rpcalc_extracted)
|
extracted += $(rpcalc_extracted)
|
||||||
|
|
||||||
check_PROGRAMS += %D%/rpcalc
|
check_PROGRAMS += %D%/rpcalc
|
||||||
%C%_rpcalc_LDADD = -lm
|
|
||||||
nodist_%C%_rpcalc_SOURCES = $(rpcalc_sources)
|
nodist_%C%_rpcalc_SOURCES = $(rpcalc_sources)
|
||||||
|
|
||||||
%C%_rpcalc_CPPFLAGS = -I$(top_builddir)/%D%
|
%C%_rpcalc_CPPFLAGS = -I$(top_builddir)/%D%
|
||||||
|
%C%_rpcalc_LDADD = -lm
|
||||||
|
|
||||||
dist_TESTS += %D%/rpcalc.test
|
dist_TESTS += %D%/rpcalc.test
|
||||||
|
|
||||||
## ------------ ##
|
## ------------ ##
|
||||||
|
|||||||
@@ -27,7 +27,18 @@ exit=true
|
|||||||
cwd=`pwd`
|
cwd=`pwd`
|
||||||
|
|
||||||
# The exercised program.
|
# The exercised program.
|
||||||
prog=$cwd/examples/$me/$me
|
for p in $cwd/examples/$me/$me $cwd/examples/$me
|
||||||
|
do
|
||||||
|
if test -x "$p"; then
|
||||||
|
prog=$p
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if test x"$prog" = x; then
|
||||||
|
echo "$me: ERROR: cannot find program to exercise"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# cleanup
|
# cleanup
|
||||||
# -------
|
# -------
|
||||||
|
|||||||
19
examples/variant.test
Normal file
19
examples/variant.test
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# 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/>.
|
||||||
|
|
||||||
|
: >input
|
||||||
|
run 0 "{I have three numbers for you., 1, 2, 3, And that's all!}"
|
||||||
@@ -50,7 +50,7 @@ typedef std::vector<std::string> strings_type;
|
|||||||
std::ostream&
|
std::ostream&
|
||||||
operator<< (std::ostream& o, const strings_type& ss)
|
operator<< (std::ostream& o, const strings_type& ss)
|
||||||
{
|
{
|
||||||
o << '(' << &ss << ") {";
|
o << '{';
|
||||||
const char *sep = "";
|
const char *sep = "";
|
||||||
for (strings_type::const_iterator i = ss.begin(), end = ss.end();
|
for (strings_type::const_iterator i = ss.begin(), end = ss.end();
|
||||||
i != end; ++i)
|
i != end; ++i)
|
||||||
@@ -75,7 +75,7 @@ typedef std::vector<std::string> strings_type;
|
|||||||
|
|
||||||
%token <::std::string> TEXT;
|
%token <::std::string> TEXT;
|
||||||
%token <int> NUMBER;
|
%token <int> NUMBER;
|
||||||
%printer { yyoutput << $$; } <*>;
|
%printer { yyo << '(' << &$$ << ") " << $$; } <*>;
|
||||||
%token END_OF_FILE 0;
|
%token END_OF_FILE 0;
|
||||||
|
|
||||||
%type <::std::string> item;
|
%type <::std::string> item;
|
||||||
@@ -114,7 +114,7 @@ namespace yy
|
|||||||
{
|
{
|
||||||
static int stage = -1;
|
static int stage = -1;
|
||||||
++stage;
|
++stage;
|
||||||
parser::location_type loc(0, stage + 1, stage + 1);
|
parser::location_type loc(YY_NULLPTR, stage + 1, stage + 1);
|
||||||
switch (stage)
|
switch (stage)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
|||||||
Reference in New Issue
Block a user