bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

examples: check the variant example


From: Akim Demaille
Subject: examples: check the variant example
Date: Sun, 19 Aug 2018 17:53:00 +0200

To be pushed in master.

commit b610f43f25aa16d591f6a6b5bf36784050ede651
Author: Akim Demaille <address@hidden>
Date:   Sun Aug 19 10:55:08 2018 +0200

    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.

diff --git a/examples/local.mk b/examples/local.mk
index 6dfbf2eb..13f8d492 100644
--- a/examples/local.mk
+++ b/examples/local.mk
@@ -48,6 +48,12 @@ $(extracted): %D%/extracted.stamp
 examplesdir = $(docdir)/examples
 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%/mfcalc/local.mk
 include %D%/rpcalc/local.mk
diff --git a/examples/mfcalc/local.mk b/examples/mfcalc/local.mk
index e8be61a9..1bb8b82c 100644
--- a/examples/mfcalc/local.mk
+++ b/examples/mfcalc/local.mk
@@ -26,10 +26,10 @@ mfcalc_sources = $(mfcalc_extracted)
 extracted += $(mfcalc_extracted)
 
 check_PROGRAMS += %D%/mfcalc
-%C%_mfcalc_LDADD = -lm
 nodist_%C%_mfcalc_SOURCES = $(mfcalc_sources)
-
 %C%_mfcalc_CPPFLAGS = -I$(top_builddir)/%D%
+%C%_mfcalc_LDADD = -lm
+
 dist_TESTS += %D%/mfcalc.test
 
 ## ------------ ##
diff --git a/examples/rpcalc/local.mk b/examples/rpcalc/local.mk
index 2c4ce2b0..622cda4c 100644
--- a/examples/rpcalc/local.mk
+++ b/examples/rpcalc/local.mk
@@ -26,10 +26,10 @@ rpcalc_sources = $(rpcalc_extracted)
 extracted += $(rpcalc_extracted)
 
 check_PROGRAMS += %D%/rpcalc
-%C%_rpcalc_LDADD = -lm
 nodist_%C%_rpcalc_SOURCES = $(rpcalc_sources)
-
 %C%_rpcalc_CPPFLAGS = -I$(top_builddir)/%D%
+%C%_rpcalc_LDADD = -lm
+
 dist_TESTS += %D%/rpcalc.test
 
 ## ------------ ##
diff --git a/examples/test b/examples/test
index a30d3616..a2439213 100755
--- a/examples/test
+++ b/examples/test
@@ -27,7 +27,18 @@ exit=true
 cwd=`pwd`
 
 # 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
 # -------
diff --git a/examples/variant.test b/examples/variant.test
new file mode 100644
index 00000000..3bc2b397
--- /dev/null
+++ b/examples/variant.test
@@ -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!}"
diff --git a/examples/variant.yy b/examples/variant.yy
index 6c8e4635..ff3b9506 100644
--- a/examples/variant.yy
+++ b/examples/variant.yy
@@ -50,7 +50,7 @@ typedef std::vector<std::string> strings_type;
     std::ostream&
     operator<< (std::ostream& o, const strings_type& ss)
     {
-      o << '(' << &ss << ") {";
+      o << '{';
       const char *sep = "";
       for (strings_type::const_iterator i = ss.begin(), end = ss.end();
            i != end; ++i)
@@ -75,7 +75,7 @@ typedef std::vector<std::string> strings_type;
 
 %token <::std::string> TEXT;
 %token <int> NUMBER;
-%printer { yyoutput << $$; } <*>;
+%printer { yyo << '(' << &$$ << ") " << $$; } <*>;
 %token END_OF_FILE 0;
 
 %type <::std::string> item;
@@ -114,7 +114,7 @@ namespace yy
   {
     static int stage = -1;
     ++stage;
-    parser::location_type loc(0, stage + 1, stage + 1);
+    parser::location_type loc(YY_NULLPTR, stage + 1, stage + 1);
     switch (stage)
       {
       case 0:




reply via email to

[Prev in Thread] Current Thread [Next in Thread]