]> git.saurik.com Git - bison.git/blobdiff - tests/calc.at
doc: mfcalc: demonstrate %printer.
[bison.git] / tests / calc.at
index b3955ca5cbacc62bdcc4025e2296c0c4b693d3a1..c50400836a5ad684ce0443db4643ac877a0aec2f 100644 (file)
@@ -1,6 +1,6 @@
 # Simple calculator.                         -*- Autotest -*-
 
-# Copyright (C) 2000-2010 Free Software Foundation, Inc.
+# Copyright (C) 2000-2012 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
@@ -170,18 +170,18 @@ AT_SKEL_CC_IF(
     Point last;
   };
 
-# define YYLLOC_DEFAULT(Current, Rhs, N)                \
-do {                                                    \
-  if (N)                                                \
-    {                                                   \
-      (Current).first = (Rhs)[1].first;                        \
-      (Current).last  = (Rhs)[N].last;                  \
-    }                                                   \
-  else                                                  \
-    {                                                   \
-      (Current).first = (Current).last = (Rhs)[0].last;        \
-    }                                                   \
-} while (false)
+# define YYLLOC_DEFAULT(Current, Rhs, N)                                \
+  do                                                                    \
+    if (N)                                                              \
+      {                                                                 \
+        (Current).first = YYRHSLOC (Rhs, 1).first;                      \
+        (Current).last  = YYRHSLOC (Rhs, N).last;                       \
+      }                                                                 \
+    else                                                                \
+      {                                                                 \
+        (Current).first = (Current).last = YYRHSLOC (Rhs, 0).last;      \
+      }                                                                 \
+  while (false)
 
 ]])[
   /* Exercise pre-prologue dependency to %union.  */
@@ -207,6 +207,7 @@ extern FILE *input;]AT_SKEL_CC_IF([[
 
 %code
 {
+#include <assert.h>
 #include <stdlib.h>
 #include <string.h>
 #if HAVE_UNISTD_H
@@ -240,7 +241,7 @@ int yylex (]AT_LEX_FORMALS[);
    are stored in a union, from which objects with constructors are
    excluded in C++. */
 %initial-action {
-  @$.initialize (0);
+  @$.initialize ();
 }
 ])])[
 
@@ -347,8 +348,7 @@ static int
 power (int base, int exponent)
 {
   int res = 1;
-  if (exponent < 0)
-    exit (3);
+  assert (0 <= exponent);
   for (/* Niente */; exponent; --exponent)
     res *= base;
   return res;
@@ -712,6 +712,7 @@ m4_define([AT_CHECK_CALC_GLR_CC],
 [AT_CHECK_CALC([%language "C++" %glr-parser %defines %locations] $@)])
 
 AT_CHECK_CALC_GLR_CC([])
+AT_CHECK_CALC_GLR_CC([%define location_type Span])
 AT_CHECK_CALC_GLR_CC([%error-verbose %name-prefix "calc" %verbose %yacc])
 
 AT_CHECK_CALC_GLR_CC([%debug])