Index: Singular/grammar.cc
===================================================================
--- Singular/grammar.cc	(revision d80a1affe5140fcac28532ccf3a3ad97b41ee6ee)
+++ Singular/grammar.cc	(revision a5a8a1b9a7c07e38bc003684a775998eab555dc8)
@@ -1,8 +1,6 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
-
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+/* A Bison parser, made by GNU Bison 1.875d.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
@@ -18,22 +16,14 @@
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
-
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
-
-/* C LALR(1) parser skeleton written by Richard Stallman, by
-   simplifying the original so-called "semantic" parser.  */
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
 
 /* All symbols defined below should begin with yy or YY, to avoid
@@ -46,7 +36,4 @@
 /* Identify Bison output.  */
 #define YYBISON 1
-
-/* Bison version.  */
-#define YYBISON_VERSION "2.3"
 
 /* Skeleton name.  */
@@ -193,5 +180,4 @@
    };
 #endif
-/* Tokens.  */
 #define DOTDOT 258
 #define EQUAL_EQUAL 259
@@ -508,10 +494,5 @@
 #endif
 
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
-
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
 typedef int YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -525,92 +506,15 @@
 
 
-/* Line 216 of yacc.c.  */
-#line 529 "grammar.cc"
-
-#ifdef short
-# undef short
-#endif
-
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
-#endif
-
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
-#else
-typedef short int yytype_int8;
-#endif
-
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
-#endif
-
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
-#else
-typedef short int yytype_int16;
-#endif
-
-#ifndef YYSIZE_T
-# ifdef __SIZE_TYPE__
-#  define YYSIZE_T __SIZE_TYPE__
-# elif defined size_t
-#  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYSIZE_T size_t
-# else
-#  define YYSIZE_T unsigned int
+/* Line 214 of yacc.c.  */
+#line 510 "grammar.cc"
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+# ifndef YYFREE
+#  define YYFREE free
 # endif
-#endif
-
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-
-#ifndef YY_
-# if YYENABLE_NLS
-#  if ENABLE_NLS
-#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
-#  endif
+# ifndef YYMALLOC
+#  define YYMALLOC malloc
 # endif
-# ifndef YY_
-#  define YY_(msgid) msgid
-# endif
-#endif
-
-/* Suppress unused-variable warnings by "using" E.  */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
-#else
-# define YYUSE(e) /* empty */
-#endif
-
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int i)
-#else
-static int
-YYID (i)
-    int i;
-#endif
-{
-  return i;
-}
-#endif
-
-#if ! defined yyoverflow || YYERROR_VERBOSE
 
 /* The parser invokes alloca or malloc; define the necessary symbols.  */
@@ -618,22 +522,12 @@
 # ifdef YYSTACK_USE_ALLOCA
 #  if YYSTACK_USE_ALLOCA
+#   define YYSTACK_ALLOC alloca
+#  endif
+# else
+#  if defined (alloca) || defined (_ALLOCA_H)
+#   define YYSTACK_ALLOC alloca
+#  else
 #   ifdef __GNUC__
 #    define YYSTACK_ALLOC __builtin_alloca
-#   elif defined __BUILTIN_VA_ARG_INCR
-#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-#   elif defined _AIX
-#    define YYSTACK_ALLOC __alloca
-#   elif defined _MSC_VER
-#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-#    define alloca _alloca
-#   else
-#    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
-#     endif
-#    endif
 #   endif
 #  endif
@@ -641,53 +535,25 @@
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-    /* The OS might guarantee only one guard page at the bottom of the stack,
-       and a page size can be as small as 4096 bytes.  So we cannot safely
-       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-       to allow for a few compiler-allocated temporary stack slots.  */
-#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+#  if defined (__STDC__) || defined (__cplusplus)
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   define YYSIZE_T size_t
 #  endif
-# else
 #  define YYSTACK_ALLOC YYMALLOC
 #  define YYSTACK_FREE YYFREE
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-#  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
-       && ! ((defined YYMALLOC || defined malloc) \
-	     && (defined YYFREE || defined free)))
-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
-#   endif
-#  endif
-#  ifndef YYMALLOC
-#   define YYMALLOC malloc
-#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-#  ifndef YYFREE
-#   define YYFREE free
-#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-void free (void *); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
 # endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
-
-#if (! defined yyoverflow \
-     && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss;
+  short int yyss;
   YYSTYPE yyvs;
   };
@@ -699,5 +565,5 @@
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
       + YYSTACK_GAP_MAXIMUM)
 
@@ -705,5 +571,5 @@
    not overlap.  */
 # ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
+#  if defined (__GNUC__) && 1 < __GNUC__
 #   define YYCOPY(To, From, Count) \
       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
@@ -712,9 +578,9 @@
       do					\
 	{					\
-	  YYSIZE_T yyi;				\
+	  register YYSIZE_T yyi;		\
 	  for (yyi = 0; yyi < (Count); yyi++)	\
 	    (To)[yyi] = (From)[yyi];		\
 	}					\
-      while (YYID (0))
+      while (0)
 #  endif
 # endif
@@ -734,20 +600,26 @@
 	yyptr += yynewbytes / sizeof (*yyptr);				\
       }									\
-    while (YYID (0))
+    while (0)
 
 #endif
 
-/* YYFINAL -- State number of the termination state.  */
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
 #define YYLAST   1957
 
-/* YYNTOKENS -- Number of terminals.  */
+/* YYNTOKENS -- Number of terminals. */
 #define YYNTOKENS  145
-/* YYNNTS -- Number of nonterminals.  */
+/* YYNNTS -- Number of nonterminals. */
 #define YYNNTS  44
-/* YYNRULES -- Number of rules.  */
+/* YYNRULES -- Number of rules. */
 #define YYNRULES  169
-/* YYNRULES -- Number of states.  */
+/* YYNRULES -- Number of states. */
 #define YYNSTATES  375
 
@@ -756,9 +628,9 @@
 #define YYMAXUTOK   381
 
-#define YYTRANSLATE(YYX)						\
+#define YYTRANSLATE(YYX) 						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const yytype_uint8 yytranslate[] =
+static const unsigned char yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -806,5 +678,5 @@
 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
    YYRHS.  */
-static const yytype_uint16 yyprhs[] =
+static const unsigned short int yyprhs[] =
 {
        0,     0,     3,     4,     7,     9,    12,    15,    17,    19,
@@ -827,6 +699,6 @@
 };
 
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int16 yyrhs[] =
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short int yyrhs[] =
 {
      146,     0,    -1,    -1,   146,   147,    -1,   148,    -1,   150,
@@ -901,5 +773,5 @@
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
+static const unsigned short int yyrline[] =
 {
        0,   357,   357,   359,   393,   394,   396,   398,   402,   407,
@@ -918,12 +790,12 @@
     1175,  1179,  1184,  1188,  1192,  1196,  1200,  1204,  1209,  1215,
     1221,  1227,  1233,  1239,  1245,  1251,  1263,  1270,  1274,  1312,
-    1322,  1335,  1335,  1338,  1410,  1416,  1445,  1458,  1475,  1484,
-    1489,  1497,  1509,  1528,  1539,  1559,  1583,  1589,  1601,  1608
+    1322,  1335,  1335,  1338,  1410,  1419,  1448,  1461,  1478,  1487,
+    1492,  1500,  1512,  1531,  1542,  1562,  1586,  1592,  1604,  1611
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
+#if YYDEBUG || YYERROR_VERBOSE
+/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
 static const char *const yytname[] =
 {
@@ -968,5 +840,5 @@
 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
    token YYLEX-NUM.  */
-static const yytype_uint16 yytoknum[] =
+static const unsigned short int yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
@@ -989,5 +861,5 @@
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
+static const unsigned char yyr1[] =
 {
        0,   145,   146,   146,   147,   147,   147,   147,   147,   147,
@@ -1011,5 +883,5 @@
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+static const unsigned char yyr2[] =
 {
        0,     2,     0,     2,     1,     2,     2,     1,     1,     1,
@@ -1035,5 +907,5 @@
    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
    means the default is an error.  */
-static const yytype_uint8 yydefact[] =
+static const unsigned char yydefact[] =
 {
        2,     0,     1,     0,     0,     0,     0,   147,    98,     0,
@@ -1077,6 +949,6 @@
 };
 
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short int yydefgoto[] =
 {
       -1,     1,    53,    54,    55,    56,    57,    58,   142,    60,
@@ -1090,5 +962,5 @@
    STATE-NUM.  */
 #define YYPACT_NINF -327
-static const yytype_int16 yypact[] =
+static const short int yypact[] =
 {
     -327,   283,  -327,   -79,  1263,   957,  1010,  -126,  -327,  1747,
@@ -1133,5 +1005,5 @@
 
 /* YYPGOTO[NTERM-NUM].  */
-static const yytype_int16 yypgoto[] =
+static const short int yypgoto[] =
 {
     -327,  -327,  -327,  -327,  -327,  -327,  -327,    72,    -1,    18,
@@ -1147,5 +1019,5 @@
    If YYTABLE_NINF, syntax error.  */
 #define YYTABLE_NINF -1
-static const yytype_int16 yytable[] =
+static const short int yytable[] =
 {
       59,   119,   120,   303,   304,   305,   345,     8,    65,   306,
@@ -1347,5 +1219,5 @@
 };
 
-static const yytype_int16 yycheck[] =
+static const short int yycheck[] =
 {
        1,   108,   109,    13,    14,    15,   111,    17,     1,    19,
@@ -1549,5 +1421,5 @@
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
+static const unsigned char yystos[] =
 {
        0,   146,     0,     1,     8,    13,    14,    15,    17,    19,
@@ -1591,4 +1463,20 @@
 };
 
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# if defined (__STDC__) || defined (__cplusplus)
+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T size_t
+# endif
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
 #define yyerrok		(yyerrstatus = 0)
 #define yyclearin	(yychar = YYEMPTY)
@@ -1616,60 +1504,27 @@
       yylval = (Value);						\
       yytoken = YYTRANSLATE (yychar);				\
-      YYPOPSTACK (1);						\
+      YYPOPSTACK;						\
       goto yybackup;						\
     }								\
   else								\
-    {								\
-      yyerror (YY_("syntax error: cannot back up")); \
+    { 								\
+      yyerror ("syntax error: cannot back up");\
       YYERROR;							\
     }								\
-while (YYID (0))
-
+while (0)
 
 #define YYTERROR	1
 #define YYERRCODE	256
 
-
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+   are run).  */
+
 #ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-    do									\
-      if (YYID (N))                                                    \
-	{								\
-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   = (Current).last_line   =		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column = (Current).last_column =		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	}								\
-    while (YYID (0))
+# define YYLLOC_DEFAULT(Current, Rhs, N)		\
+   ((Current).first_line   = (Rhs)[1].first_line,	\
+    (Current).first_column = (Rhs)[1].first_column,	\
+    (Current).last_line    = (Rhs)[N].last_line,	\
+    (Current).last_column  = (Rhs)[N].last_column)
 #endif
-
-
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-#ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)			\
-     fprintf (File, "%d.%d-%d.%d",			\
-	      (Loc).first_line, (Loc).first_column,	\
-	      (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif
-
 
 /* YYLEX -- calling `yylex' with the right arguments.  */
@@ -1693,75 +1548,22 @@
   if (yydebug)					\
     YYFPRINTF Args;				\
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-do {									  \
-  if (yydebug)								  \
-    {									  \
-      YYFPRINTF (stderr, "%s ", Title);					  \
-      yy_symbol_print (stderr,						  \
-		  Type, Value); \
-      YYFPRINTF (stderr, "\n");						  \
-    }									  \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
-{
-  if (!yyvaluep)
-    return;
-# ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
-# endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
-}
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
-{
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
-}
+} while (0)
+
+# define YYDSYMPRINT(Args)			\
+do {						\
+  if (yydebug)					\
+    yysymprint Args;				\
+} while (0)
+
+# define YYDSYMPRINTF(Title, Token, Value, Location)		\
+do {								\
+  if (yydebug)							\
+    {								\
+      YYFPRINTF (stderr, "%s ", Title);				\
+      yysymprint (stderr, 					\
+                  Token, Value);	\
+      YYFPRINTF (stderr, "\n");					\
+    }								\
+} while (0)
 
 /*------------------------------------------------------------------.
@@ -1770,17 +1572,16 @@
 `------------------------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#if defined (__STDC__) || defined (__cplusplus)
 static void
-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+yy_stack_print (short int *bottom, short int *top)
 #else
 static void
 yy_stack_print (bottom, top)
-    yytype_int16 *bottom;
-    yytype_int16 *top;
+    short int *bottom;
+    short int *top;
 #endif
 {
   YYFPRINTF (stderr, "Stack now");
-  for (; bottom <= top; ++bottom)
+  for (/* Nothing. */; bottom <= top; ++bottom)
     YYFPRINTF (stderr, " %d", *bottom);
   YYFPRINTF (stderr, "\n");
@@ -1791,5 +1592,5 @@
   if (yydebug)							\
     yy_stack_print ((Bottom), (Top));				\
-} while (YYID (0))
+} while (0)
 
 
@@ -1798,29 +1599,21 @@
 `------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#if defined (__STDC__) || defined (__cplusplus)
 static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+yy_reduce_print (int yyrule)
 #else
 static void
-yy_reduce_print (yyvsp, yyrule)
-    YYSTYPE *yyvsp;
+yy_reduce_print (yyrule)
     int yyrule;
 #endif
 {
-  int yynrhs = yyr2[yyrule];
   int yyi;
-  unsigned long int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-	     yyrule - 1, yylno);
-  /* The symbols being reduced.  */
-  for (yyi = 0; yyi < yynrhs; yyi++)
-    {
-      fprintf (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-		       &(yyvsp[(yyi + 1) - (yynrhs)])
-		       		       );
-      fprintf (stderr, "\n");
-    }
+  unsigned int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+             yyrule - 1, yylno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
 }
 
@@ -1828,6 +1621,6 @@
 do {					\
   if (yydebug)				\
-    yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
+    yy_reduce_print (Rule);		\
+} while (0)
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
@@ -1836,5 +1629,6 @@
 #else /* !YYDEBUG */
 # define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDSYMPRINT(Args)
+# define YYDSYMPRINTF(Title, Token, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
@@ -1851,6 +1645,10 @@
 
    Do not make this value too large; the results are undefined if
-   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
    evaluated with infinite-precision integer arithmetic.  */
+
+#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
+# undef YYMAXDEPTH
+#endif
 
 #ifndef YYMAXDEPTH
@@ -1864,22 +1662,22 @@
 
 # ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
+#  if defined (__GLIBC__) && defined (_STRING_H)
 #   define yystrlen strlen
 #  else
 /* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
 yystrlen (const char *yystr)
-#else
-static YYSIZE_T
+#   else
 yystrlen (yystr)
-    const char *yystr;
-#endif
+     const char *yystr;
+#   endif
 {
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
+  register const char *yys = yystr;
+
+  while (*yys++ != '\0')
     continue;
-  return yylen;
+
+  return yys - yystr - 1;
 }
 #  endif
@@ -1887,22 +1685,20 @@
 
 # ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
 #   define yystpcpy stpcpy
 #  else
 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    YYDEST.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static char *
+#   if defined (__STDC__) || defined (__cplusplus)
 yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
+#   else
 yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
+     char *yydest;
+     const char *yysrc;
+#   endif
 {
-  char *yyd = yydest;
-  const char *yys = yysrc;
+  register char *yyd = yydest;
+  register const char *yys = yysrc;
 
   while ((*yyd++ = *yys++) != '\0')
@@ -1914,191 +1710,69 @@
 # endif
 
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
-    {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
-
-      for (;;)
-	switch (*++yyp)
-	  {
-	  case '\'':
-	  case ',':
-	    goto do_not_strip_quotes;
-
-	  case '\\':
-	    if (*++yyp != '\\')
-	      goto do_not_strip_quotes;
-	    /* Fall through.  */
-	  default:
-	    if (yyres)
-	      yyres[yyn] = *yyp;
-	    yyn++;
-	    break;
-
-	  case '"':
-	    if (yyres)
-	      yyres[yyn] = '\0';
-	    return yyn;
-	  }
-    do_not_strip_quotes: ;
-    }
-
-  if (! yyres)
-    return yystrlen (yystr);
-
-  return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
-  int yyn = yypact[yystate];
-
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
-    {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
-
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-	 constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = "syntax error, unexpected %s";
-      static char const yyexpecting[] = ", expecting %s";
-      static char const yyor[] = " or %s";
-      char yyformat[sizeof yyunexpected
-		    + sizeof yyexpecting - 1
-		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-		       * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-	 YYCHECK.  */
-      int yyxbegin = yyn < 0 ? -yyn : 0;
-
-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
-
-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
-
-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	  {
-	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-	      {
-		yycount = 1;
-		yysize = yysize0;
-		yyformat[sizeof yyunexpected - 1] = '\0';
-		break;
-	      }
-	    yyarg[yycount++] = yytname[yyx];
-	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-	    yysize_overflow |= (yysize1 < yysize);
-	    yysize = yysize1;
-	    yyfmt = yystpcpy (yyfmt, yyprefix);
-	    yyprefix = yyor;
-	  }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 < yysize);
-      yysize = yysize1;
-
-      if (yysize_overflow)
-	return YYSIZE_MAXIMUM;
-
-      if (yyresult)
-	{
-	  /* Avoid sprintf, as that infringes on the user's name space.
-	     Don't have undefined behavior even if the translation
-	     produced a string with the wrong number of "%s"s.  */
-	  char *yyp = yyresult;
-	  int yyi = 0;
-	  while ((*yyp = *yyf) != '\0')
-	    {
-	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-		{
-		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-		  yyf += 2;
-		}
-	      else
-		{
-		  yyp++;
-		  yyf++;
-		}
-	    }
-	}
-      return yysize;
-    }
-}
-#endif /* YYERROR_VERBOSE */
-
-
-
-/*-----------------------------------------------.
-| Release the memory associated to this symbol.  |
-`-----------------------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#endif /* !YYERROR_VERBOSE */
+
+
+
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
 static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
 #else
 static void
-yydestruct (yymsg, yytype, yyvaluep)
-    const char *yymsg;
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
     int yytype;
     YYSTYPE *yyvaluep;
 #endif
 {
-  YYUSE (yyvaluep);
-
-  if (!yymsg)
-    yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    {
+      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+# ifdef YYPRINT
+      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+    }
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
 
   switch (yytype)
     {
-
       default:
-	break;
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yytype, yyvaluep)
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  switch (yytype)
+    {
+
+      default:
+        break;
     }
 }
@@ -2109,11 +1783,11 @@
 
 #ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
+# if defined (__STDC__) || defined (__cplusplus)
 int yyparse (void *YYPARSE_PARAM);
-#else
+# else
 int yyparse ();
-#endif
+# endif
 #else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
+#if defined (__STDC__) || defined (__cplusplus)
 int yyparse (void);
 #else
@@ -2132,16 +1806,12 @@
 
 #ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
 #else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#if defined (__STDC__) || defined (__cplusplus)
 int
 yyparse (void)
@@ -2153,8 +1823,8 @@
 #endif
 {
-  /* The look-ahead symbol.  */
+  /* The lookahead symbol.  */
 int yychar;
 
-/* The semantic value of the look-ahead symbol.  */
+/* The semantic value of the lookahead symbol.  */
 YYSTYPE yylval;
 
@@ -2162,17 +1832,11 @@
 int yynerrs;
 
-  int yystate;
-  int yyn;
+  register int yystate;
+  register int yyn;
   int yyresult;
   /* Number of tokens to shift before error messages enabled.  */
   int yyerrstatus;
-  /* Look-ahead token as an internal (translated) token number.  */
+  /* Lookahead token as an internal (translated) token number.  */
   int yytoken = 0;
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
 
   /* Three stacks and their tools:
@@ -2185,16 +1849,16 @@
 
   /* The state stack.  */
-  yytype_int16 yyssa[YYINITDEPTH];
-  yytype_int16 *yyss = yyssa;
-  yytype_int16 *yyssp;
+  short int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  register short int *yyssp;
 
   /* The semantic value stack.  */
   YYSTYPE yyvsa[YYINITDEPTH];
   YYSTYPE *yyvs = yyvsa;
-  YYSTYPE *yyvsp;
-
-
-
-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+  register YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK   (yyvsp--, yyssp--)
 
   YYSIZE_T yystacksize = YYINITDEPTH;
@@ -2205,7 +1869,7 @@
 
 
-  /* The number of symbols on the RHS of the reduced rule.
-     Keep to zero when no symbol should be popped.  */
-  int yylen = 0;
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
 
   YYDPRINTF ((stderr, "Starting parse\n"));
@@ -2223,4 +1887,5 @@
   yyssp = yyss;
   yyvsp = yyvs;
+
 
   goto yysetstate;
@@ -2231,5 +1896,6 @@
  yynewstate:
   /* In all cases, when you get here, the value and location stacks
-     have just been pushed.  So pushing a state here evens the stacks.  */
+     have just been pushed. so pushing a state here evens the stacks.
+     */
   yyssp++;
 
@@ -2244,9 +1910,9 @@
 #ifdef yyoverflow
       {
-	/* Give user a chance to reallocate the stack.  Use copies of
+	/* Give user a chance to reallocate the stack. Use copies of
 	   these so that the &'s don't force the real ones into
 	   memory.  */
 	YYSTYPE *yyvs1 = yyvs;
-	yytype_int16 *yyss1 = yyss;
+	short int *yyss1 = yyss;
 
 
@@ -2255,5 +1921,5 @@
 	   conditional around just the two extra args, but that might
 	   be undefined if yyoverflow is a macro.  */
-	yyoverflow (YY_("memory exhausted"),
+	yyoverflow ("parser stack overflow",
 		    &yyss1, yysize * sizeof (*yyssp),
 		    &yyvs1, yysize * sizeof (*yyvsp),
@@ -2266,9 +1932,9 @@
 #else /* no yyoverflow */
 # ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
+      goto yyoverflowlab;
 # else
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-	goto yyexhaustedlab;
+	goto yyoverflowlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
@@ -2276,9 +1942,9 @@
 
       {
-	yytype_int16 *yyss1 = yyss;
+	short int *yyss1 = yyss;
 	union yyalloc *yyptr =
 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
 	if (! yyptr)
-	  goto yyexhaustedlab;
+	  goto yyoverflowlab;
 	YYSTACK_RELOCATE (yyss);
 	YYSTACK_RELOCATE (yyvs);
@@ -2311,15 +1977,17 @@
 yybackup:
 
-  /* Do appropriate processing given the current state.  Read a
-     look-ahead token if we need one and don't already have one.  */
-
-  /* First try to decide what to do without reference to look-ahead token.  */
+/* Do appropriate processing given the current state.  */
+/* Read a lookahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to lookahead token.  */
+
   yyn = yypact[yystate];
   if (yyn == YYPACT_NINF)
     goto yydefault;
 
-  /* Not known => get a look-ahead token if don't already have one.  */
-
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  /* Not known => get a lookahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
   if (yychar == YYEMPTY)
     {
@@ -2336,5 +2004,5 @@
     {
       yytoken = YYTRANSLATE (yychar);
-      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
     }
 
@@ -2356,4 +2024,14 @@
     YYACCEPT;
 
+  /* Shift the lookahead token.  */
+  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+
+
   /* Count tokens shifted since error; after three, turn off error
      status.  */
@@ -2361,14 +2039,5 @@
     yyerrstatus--;
 
-  /* Shift the look-ahead token.  */
-  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
-
   yystate = yyn;
-  *++yyvsp = yylval;
-
   goto yynewstate;
 
@@ -2446,5 +2115,5 @@
   case 6:
 #line 397 "grammar.y"
-    { (yyvsp[(1) - (2)].lv).CleanUp(); currentVoice->ifsw=0;;}
+    { yyvsp[-1].lv.CleanUp(); currentVoice->ifsw=0;;}
     break;
 
@@ -2480,5 +2149,5 @@
             {
 /*  bison failed here*/
-              if ((inerror!=3) && ((yyvsp[(1) - (2)]).i<UMINUS) && ((yyvsp[(1) - (2)]).i>' '))
+              if ((inerror!=3) && (yyvsp[-1].i<UMINUS) && (yyvsp[-1].i>' '))
               {
                 // 1: yyerror called
@@ -2486,5 +2155,5 @@
                 // 3: error rule put token+\n
                 inerror=3;
-                Print(" error at token `%s`\n",iiTwoOps((yyvsp[(1) - (2)]).i));
+                Print(" error at token `%s`\n",iiTwoOps(yyvsp[-1].i));
               }
 /**/
@@ -2528,5 +2197,5 @@
   case 19:
 #line 471 "grammar.y"
-    { omFree((ADDRESS)(yyvsp[(2) - (2)].name)); ;}
+    { omFree((ADDRESS)yyvsp[0].name); ;}
     break;
 
@@ -2534,5 +2203,5 @@
 #line 486 "grammar.y"
     {
-            if(iiAssign(&(yyvsp[(1) - (2)].lv),&(yyvsp[(2) - (2)].lv))) YYERROR;
+            if(iiAssign(&yyvsp[-1].lv,&yyvsp[0].lv)) YYERROR;
           ;}
     break;
@@ -2542,5 +2211,5 @@
     {
             if (currRing==NULL) MYYERROR("no ring active");
-            syMake(&(yyval.lv),omStrDup((yyvsp[(1) - (1)].name)));
+            syMake(&yyval.lv,omStrDup(yyvsp[0].name));
           ;}
     break;
@@ -2549,5 +2218,5 @@
 #line 498 "grammar.y"
     {
-            syMake(&(yyval.lv),(yyvsp[(1) - (1)].name));
+            syMake(&yyval.lv,yyvsp[0].name);
           ;}
     break;
@@ -2556,5 +2225,5 @@
 #line 502 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv), &(yyvsp[(1) - (3)].lv), COLONCOLON, &(yyvsp[(3) - (3)].lv))) YYERROR;
+            if(iiExprArith2(&yyval.lv, &yyvsp[-2].lv, COLONCOLON, &yyvsp[0].lv)) YYERROR;
           ;}
     break;
@@ -2563,5 +2232,5 @@
 #line 506 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv), &(yyvsp[(1) - (3)].lv), '.', &(yyvsp[(3) - (3)].lv))) YYERROR;
+            if(iiExprArith2(&yyval.lv, &yyvsp[-2].lv, '.', &yyvsp[0].lv)) YYERROR;
           ;}
     break;
@@ -2570,5 +2239,5 @@
 #line 510 "grammar.y"
     {
-            if(iiExprArith1(&(yyval.lv),&(yyvsp[(1) - (3)].lv),'(')) YYERROR;
+            if(iiExprArith1(&yyval.lv,&yyvsp[-2].lv,'(')) YYERROR;
           ;}
     break;
@@ -2577,13 +2246,13 @@
 #line 514 "grammar.y"
     {
-	    if ((yyvsp[(1) - (4)].lv).rtyp==UNKNOWN)
+	    if (yyvsp[-3].lv.rtyp==UNKNOWN)
 	    { // for x(i)(j)
-	      if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (4)].lv),'(',&(yyvsp[(3) - (4)].lv))) YYERROR;
+	      if(iiExprArith2(&yyval.lv,&yyvsp[-3].lv,'(',&yyvsp[-1].lv)) YYERROR;
 	    }
 	    else
 	    {
-              (yyvsp[(1) - (4)].lv).next=(leftv)omAllocBin(sleftv_bin);
-              memcpy((yyvsp[(1) - (4)].lv).next,&(yyvsp[(3) - (4)].lv),sizeof(sleftv));
-              if(iiExprArithM(&(yyval.lv),&(yyvsp[(1) - (4)].lv),'(')) YYERROR;
+              yyvsp[-3].lv.next=(leftv)omAllocBin(sleftv_bin);
+              memcpy(yyvsp[-3].lv.next,&yyvsp[-1].lv,sizeof(sleftv));
+              if(iiExprArithM(&yyval.lv,&yyvsp[-3].lv,'(')) YYERROR;
 	    }
           ;}
@@ -2595,7 +2264,7 @@
             if (currRingHdl==NULL) MYYERROR("no ring active");
             int j = 0;
-            memset(&(yyval.lv),0,sizeof(sleftv));
-            (yyval.lv).rtyp=VECTOR_CMD;
-            leftv v = &(yyvsp[(2) - (3)].lv);
+            memset(&yyval.lv,0,sizeof(sleftv));
+            yyval.lv.rtyp=VECTOR_CMD;
+            leftv v = &yyvsp[-1].lv;
             while (v!=NULL)
             {
@@ -2606,16 +2275,16 @@
               if((i==0) || (iiConvert(t /*v->Typ()*/,POLY_CMD,i,v,&tmp)))
               {
-                pDelete((poly *)&(yyval.lv).data);
-                (yyvsp[(2) - (3)].lv).CleanUp();
+                pDelete((poly *)&yyval.lv.data);
+                yyvsp[-1].lv.CleanUp();
                 MYYERROR("expected '[poly,...'");
               }
               poly p = (poly)tmp.CopyD(POLY_CMD);
               pSetCompP(p,++j);
-              (yyval.lv).data = (void *)pAdd((poly)(yyval.lv).data,p);
+              yyval.lv.data = (void *)pAdd((poly)yyval.lv.data,p);
               v->next=tmp.next;tmp.next=NULL;
               tmp.CleanUp();
               v=v->next;
             }
-            (yyvsp[(2) - (3)].lv).CleanUp();
+            yyvsp[-1].lv.CleanUp();
           ;}
     break;
@@ -2624,13 +2293,13 @@
 #line 555 "grammar.y"
     {
-            memset(&(yyval.lv),0,sizeof((yyval.lv)));
-            int i = atoi((yyvsp[(1) - (1)].name));
+            memset(&yyval.lv,0,sizeof(yyval.lv));
+            int i = atoi(yyvsp[0].name);
             /*remember not to omFree($1)
             *because it is a part of the scanner buffer*/
-            (yyval.lv).rtyp  = INT_CMD;
-            (yyval.lv).data = (void *)(long)i;
+            yyval.lv.rtyp  = INT_CMD;
+            yyval.lv.data = (void *)(long)i;
 
             /* check: out of range input */
-            int l = strlen((yyvsp[(1) - (1)].name))+2;
+            int l = strlen(yyvsp[0].name)+2;
             number n;
             if (l >= MAX_INT_LEN)
@@ -2638,9 +2307,9 @@
               char tmp[MAX_INT_LEN+5];
               sprintf(tmp,"%d",i);
-              if (strcmp(tmp,(yyvsp[(1) - (1)].name))!=0)
+              if (strcmp(tmp,yyvsp[0].name)!=0)
               {
-                nlRead((yyvsp[(1) - (1)].name),&n);
-                (yyval.lv).rtyp=BIGINT_CMD;
-                (yyval.lv).data = n;
+                nlRead(yyvsp[0].name,&n);
+                yyval.lv.rtyp=BIGINT_CMD;
+                yyval.lv.data = n;
               }
             }
@@ -2651,7 +2320,7 @@
 #line 579 "grammar.y"
     {
-            memset(&(yyval.lv),0,sizeof((yyval.lv)));
-            (yyval.lv).rtyp = (yyvsp[(1) - (1)].i);
-            (yyval.lv).data = (yyval.lv).Data();
+            memset(&yyval.lv,0,sizeof(yyval.lv));
+            yyval.lv.rtyp = yyvsp[0].i;
+            yyval.lv.data = yyval.lv.Data();
           ;}
     break;
@@ -2660,7 +2329,7 @@
 #line 585 "grammar.y"
     {
-            memset(&(yyval.lv),0,sizeof((yyval.lv)));
-            (yyval.lv).rtyp  = STRING_CMD;
-            (yyval.lv).data = (yyvsp[(1) - (1)].name);
+            memset(&yyval.lv,0,sizeof(yyval.lv));
+            yyval.lv.rtyp  = STRING_CMD;
+            yyval.lv.data = yyvsp[0].name;
           ;}
     break;
@@ -2669,5 +2338,5 @@
 #line 591 "grammar.y"
     {
-            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
+            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
           ;}
     break;
@@ -2676,5 +2345,5 @@
 #line 598 "grammar.y"
     {
-            leftv v = &(yyvsp[(1) - (3)].lv);
+            leftv v = &yyvsp[-2].lv;
             while (v->next!=NULL)
             {
@@ -2682,6 +2351,6 @@
             }
             v->next = (leftv)omAllocBin(sleftv_bin);
-            memcpy(v->next,&((yyvsp[(3) - (3)].lv)),sizeof(sleftv));
-            (yyval.lv) = (yyvsp[(1) - (3)].lv);
+            memcpy(v->next,&(yyvsp[0].lv),sizeof(sleftv));
+            yyval.lv = yyvsp[-2].lv;
           ;}
     break;
@@ -2690,5 +2359,5 @@
 #line 609 "grammar.y"
     {
-            (yyval.lv) = (yyvsp[(1) - (1)].lv);
+            yyval.lv = yyvsp[0].lv;
           ;}
     break;
@@ -2698,5 +2367,5 @@
     {
             /*if ($1.typ == eunknown) YYERROR;*/
-            (yyval.lv) = (yyvsp[(1) - (1)].lv);
+            yyval.lv = yyvsp[0].lv;
           ;}
     break;
@@ -2704,10 +2373,10 @@
   case 44:
 #line 619 "grammar.y"
-    { (yyval.lv) = (yyvsp[(1) - (1)].lv); ;}
+    { yyval.lv = yyvsp[0].lv; ;}
     break;
 
   case 45:
 #line 620 "grammar.y"
-    { (yyval.lv) = (yyvsp[(2) - (3)].lv); ;}
+    { yyval.lv = yyvsp[-1].lv; ;}
     break;
 
@@ -2715,5 +2384,5 @@
 #line 622 "grammar.y"
     {
-            if(iiExprArith3(&(yyval.lv),'[',&(yyvsp[(1) - (6)].lv),&(yyvsp[(3) - (6)].lv),&(yyvsp[(5) - (6)].lv))) YYERROR;
+            if(iiExprArith3(&yyval.lv,'[',&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
           ;}
     break;
@@ -2722,5 +2391,5 @@
 #line 626 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (4)].lv),'[',&(yyvsp[(3) - (4)].lv))) YYERROR;
+            if(iiExprArith2(&yyval.lv,&yyvsp[-3].lv,'[',&yyvsp[-1].lv)) YYERROR;
           ;}
     break;
@@ -2729,5 +2398,5 @@
 #line 630 "grammar.y"
     {
-            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
+            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
           ;}
     break;
@@ -2736,5 +2405,5 @@
 #line 634 "grammar.y"
     {
-            if(iiExprArithM(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
+            if(iiExprArithM(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
           ;}
     break;
@@ -2743,5 +2412,5 @@
 #line 638 "grammar.y"
     {
-            if(iiExprArithM(&(yyval.lv),NULL,(yyvsp[(1) - (3)].i))) YYERROR;
+            if(iiExprArithM(&yyval.lv,NULL,yyvsp[-2].i)) YYERROR;
           ;}
     break;
@@ -2750,5 +2419,5 @@
 #line 642 "grammar.y"
     {
-            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
+            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
           ;}
     break;
@@ -2757,5 +2426,5 @@
 #line 646 "grammar.y"
     {
-            if(iiExprArithM(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
+            if(iiExprArithM(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
           ;}
     break;
@@ -2764,5 +2433,5 @@
 #line 650 "grammar.y"
     {
-            if(iiExprArithM(&(yyval.lv),NULL,(yyvsp[(1) - (3)].i))) YYERROR;
+            if(iiExprArithM(&yyval.lv,NULL,yyvsp[-2].i)) YYERROR;
           ;}
     break;
@@ -2771,5 +2440,5 @@
 #line 654 "grammar.y"
     {
-            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
+            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
           ;}
     break;
@@ -2778,5 +2447,5 @@
 #line 658 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv),&(yyvsp[(3) - (6)].lv),(yyvsp[(1) - (6)].i),&(yyvsp[(5) - (6)].lv),TRUE)) YYERROR;
+            if(iiExprArith2(&yyval.lv,&yyvsp[-3].lv,yyvsp[-5].i,&yyvsp[-1].lv,TRUE)) YYERROR;
           ;}
     break;
@@ -2785,5 +2454,5 @@
 #line 662 "grammar.y"
     {
-            if(iiExprArith3(&(yyval.lv),(yyvsp[(1) - (8)].i),&(yyvsp[(3) - (8)].lv),&(yyvsp[(5) - (8)].lv),&(yyvsp[(7) - (8)].lv))) YYERROR;
+            if(iiExprArith3(&yyval.lv,yyvsp[-7].i,&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
           ;}
     break;
@@ -2792,5 +2461,5 @@
 #line 666 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv),&(yyvsp[(3) - (6)].lv),(yyvsp[(1) - (6)].i),&(yyvsp[(5) - (6)].lv),TRUE)) YYERROR;
+            if(iiExprArith2(&yyval.lv,&yyvsp[-3].lv,yyvsp[-5].i,&yyvsp[-1].lv,TRUE)) YYERROR;
           ;}
     break;
@@ -2799,5 +2468,5 @@
 #line 670 "grammar.y"
     {
-            if(iiExprArith3(&(yyval.lv),(yyvsp[(1) - (8)].i),&(yyvsp[(3) - (8)].lv),&(yyvsp[(5) - (8)].lv),&(yyvsp[(7) - (8)].lv))) YYERROR;
+            if(iiExprArith3(&yyval.lv,yyvsp[-7].i,&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
           ;}
     break;
@@ -2806,5 +2475,5 @@
 #line 674 "grammar.y"
     {
-            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
+            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
           ;}
     break;
@@ -2813,5 +2482,5 @@
 #line 678 "grammar.y"
     {
-            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
+            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
           ;}
     break;
@@ -2820,5 +2489,5 @@
 #line 682 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv),&(yyvsp[(3) - (6)].lv),(yyvsp[(1) - (6)].i),&(yyvsp[(5) - (6)].lv),TRUE)) YYERROR;
+            if(iiExprArith2(&yyval.lv,&yyvsp[-3].lv,yyvsp[-5].i,&yyvsp[-1].lv,TRUE)) YYERROR;
           ;}
     break;
@@ -2827,5 +2496,5 @@
 #line 686 "grammar.y"
     {
-            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
+            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
           ;}
     break;
@@ -2834,5 +2503,5 @@
 #line 690 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv),&(yyvsp[(3) - (6)].lv),(yyvsp[(1) - (6)].i),&(yyvsp[(5) - (6)].lv),TRUE)) YYERROR;
+            if(iiExprArith2(&yyval.lv,&yyvsp[-3].lv,yyvsp[-5].i,&yyvsp[-1].lv,TRUE)) YYERROR;
           ;}
     break;
@@ -2841,5 +2510,5 @@
 #line 694 "grammar.y"
     {
-            if(iiExprArith3(&(yyval.lv),(yyvsp[(1) - (8)].i),&(yyvsp[(3) - (8)].lv),&(yyvsp[(5) - (8)].lv),&(yyvsp[(7) - (8)].lv))) YYERROR;
+            if(iiExprArith3(&yyval.lv,yyvsp[-7].i,&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
           ;}
     break;
@@ -2848,5 +2517,5 @@
 #line 698 "grammar.y"
     {
-            if(iiExprArith3(&(yyval.lv),(yyvsp[(1) - (8)].i),&(yyvsp[(3) - (8)].lv),&(yyvsp[(5) - (8)].lv),&(yyvsp[(7) - (8)].lv))) YYERROR;
+            if(iiExprArith3(&yyval.lv,yyvsp[-7].i,&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
           ;}
     break;
@@ -2855,5 +2524,5 @@
 #line 702 "grammar.y"
     {
-            if(iiExprArithM(&(yyval.lv),NULL,(yyvsp[(1) - (3)].i))) YYERROR;
+            if(iiExprArithM(&yyval.lv,NULL,yyvsp[-2].i)) YYERROR;
           ;}
     break;
@@ -2862,5 +2531,5 @@
 #line 706 "grammar.y"
     {
-            if(iiExprArithM(&(yyval.lv),&(yyvsp[(3) - (4)].lv),(yyvsp[(1) - (4)].i))) YYERROR;
+            if(iiExprArithM(&yyval.lv,&yyvsp[-1].lv,yyvsp[-3].i)) YYERROR;
           ;}
     break;
@@ -2869,5 +2538,5 @@
 #line 710 "grammar.y"
     {
-            if(iiExprArith3(&(yyval.lv),MATRIX_CMD,&(yyvsp[(3) - (8)].lv),&(yyvsp[(5) - (8)].lv),&(yyvsp[(7) - (8)].lv))) YYERROR;
+            if(iiExprArith3(&yyval.lv,MATRIX_CMD,&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
           ;}
     break;
@@ -2876,5 +2545,5 @@
 #line 714 "grammar.y"
     {
-            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),MATRIX_CMD)) YYERROR;
+            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,MATRIX_CMD)) YYERROR;
           ;}
     break;
@@ -2883,5 +2552,5 @@
 #line 718 "grammar.y"
     {
-            if(iiExprArith3(&(yyval.lv),INTMAT_CMD,&(yyvsp[(3) - (8)].lv),&(yyvsp[(5) - (8)].lv),&(yyvsp[(7) - (8)].lv))) YYERROR;
+            if(iiExprArith3(&yyval.lv,INTMAT_CMD,&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
           ;}
     break;
@@ -2890,5 +2559,5 @@
 #line 722 "grammar.y"
     {
-            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),INTMAT_CMD)) YYERROR;
+            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,INTMAT_CMD)) YYERROR;
           ;}
     break;
@@ -2897,5 +2566,5 @@
 #line 726 "grammar.y"
     {
-            if(iiExprArith3(&(yyval.lv),RING_CMD,&(yyvsp[(3) - (8)].lv),&(yyvsp[(5) - (8)].lv),&(yyvsp[(7) - (8)].lv))) YYERROR;
+            if(iiExprArith3(&yyval.lv,RING_CMD,&yyvsp[-5].lv,&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
           ;}
     break;
@@ -2904,5 +2573,5 @@
 #line 730 "grammar.y"
     {
-            if(iiExprArith1(&(yyval.lv),&(yyvsp[(3) - (4)].lv),RING_CMD)) YYERROR;
+            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,RING_CMD)) YYERROR;
           ;}
     break;
@@ -2911,5 +2580,5 @@
 #line 734 "grammar.y"
     {
-            (yyval.lv)=(yyvsp[(2) - (3)].lv);
+            yyval.lv=yyvsp[-1].lv;
           ;}
     break;
@@ -2921,11 +2590,11 @@
             siq++;
             if (siq>0)
-            { if (iiExprArith2(&(yyval.lv),&(yyvsp[(2) - (5)].lv),'=',&(yyvsp[(4) - (5)].lv))) YYERROR; }
+            { if (iiExprArith2(&yyval.lv,&yyvsp[-3].lv,'=',&yyvsp[-1].lv)) YYERROR; }
             else
             #endif
             {
-              memset(&(yyval.lv),0,sizeof((yyval.lv)));
-              (yyval.lv).rtyp=NONE;
-              if (iiAssign(&(yyvsp[(2) - (5)].lv),&(yyvsp[(4) - (5)].lv))) YYERROR;
+              memset(&yyval.lv,0,sizeof(yyval.lv));
+              yyval.lv.rtyp=NONE;
+              if (iiAssign(&yyvsp[-3].lv,&yyvsp[-1].lv)) YYERROR;
             }
             #ifdef SIQ
@@ -2948,7 +2617,7 @@
     {
             #ifdef SIQ
-            if (siq<=0) (yyvsp[(4) - (5)].lv).Eval();
+            if (siq<=0) yyvsp[-1].lv.Eval();
             #endif
-            (yyval.lv)=(yyvsp[(4) - (5)].lv);
+            yyval.lv=yyvsp[-1].lv;
             #ifdef SIQ
             siq++;
@@ -2978,5 +2647,5 @@
 #line 790 "grammar.y"
     {
-            if(iiExprArith1(&(yyval.lv),&(yyvsp[(1) - (2)].lv),PLUSPLUS)) YYERROR;
+            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,PLUSPLUS)) YYERROR;
           ;}
     break;
@@ -2985,5 +2654,5 @@
 #line 794 "grammar.y"
     {
-            if(iiExprArith1(&(yyval.lv),&(yyvsp[(1) - (2)].lv),MINUSMINUS)) YYERROR;
+            if(iiExprArith1(&yyval.lv,&yyvsp[-1].lv,MINUSMINUS)) YYERROR;
           ;}
     break;
@@ -2992,5 +2661,5 @@
 #line 798 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),'+',&(yyvsp[(3) - (3)].lv))) YYERROR;
+            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,'+',&yyvsp[0].lv)) YYERROR;
           ;}
     break;
@@ -2999,5 +2668,5 @@
 #line 802 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),'-',&(yyvsp[(3) - (3)].lv))) YYERROR;
+            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,'-',&yyvsp[0].lv)) YYERROR;
           ;}
     break;
@@ -3006,5 +2675,5 @@
 #line 806 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),(yyvsp[(2) - (3)].i),&(yyvsp[(3) - (3)].lv))) YYERROR;
+            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,yyvsp[-1].i,&yyvsp[0].lv)) YYERROR;
           ;}
     break;
@@ -3013,5 +2682,5 @@
 #line 810 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),'^',&(yyvsp[(3) - (3)].lv))) YYERROR;
+            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,'^',&yyvsp[0].lv)) YYERROR;
           ;}
     break;
@@ -3020,5 +2689,5 @@
 #line 814 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),(yyvsp[(2) - (3)].i),&(yyvsp[(3) - (3)].lv))) YYERROR;
+            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,yyvsp[-1].i,&yyvsp[0].lv)) YYERROR;
           ;}
     break;
@@ -3027,5 +2696,5 @@
 #line 818 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),(yyvsp[(2) - (3)].i),&(yyvsp[(3) - (3)].lv))) YYERROR;
+            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,yyvsp[-1].i,&yyvsp[0].lv)) YYERROR;
           ;}
     break;
@@ -3034,5 +2703,5 @@
 #line 822 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),NOTEQUAL,&(yyvsp[(3) - (3)].lv))) YYERROR;
+            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,NOTEQUAL,&yyvsp[0].lv)) YYERROR;
           ;}
     break;
@@ -3041,5 +2710,5 @@
 #line 826 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),EQUAL_EQUAL,&(yyvsp[(3) - (3)].lv))) YYERROR;
+            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,EQUAL_EQUAL,&yyvsp[0].lv)) YYERROR;
           ;}
     break;
@@ -3048,5 +2717,5 @@
 #line 830 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),DOTDOT,&(yyvsp[(3) - (3)].lv))) YYERROR;
+            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,DOTDOT,&yyvsp[0].lv)) YYERROR;
           ;}
     break;
@@ -3055,5 +2724,5 @@
 #line 834 "grammar.y"
     {
-            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),':',&(yyvsp[(3) - (3)].lv))) YYERROR;
+            if(iiExprArith2(&yyval.lv,&yyvsp[-2].lv,':',&yyvsp[0].lv)) YYERROR;
           ;}
     break;
@@ -3062,8 +2731,8 @@
 #line 838 "grammar.y"
     {
-            memset(&(yyval.lv),0,sizeof((yyval.lv)));
-            int i; TESTSETINT((yyvsp[(2) - (2)].lv),i);
-            (yyval.lv).rtyp  = INT_CMD;
-            (yyval.lv).data = (void *)(long)(i == 0 ? 1 : 0);
+            memset(&yyval.lv,0,sizeof(yyval.lv));
+            int i; TESTSETINT(yyvsp[0].lv,i);
+            yyval.lv.rtyp  = INT_CMD;
+            yyval.lv.data = (void *)(long)(i == 0 ? 1 : 0);
           ;}
     break;
@@ -3072,5 +2741,5 @@
 #line 845 "grammar.y"
     {
-            if(iiExprArith1(&(yyval.lv),&(yyvsp[(2) - (2)].lv),'-')) YYERROR;
+            if(iiExprArith1(&yyval.lv,&yyvsp[0].lv,'-')) YYERROR;
           ;}
     break;
@@ -3078,5 +2747,5 @@
   case 94:
 #line 851 "grammar.y"
-    { (yyval.lv) = (yyvsp[(1) - (2)].lv); ;}
+    { yyval.lv = yyvsp[-1].lv; ;}
     break;
 
@@ -3084,16 +2753,16 @@
 #line 853 "grammar.y"
     {
-            if ((yyvsp[(1) - (2)].lv).rtyp==0)
+            if (yyvsp[-1].lv.rtyp==0)
             {
-              Werror("`%s` is undefined",(yyvsp[(1) - (2)].lv).Fullname());
+              Werror("`%s` is undefined",yyvsp[-1].lv.Fullname());
               YYERROR;
             }
-            else if (((yyvsp[(1) - (2)].lv).rtyp==MODUL_CMD)
+            else if ((yyvsp[-1].lv.rtyp==MODUL_CMD)
             // matrix m; m[2]=...
-            && ((yyvsp[(1) - (2)].lv).e!=NULL) && ((yyvsp[(1) - (2)].lv).e->next==NULL))
+            && (yyvsp[-1].lv.e!=NULL) && (yyvsp[-1].lv.e->next==NULL))
             {
               MYYERROR("matrix must have 2 indices");
             }
-            (yyval.lv) = (yyvsp[(1) - (2)].lv);
+            yyval.lv = yyvsp[-1].lv;
           ;}
     break;
@@ -3102,10 +2771,10 @@
 #line 873 "grammar.y"
     {
-            if ((yyvsp[(2) - (3)].lv).Typ()!=STRING_CMD)
+            if (yyvsp[-1].lv.Typ()!=STRING_CMD)
             {
               MYYERROR("string expression expected");
             }
-            (yyval.name) = (char *)(yyvsp[(2) - (3)].lv).CopyD(STRING_CMD);
-            (yyvsp[(2) - (3)].lv).CleanUp();
+            yyval.name = (char *)yyvsp[-1].lv.CopyD(STRING_CMD);
+            yyvsp[-1].lv.CleanUp();
           ;}
     break;
@@ -3114,5 +2783,5 @@
 #line 890 "grammar.y"
     {
-            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&((yyvsp[(2) - (2)].lv).req_packhdl->idroot)))
+            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&(yyvsp[0].lv.req_packhdl->idroot)))
               YYERROR;
           ;}
@@ -3122,5 +2791,5 @@
 #line 895 "grammar.y"
     {
-            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&((yyvsp[(2) - (2)].lv).req_packhdl->idroot)))
+            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&(yyvsp[0].lv.req_packhdl->idroot)))
               YYERROR;
           ;}
@@ -3130,5 +2799,5 @@
 #line 900 "grammar.y"
     {
-            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&(currRing->idroot), TRUE)) YYERROR;
+            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&(currRing->idroot), TRUE)) YYERROR;
           ;}
     break;
@@ -3137,5 +2806,5 @@
 #line 904 "grammar.y"
     {
-            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&(currRing->idroot), TRUE)) YYERROR;
+            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&(currRing->idroot), TRUE)) YYERROR;
           ;}
     break;
@@ -3144,12 +2813,12 @@
 #line 908 "grammar.y"
     {
-            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (8)].lv),myynest,(yyvsp[(1) - (8)].i),&(currRing->idroot), TRUE)) YYERROR;
-            int r; TESTSETINT((yyvsp[(4) - (8)].lv),r);
-            int c; TESTSETINT((yyvsp[(7) - (8)].lv),c);
+            if (iiDeclCommand(&yyval.lv,&yyvsp[-6].lv,myynest,yyvsp[-7].i,&(currRing->idroot), TRUE)) YYERROR;
+            int r; TESTSETINT(yyvsp[-4].lv,r);
+            int c; TESTSETINT(yyvsp[-1].lv,c);
             if (r < 1)
               MYYERROR("rows must be greater than 0");
             if (c < 0)
               MYYERROR("cols must be greater than -1");
-            leftv v=&(yyval.lv);
+            leftv v=&yyval.lv;
             //while (v->next!=NULL) { v=v->next; }
             idhdl h=(idhdl)v->data;
@@ -3163,5 +2832,5 @@
 #line 924 "grammar.y"
     {
-            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&(currRing->idroot), TRUE)) YYERROR;
+            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&(currRing->idroot), TRUE)) YYERROR;
           ;}
     break;
@@ -3170,13 +2839,13 @@
 #line 928 "grammar.y"
     {
-            int r; TESTSETINT((yyvsp[(4) - (8)].lv),r);
-            int c; TESTSETINT((yyvsp[(7) - (8)].lv),c);
+            int r; TESTSETINT(yyvsp[-4].lv,r);
+            int c; TESTSETINT(yyvsp[-1].lv,c);
             if (r < 1)
               MYYERROR("rows must be greater than 0");
             if (c < 0)
               MYYERROR("cols must be greater than -1");
-            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (8)].lv),myynest,(yyvsp[(1) - (8)].i),&((yyvsp[(2) - (8)].lv).req_packhdl->idroot)))
+            if (iiDeclCommand(&yyval.lv,&yyvsp[-6].lv,myynest,yyvsp[-7].i,&(yyvsp[-6].lv.req_packhdl->idroot)))
               YYERROR;
-            leftv v=&(yyval.lv);
+            leftv v=&yyval.lv;
             idhdl h=(idhdl)v->data;
             delete IDINTVEC(h);
@@ -3189,7 +2858,7 @@
 #line 944 "grammar.y"
     {
-            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&((yyvsp[(2) - (2)].lv).req_packhdl->idroot)))
+            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&(yyvsp[0].lv.req_packhdl->idroot)))
               YYERROR;
-            leftv v=&(yyval.lv);
+            leftv v=&yyval.lv;
             idhdl h;
             do
@@ -3206,22 +2875,22 @@
 #line 958 "grammar.y"
     {
-            int t=(yyvsp[(1) - (3)].lv).Typ();
+            int t=yyvsp[-2].lv.Typ();
             sleftv r;
             memset(&r,0,sizeof(sleftv));
             if ((BEGIN_RING<t) && (t<END_RING))
             {
-              if (iiDeclCommand(&r,&(yyvsp[(3) - (3)].lv),myynest,t,&(currRing->idroot), TRUE))
+              if (iiDeclCommand(&r,&yyvsp[0].lv,myynest,t,&(currRing->idroot), TRUE))
                 YYERROR;
             }
             else
             {
-              if (iiDeclCommand(&r,&(yyvsp[(3) - (3)].lv),myynest,t,&((yyvsp[(3) - (3)].lv).req_packhdl->idroot)))
+              if (iiDeclCommand(&r,&yyvsp[0].lv,myynest,t,&(yyvsp[0].lv.req_packhdl->idroot)))
                 YYERROR;
             }
-            leftv v=&(yyvsp[(1) - (3)].lv);
+            leftv v=&yyvsp[-2].lv;
             while (v->next!=NULL) v=v->next;
             v->next=(leftv)omAllocBin(sleftv_bin);
             memcpy(v->next,&r,sizeof(sleftv));
-            (yyval.lv)=(yyvsp[(1) - (3)].lv);
+            yyval.lv=yyvsp[-2].lv;
           ;}
     break;
@@ -3230,5 +2899,5 @@
 #line 979 "grammar.y"
     {
-            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&((yyvsp[(2) - (2)].lv).req_packhdl->idroot)))
+            if (iiDeclCommand(&yyval.lv,&yyvsp[0].lv,myynest,yyvsp[-1].i,&(yyvsp[0].lv.req_packhdl->idroot)))
               YYERROR;
           ;}
@@ -3238,5 +2907,5 @@
 #line 992 "grammar.y"
     {
-            leftv v = &(yyvsp[(2) - (5)].lv);
+            leftv v = &yyvsp[-3].lv;
             while (v->next!=NULL)
             {
@@ -3244,6 +2913,6 @@
             }
             v->next = (leftv)omAllocBin(sleftv_bin);
-            memcpy(v->next,&((yyvsp[(4) - (5)].lv)),sizeof(sleftv));
-            (yyval.lv) = (yyvsp[(2) - (5)].lv);
+            memcpy(v->next,&(yyvsp[-1].lv),sizeof(sleftv));
+            yyval.lv = yyvsp[-3].lv;
           ;}
     break;
@@ -3253,5 +2922,5 @@
     {
           // let rInit take care of any errors
-          (yyval.i)=rOrderName((yyvsp[(1) - (1)].name));
+          yyval.i=rOrderName(yyvsp[0].name);
         ;}
     break;
@@ -3260,10 +2929,10 @@
 #line 1014 "grammar.y"
     {
-            memset(&(yyval.lv),0,sizeof((yyval.lv)));
+            memset(&yyval.lv,0,sizeof(yyval.lv));
             intvec *iv = new intvec(2);
             (*iv)[0] = 1;
-            (*iv)[1] = (yyvsp[(1) - (1)].i);
-            (yyval.lv).rtyp = INTVEC_CMD;
-            (yyval.lv).data = (void *)iv;
+            (*iv)[1] = yyvsp[0].i;
+            yyval.lv.rtyp = INTVEC_CMD;
+            yyval.lv.data = (void *)iv;
           ;}
     break;
@@ -3272,6 +2941,6 @@
 #line 1023 "grammar.y"
     {
-            memset(&(yyval.lv),0,sizeof((yyval.lv)));
-            leftv sl = &(yyvsp[(3) - (4)].lv);
+            memset(&yyval.lv,0,sizeof(yyval.lv));
+            leftv sl = &yyvsp[-1].lv;
             int slLength;
             {
@@ -3280,5 +2949,5 @@
               intvec *iv = new intvec(l);
               (*iv)[0] = slLength;
-              (*iv)[1] = (yyvsp[(1) - (4)].i);
+              (*iv)[1] = yyvsp[-3].i;
 
               int i = 2;
@@ -3302,13 +2971,13 @@
                 {
                   delete iv;
-                  (yyvsp[(3) - (4)].lv).CleanUp();
+                  yyvsp[-1].lv.CleanUp();
                   MYYERROR("wrong type in ordering");
                 }
                 sl = sl->next;
               }
-              (yyval.lv).rtyp = INTVEC_CMD;
-              (yyval.lv).data = (void *)iv;
+              yyval.lv.rtyp = INTVEC_CMD;
+              yyval.lv.data = (void *)iv;
             }
-            (yyvsp[(3) - (4)].lv).CleanUp();
+            yyvsp[-1].lv.CleanUp();
           ;}
     break;
@@ -3317,7 +2986,7 @@
 #line 1069 "grammar.y"
     {
-            (yyval.lv) = (yyvsp[(1) - (3)].lv);
-            (yyval.lv).next = (sleftv *)omAllocBin(sleftv_bin);
-            memcpy((yyval.lv).next,&(yyvsp[(3) - (3)].lv),sizeof(sleftv));
+            yyval.lv = yyvsp[-2].lv;
+            yyval.lv.next = (sleftv *)omAllocBin(sleftv_bin);
+            memcpy(yyval.lv.next,&yyvsp[0].lv,sizeof(sleftv));
           ;}
     break;
@@ -3326,5 +2995,5 @@
 #line 1079 "grammar.y"
     {
-            (yyval.lv) = (yyvsp[(2) - (3)].lv);
+            yyval.lv = yyvsp[-1].lv;
           ;}
     break;
@@ -3339,11 +3008,11 @@
   case 121:
 #line 1097 "grammar.y"
-    { if ((yyvsp[(1) - (2)].i) != '<') YYERROR;
-            if((feFilePending=feFopen((yyvsp[(2) - (2)].name),"r",NULL,TRUE))==NULL) YYERROR; ;}
+    { if (yyvsp[-1].i != '<') YYERROR;
+            if((feFilePending=feFopen(yyvsp[0].name,"r",NULL,TRUE))==NULL) YYERROR; ;}
     break;
 
   case 122:
 #line 1100 "grammar.y"
-    { newFile((yyvsp[(2) - (4)].name),feFilePending); ;}
+    { newFile(yyvsp[-2].name,feFilePending); ;}
     break;
 
@@ -3351,6 +3020,6 @@
 #line 1105 "grammar.y"
     {
-            feHelp((yyvsp[(2) - (3)].name));
-            omFree((ADDRESS)(yyvsp[(2) - (3)].name));
+            feHelp(yyvsp[-1].name);
+            omFree((ADDRESS)yyvsp[-1].name);
           ;}
     break;
@@ -3366,6 +3035,6 @@
 #line 1117 "grammar.y"
     {
-            singular_example((yyvsp[(2) - (3)].name));
-            omFree((ADDRESS)(yyvsp[(2) - (3)].name));
+            singular_example(yyvsp[-1].name);
+            omFree((ADDRESS)yyvsp[-1].name);
           ;}
     break;
@@ -3374,10 +3043,10 @@
 #line 1125 "grammar.y"
     {
-          if (basePack!=(yyvsp[(2) - (2)].lv).req_packhdl)
+          if (basePack!=yyvsp[0].lv.req_packhdl)
           {
-            if(iiExport(&(yyvsp[(2) - (2)].lv),0,currPackHdl)) YYERROR;
+            if(iiExport(&yyvsp[0].lv,0,currPackHdl)) YYERROR;
           }
           else
-            if (iiExport(&(yyvsp[(2) - (2)].lv),0)) YYERROR;
+            if (iiExport(&yyvsp[0].lv,0)) YYERROR;
         ;}
     break;
@@ -3386,5 +3055,5 @@
 #line 1137 "grammar.y"
     {
-          leftv v=&(yyvsp[(2) - (2)].lv);
+          leftv v=&yyvsp[0].lv;
           if (v->rtyp!=IDHDL)
           {
@@ -3405,5 +3074,5 @@
 #line 1153 "grammar.y"
     {
-          leftv v=&(yyvsp[(3) - (3)].lv);
+          leftv v=&yyvsp[0].lv;
           if (v->rtyp!=IDHDL)
           {
@@ -3424,5 +3093,5 @@
 #line 1172 "grammar.y"
     {
-            list_cmd((yyvsp[(3) - (4)].i),NULL,"// ",TRUE);
+            list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
           ;}
     break;
@@ -3431,5 +3100,5 @@
 #line 1176 "grammar.y"
     {
-            list_cmd((yyvsp[(3) - (4)].i),NULL,"// ",TRUE);
+            list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
           ;}
     break;
@@ -3438,6 +3107,6 @@
 #line 1180 "grammar.y"
     {
-            if ((yyvsp[(3) - (4)].i)==QRING_CMD) (yyvsp[(3) - (4)].i)=RING_CMD;
-            list_cmd((yyvsp[(3) - (4)].i),NULL,"// ",TRUE);
+            if (yyvsp[-1].i==QRING_CMD) yyvsp[-1].i=RING_CMD;
+            list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
           ;}
     break;
@@ -3446,5 +3115,5 @@
 #line 1185 "grammar.y"
     {
-            list_cmd((yyvsp[(3) - (4)].i),NULL,"// ",TRUE);
+            list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
           ;}
     break;
@@ -3481,6 +3150,6 @@
 #line 1205 "grammar.y"
     {
-            list_cmd(0,(yyvsp[(3) - (4)].lv).Fullname(),"// ",TRUE);
-            (yyvsp[(3) - (4)].lv).CleanUp();
+            list_cmd(0,yyvsp[-1].lv.Fullname(),"// ",TRUE);
+            yyvsp[-1].lv.CleanUp();
           ;}
     break;
@@ -3489,7 +3158,7 @@
 #line 1210 "grammar.y"
     {
-            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
-              list_cmd((yyvsp[(5) - (6)].i),NULL,"// ",TRUE);
-            (yyvsp[(3) - (6)].lv).CleanUp();
+            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
+              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
+            yyvsp[-3].lv.CleanUp();
           ;}
     break;
@@ -3498,7 +3167,7 @@
 #line 1216 "grammar.y"
     {
-            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
-              list_cmd((yyvsp[(5) - (6)].i),NULL,"// ",TRUE);
-            (yyvsp[(3) - (6)].lv).CleanUp();
+            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
+              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
+            yyvsp[-3].lv.CleanUp();
           ;}
     break;
@@ -3507,7 +3176,7 @@
 #line 1222 "grammar.y"
     {
-            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
-              list_cmd((yyvsp[(5) - (6)].i),NULL,"// ",TRUE);
-            (yyvsp[(3) - (6)].lv).CleanUp();
+            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
+              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
+            yyvsp[-3].lv.CleanUp();
           ;}
     break;
@@ -3516,7 +3185,7 @@
 #line 1228 "grammar.y"
     {
-            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
-              list_cmd((yyvsp[(5) - (6)].i),NULL,"// ",TRUE);
-            (yyvsp[(3) - (6)].lv).CleanUp();
+            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
+              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
+            yyvsp[-3].lv.CleanUp();
           ;}
     break;
@@ -3525,7 +3194,7 @@
 #line 1234 "grammar.y"
     {
-            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
-              list_cmd((yyvsp[(5) - (6)].i),NULL,"// ",TRUE);
-            (yyvsp[(3) - (6)].lv).CleanUp();
+            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
+              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
+            yyvsp[-3].lv.CleanUp();
           ;}
     break;
@@ -3534,7 +3203,7 @@
 #line 1240 "grammar.y"
     {
-            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
-              list_cmd((yyvsp[(5) - (6)].i),NULL,"// ",TRUE);
-            (yyvsp[(3) - (6)].lv).CleanUp();
+            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
+              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
+            yyvsp[-3].lv.CleanUp();
           ;}
     break;
@@ -3543,7 +3212,7 @@
 #line 1246 "grammar.y"
     {
-            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
-              list_cmd((yyvsp[(5) - (6)].i),NULL,"// ",TRUE);
-            (yyvsp[(3) - (6)].lv).CleanUp();
+            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
+              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
+            yyvsp[-3].lv.CleanUp();
           ;}
     break;
@@ -3552,7 +3221,7 @@
 #line 1252 "grammar.y"
     {
-            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
-              list_cmd((yyvsp[(5) - (6)].i),NULL,"// ",TRUE);
-            (yyvsp[(3) - (6)].lv).CleanUp();
+            if(yyvsp[-3].lv.Typ() == PACKAGE_CMD)
+              list_cmd(yyvsp[-1].i,NULL,"// ",TRUE);
+            yyvsp[-3].lv.CleanUp();
           ;}
     break;
@@ -3573,9 +3242,9 @@
 #line 1279 "grammar.y"
     {
-            const char *ring_name = (yyvsp[(2) - (8)].lv).name;
+            const char *ring_name = yyvsp[-6].lv.name;
             ring b=
-            rInit(&(yyvsp[(4) - (8)].lv),            /* characteristik and list of parameters*/
-                  &(yyvsp[(6) - (8)].lv),            /* names of ringvariables */
-                  &(yyvsp[(8) - (8)].lv));            /* ordering */
+            rInit(&yyvsp[-4].lv,            /* characteristik and list of parameters*/
+                  &yyvsp[-2].lv,            /* names of ringvariables */
+                  &yyvsp[0].lv);            /* ordering */
             idhdl newRingHdl=NULL;
 
@@ -3583,6 +3252,6 @@
             {
                 newRingHdl=enterid(ring_name, myynest, RING_CMD,
-                                   &((yyvsp[(2) - (8)].lv).req_packhdl->idroot));
-              (yyvsp[(2) - (8)].lv).CleanUp();
+                                   &(yyvsp[-6].lv.req_packhdl->idroot));
+              yyvsp[-6].lv.CleanUp();
               if (newRingHdl!=NULL)
               {
@@ -3610,8 +3279,8 @@
 #line 1313 "grammar.y"
     {
-            const char *ring_name = (yyvsp[(2) - (2)].lv).name;
+            const char *ring_name = yyvsp[0].lv.name;
             if (!inerror) rDefault(ring_name);
             yyInRingConstruction = FALSE;
-            (yyvsp[(2) - (2)].lv).CleanUp();
+            yyvsp[0].lv.CleanUp();
           ;}
     break;
@@ -3620,5 +3289,5 @@
 #line 1323 "grammar.y"
     {
-            if (((yyvsp[(1) - (2)].i)!=LIB_CMD)||(iiLibCmd((yyvsp[(2) - (2)].name),TRUE,TRUE,TRUE)))
+            if ((yyvsp[-1].i!=LIB_CMD)||(iiLibCmd(yyvsp[0].name,TRUE,TRUE,TRUE)))
             //if ($1==LIB_CMD)
             //{
@@ -3634,14 +3303,14 @@
 #line 1339 "grammar.y"
     {
-            if (((yyvsp[(1) - (2)].i)==KEEPRING_CMD) && (myynest==0))
+            if ((yyvsp[-1].i==KEEPRING_CMD) && (myynest==0))
                MYYERROR("only inside a proc allowed");
-            const char * n=(yyvsp[(2) - (2)].lv).Name();
-            if ((((yyvsp[(2) - (2)].lv).Typ()==RING_CMD)||((yyvsp[(2) - (2)].lv).Typ()==QRING_CMD))
-            && ((yyvsp[(2) - (2)].lv).rtyp==IDHDL))
+            const char * n=yyvsp[0].lv.Name();
+            if (((yyvsp[0].lv.Typ()==RING_CMD)||(yyvsp[0].lv.Typ()==QRING_CMD))
+            && (yyvsp[0].lv.rtyp==IDHDL))
             {
-              idhdl h=(idhdl)(yyvsp[(2) - (2)].lv).data;
-              if ((yyvsp[(2) - (2)].lv).e!=NULL) h=rFindHdl((ring)(yyvsp[(2) - (2)].lv).Data(),NULL, NULL);
+              idhdl h=(idhdl)yyvsp[0].lv.data;
+              if (yyvsp[0].lv.e!=NULL) h=rFindHdl((ring)yyvsp[0].lv.Data(),NULL, NULL);
               //Print("setring %s lev %d (ptr:%x)\n",IDID(h),IDLEV(h),IDRING(h));
-              if ((yyvsp[(1) - (2)].i)==KEEPRING_CMD)
+              if (yyvsp[-1].i==KEEPRING_CMD)
               {
                 if (h!=NULL)
@@ -3649,5 +3318,5 @@
                   if (IDLEV(h)!=0)
                   {
-                    if (iiExport(&(yyvsp[(2) - (2)].lv),myynest-1)) YYERROR;
+                    if (iiExport(&yyvsp[0].lv,myynest-1)) YYERROR;
 #if 1
                     idhdl p=IDRING(h)->idroot;
@@ -3681,5 +3350,5 @@
                 {
                   Werror("%s is no identifier",n);
-                  (yyvsp[(2) - (2)].lv).CleanUp();
+                  yyvsp[0].lv.CleanUp();
                   YYERROR;
                 }
@@ -3689,13 +3358,13 @@
               {
                 Werror("cannot find the name of the basering %s",n);
-                (yyvsp[(2) - (2)].lv).CleanUp();
+                yyvsp[0].lv.CleanUp();
                 YYERROR;
               }
-              (yyvsp[(2) - (2)].lv).CleanUp();
+              yyvsp[0].lv.CleanUp();
             }
             else
             {
               Werror("%s is no name of a ring/qring",n);
-              (yyvsp[(2) - (2)].lv).CleanUp();
+              yyvsp[0].lv.CleanUp();
               YYERROR;
             }
@@ -3706,24 +3375,27 @@
 #line 1411 "grammar.y"
     {
-            if ((yyvsp[(2) - (2)].lv).rtyp!=IDHDL) MYYERROR("identifier expected");
-            idhdl h = (idhdl)(yyvsp[(2) - (2)].lv).data;
-            type_cmd(h);
+	    if ((yyvsp[0].lv.e!=NULL)||(yyvsp[0].lv.rtyp!=IDHDL)) yyvsp[0].lv.Print();
+	    else
+	    {
+              idhdl h = (idhdl)yyvsp[0].lv.data;
+              type_cmd(h);
+            }
           ;}
     break;
 
   case 155:
-#line 1417 "grammar.y"
+#line 1420 "grammar.y"
     {
             //Print("typ is %d, rtyp:%d\n",$1.Typ(),$1.rtyp);
             #ifdef SIQ
-            if ((yyvsp[(1) - (1)].lv).rtyp!=COMMAND)
+            if (yyvsp[0].lv.rtyp!=COMMAND)
             {
             #endif
-              if ((yyvsp[(1) - (1)].lv).Typ()==UNKNOWN)
+              if (yyvsp[0].lv.Typ()==UNKNOWN)
               {
-                if ((yyvsp[(1) - (1)].lv).name!=NULL)
+                if (yyvsp[0].lv.name!=NULL)
                 {
-                  Werror("`%s` is undefined",(yyvsp[(1) - (1)].lv).name);
-                  omFree((ADDRESS)(yyvsp[(1) - (1)].lv).name);
+                  Werror("`%s` is undefined",yyvsp[0].lv.name);
+                  omFree((ADDRESS)yyvsp[0].lv.name);
                 }
                 YYERROR;
@@ -3732,6 +3404,6 @@
             }
             #endif
-            (yyvsp[(1) - (1)].lv).Print(&sLastPrinted);
-            (yyvsp[(1) - (1)].lv).CleanUp(currRing);
+            yyvsp[0].lv.Print(&sLastPrinted);
+            yyvsp[0].lv.CleanUp(currRing);
             if (errorreported) YYERROR;
           ;}
@@ -3739,14 +3411,14 @@
 
   case 156:
-#line 1446 "grammar.y"
-    {
-            int i; TESTSETINT((yyvsp[(3) - (5)].lv),i);
+#line 1449 "grammar.y"
+    {
+            int i; TESTSETINT(yyvsp[-2].lv,i);
             if (i!=0)
             {
-              newBuffer( (yyvsp[(5) - (5)].name), BT_if);
+              newBuffer( yyvsp[0].name, BT_if);
             }
             else
             {
-              omFree((ADDRESS)(yyvsp[(5) - (5)].name));
+              omFree((ADDRESS)yyvsp[0].name);
               currentVoice->ifsw=1;
             }
@@ -3755,10 +3427,10 @@
 
   case 157:
-#line 1459 "grammar.y"
+#line 1462 "grammar.y"
     {
             if (currentVoice->ifsw==1)
             {
               currentVoice->ifsw=0;
-              newBuffer( (yyvsp[(2) - (2)].name), BT_else);
+              newBuffer( yyvsp[0].name, BT_else);
             }
             else
@@ -3768,5 +3440,5 @@
                 Warn("`else` without `if` in level %d",myynest);
               }
-              omFree((ADDRESS)(yyvsp[(2) - (2)].name));
+              omFree((ADDRESS)yyvsp[0].name);
             }
             currentVoice->ifsw=0;
@@ -3775,7 +3447,7 @@
 
   case 158:
-#line 1476 "grammar.y"
-    {
-            int i; TESTSETINT((yyvsp[(3) - (5)].lv),i);
+#line 1479 "grammar.y"
+    {
+            int i; TESTSETINT(yyvsp[-2].lv,i);
             if (i)
             {
@@ -3787,5 +3459,5 @@
 
   case 159:
-#line 1485 "grammar.y"
+#line 1488 "grammar.y"
     {
             if (exitBuffer(BT_break)) YYERROR;
@@ -3795,5 +3467,5 @@
 
   case 160:
-#line 1490 "grammar.y"
+#line 1493 "grammar.y"
     {
             if (contBuffer(BT_break)) YYERROR;
@@ -3803,30 +3475,30 @@
 
   case 161:
-#line 1498 "grammar.y"
+#line 1501 "grammar.y"
     {
             /* -> if(!$2) break; $3; continue;*/
-            char * s = (char *)omAlloc( strlen((yyvsp[(2) - (3)].name)) + strlen((yyvsp[(3) - (3)].name)) + 36);
-            sprintf(s,"whileif (!(%s)) break;\n%scontinue;\n " ,(yyvsp[(2) - (3)].name),(yyvsp[(3) - (3)].name));
+            char * s = (char *)omAlloc( strlen(yyvsp[-1].name) + strlen(yyvsp[0].name) + 36);
+            sprintf(s,"whileif (!(%s)) break;\n%scontinue;\n " ,yyvsp[-1].name,yyvsp[0].name);
             newBuffer(s,BT_break);
-            omFree((ADDRESS)(yyvsp[(2) - (3)].name));
-            omFree((ADDRESS)(yyvsp[(3) - (3)].name));
+            omFree((ADDRESS)yyvsp[-1].name);
+            omFree((ADDRESS)yyvsp[0].name);
           ;}
     break;
 
   case 162:
-#line 1510 "grammar.y"
+#line 1513 "grammar.y"
     {
             /* $2 */
             /* if (!$3) break; $5; $4; continue; */
-            char * s = (char *)omAlloc( strlen((yyvsp[(3) - (5)].name))+strlen((yyvsp[(4) - (5)].name))+strlen((yyvsp[(5) - (5)].name))+36);
+            char * s = (char *)omAlloc( strlen(yyvsp[-2].name)+strlen(yyvsp[-1].name)+strlen(yyvsp[0].name)+36);
             sprintf(s,"forif (!(%s)) break;\n%s%s;\ncontinue;\n "
-                   ,(yyvsp[(3) - (5)].name),(yyvsp[(5) - (5)].name),(yyvsp[(4) - (5)].name));
-            omFree((ADDRESS)(yyvsp[(3) - (5)].name));
-            omFree((ADDRESS)(yyvsp[(4) - (5)].name));
-            omFree((ADDRESS)(yyvsp[(5) - (5)].name));
+                   ,yyvsp[-2].name,yyvsp[0].name,yyvsp[-1].name);
+            omFree((ADDRESS)yyvsp[-2].name);
+            omFree((ADDRESS)yyvsp[-1].name);
+            omFree((ADDRESS)yyvsp[0].name);
             newBuffer(s,BT_break);
-            s = (char *)omAlloc( strlen((yyvsp[(2) - (5)].name)) + 3);
-            sprintf(s,"%s;\n",(yyvsp[(2) - (5)].name));
-            omFree((ADDRESS)(yyvsp[(2) - (5)].name));
+            s = (char *)omAlloc( strlen(yyvsp[-3].name) + 3);
+            sprintf(s,"%s;\n",yyvsp[-3].name);
+            omFree((ADDRESS)yyvsp[-3].name);
             newBuffer(s,BT_if);
           ;}
@@ -3834,80 +3506,80 @@
 
   case 163:
-#line 1529 "grammar.y"
+#line 1532 "grammar.y"
     {
             procinfov pi;
-            idhdl h = enterid((yyvsp[(2) - (3)].name),myynest,PROC_CMD,&IDROOT,TRUE);
-            if (h==NULL) {omFree((ADDRESS)(yyvsp[(2) - (3)].name));omFree((ADDRESS)(yyvsp[(3) - (3)].name)); YYERROR;}
-            iiInitSingularProcinfo(IDPROC(h),"", (yyvsp[(2) - (3)].name), 0, 0);
-            IDPROC(h)->data.s.body = (char *)omAlloc(strlen((yyvsp[(3) - (3)].name))+31);;
-            sprintf(IDPROC(h)->data.s.body,"parameter list #;\n%s;return();\n\n",(yyvsp[(3) - (3)].name));
-            omFree((ADDRESS)(yyvsp[(3) - (3)].name));
-            omFree((ADDRESS)(yyvsp[(2) - (3)].name));
+            idhdl h = enterid(yyvsp[-1].name,myynest,PROC_CMD,&IDROOT,TRUE);
+            if (h==NULL) {omFree((ADDRESS)yyvsp[-1].name);omFree((ADDRESS)yyvsp[0].name); YYERROR;}
+            iiInitSingularProcinfo(IDPROC(h),"", yyvsp[-1].name, 0, 0);
+            IDPROC(h)->data.s.body = (char *)omAlloc(strlen(yyvsp[0].name)+31);;
+            sprintf(IDPROC(h)->data.s.body,"parameter list #;\n%s;return();\n\n",yyvsp[0].name);
+            omFree((ADDRESS)yyvsp[0].name);
+            omFree((ADDRESS)yyvsp[-1].name);
           ;}
     break;
 
   case 164:
-#line 1540 "grammar.y"
-    {
-            idhdl h = enterid((yyvsp[(1) - (3)].name),myynest,PROC_CMD,&IDROOT,TRUE);
+#line 1543 "grammar.y"
+    {
+            idhdl h = enterid(yyvsp[-2].name,myynest,PROC_CMD,&IDROOT,TRUE);
             if (h==NULL)
             {
-              omFree((ADDRESS)(yyvsp[(1) - (3)].name));
-              omFree((ADDRESS)(yyvsp[(2) - (3)].name));
-              omFree((ADDRESS)(yyvsp[(3) - (3)].name));
+              omFree((ADDRESS)yyvsp[-2].name);
+              omFree((ADDRESS)yyvsp[-1].name);
+              omFree((ADDRESS)yyvsp[0].name);
               YYERROR;
             }
-            char *args=iiProcArgs((yyvsp[(2) - (3)].name),FALSE);
-            omFree((ADDRESS)(yyvsp[(2) - (3)].name));
+            char *args=iiProcArgs(yyvsp[-1].name,FALSE);
+            omFree((ADDRESS)yyvsp[-1].name);
             procinfov pi;
-            iiInitSingularProcinfo(IDPROC(h),"", (yyvsp[(1) - (3)].name), 0, 0);
-            IDPROC(h)->data.s.body = (char *)omAlloc(strlen((yyvsp[(3) - (3)].name))+strlen(args)+14);;
-            sprintf(IDPROC(h)->data.s.body,"%s\n%s;return();\n\n",args,(yyvsp[(3) - (3)].name));
+            iiInitSingularProcinfo(IDPROC(h),"", yyvsp[-2].name, 0, 0);
+            IDPROC(h)->data.s.body = (char *)omAlloc(strlen(yyvsp[0].name)+strlen(args)+14);;
+            sprintf(IDPROC(h)->data.s.body,"%s\n%s;return();\n\n",args,yyvsp[0].name);
             omFree((ADDRESS)args);
-            omFree((ADDRESS)(yyvsp[(3) - (3)].name));
-            omFree((ADDRESS)(yyvsp[(1) - (3)].name));
+            omFree((ADDRESS)yyvsp[0].name);
+            omFree((ADDRESS)yyvsp[-2].name);
           ;}
     break;
 
   case 165:
-#line 1560 "grammar.y"
-    {
-            omFree((ADDRESS)(yyvsp[(3) - (4)].name));
-            idhdl h = enterid((yyvsp[(1) - (4)].name),myynest,PROC_CMD,&IDROOT,TRUE);
+#line 1563 "grammar.y"
+    {
+            omFree((ADDRESS)yyvsp[-1].name);
+            idhdl h = enterid(yyvsp[-3].name,myynest,PROC_CMD,&IDROOT,TRUE);
             if (h==NULL)
             {
-              omFree((ADDRESS)(yyvsp[(1) - (4)].name));
-              omFree((ADDRESS)(yyvsp[(2) - (4)].name));
-              omFree((ADDRESS)(yyvsp[(4) - (4)].name));
+              omFree((ADDRESS)yyvsp[-3].name);
+              omFree((ADDRESS)yyvsp[-2].name);
+              omFree((ADDRESS)yyvsp[0].name);
               YYERROR;
             }
-            char *args=iiProcArgs((yyvsp[(2) - (4)].name),FALSE);
-            omFree((ADDRESS)(yyvsp[(2) - (4)].name));
+            char *args=iiProcArgs(yyvsp[-2].name,FALSE);
+            omFree((ADDRESS)yyvsp[-2].name);
             procinfov pi;
-            iiInitSingularProcinfo(IDPROC(h),"", (yyvsp[(1) - (4)].name), 0, 0);
-            omFree((ADDRESS)(yyvsp[(1) - (4)].name));
-            IDPROC(h)->data.s.body = (char *)omAlloc(strlen((yyvsp[(4) - (4)].name))+strlen(args)+14);;
-            sprintf(IDPROC(h)->data.s.body,"%s\n%s;return();\n\n",args,(yyvsp[(4) - (4)].name));
+            iiInitSingularProcinfo(IDPROC(h),"", yyvsp[-3].name, 0, 0);
+            omFree((ADDRESS)yyvsp[-3].name);
+            IDPROC(h)->data.s.body = (char *)omAlloc(strlen(yyvsp[0].name)+strlen(args)+14);;
+            sprintf(IDPROC(h)->data.s.body,"%s\n%s;return();\n\n",args,yyvsp[0].name);
             omFree((ADDRESS)args);
-            omFree((ADDRESS)(yyvsp[(4) - (4)].name));
+            omFree((ADDRESS)yyvsp[0].name);
           ;}
     break;
 
   case 166:
-#line 1584 "grammar.y"
+#line 1587 "grammar.y"
     {
 	    // decl. of type proc p(int i)
-            if ((yyvsp[(1) - (2)].i)==PARAMETER)  { if (iiParameter(&(yyvsp[(2) - (2)].lv))) YYERROR; }
-	    else                { if (iiAlias(&(yyvsp[(2) - (2)].lv))) YYERROR; } 
+            if (yyvsp[-1].i==PARAMETER)  { if (iiParameter(&yyvsp[0].lv)) YYERROR; }
+	    else                { if (iiAlias(&yyvsp[0].lv)) YYERROR; } 
           ;}
     break;
 
   case 167:
-#line 1590 "grammar.y"
+#line 1593 "grammar.y"
     {
 	    // decl. of type proc p(i)
             sleftv tmp_expr;
-	    if ((yyvsp[(1) - (2)].i)==ALIAS_CMD) MYYERROR("alias requires a type");
-            if ((iiDeclCommand(&tmp_expr,&(yyvsp[(2) - (2)].lv),myynest,DEF_CMD,&IDROOT))
+	    if (yyvsp[-1].i==ALIAS_CMD) MYYERROR("alias requires a type");
+            if ((iiDeclCommand(&tmp_expr,&yyvsp[0].lv,myynest,DEF_CMD,&IDROOT))
             || (iiParameter(&tmp_expr)))
               YYERROR;
@@ -3916,9 +3588,9 @@
 
   case 168:
-#line 1602 "grammar.y"
+#line 1605 "grammar.y"
     {
             if(iiRETURNEXPR==NULL) YYERROR;
-            iiRETURNEXPR[myynest].Copy(&(yyvsp[(3) - (4)].lv));
-            (yyvsp[(3) - (4)].lv).CleanUp();
+            iiRETURNEXPR[myynest].Copy(&yyvsp[-1].lv);
+            yyvsp[-1].lv.CleanUp();
             if (exitBuffer(BT_proc)) YYERROR;
           ;}
@@ -3926,7 +3598,7 @@
 
   case 169:
-#line 1609 "grammar.y"
-    {
-            if ((yyvsp[(1) - (3)].i)==RETURN)
+#line 1612 "grammar.y"
+    {
+            if (yyvsp[-2].i==RETURN)
             {
               if(iiRETURNEXPR==NULL) YYERROR;
@@ -3939,12 +3611,14 @@
 
 
-/* Line 1267 of yacc.c.  */
-#line 3940 "grammar.cc"
-      default: break;
     }
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
-
-  YYPOPSTACK (yylen);
-  yylen = 0;
+
+/* Line 1010 of yacc.c.  */
+#line 3614 "grammar.cc"
+
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
   YY_STACK_PRINT (yyss, yyssp);
 
@@ -3975,63 +3649,97 @@
     {
       ++yynerrs;
-#if ! YYERROR_VERBOSE
-      yyerror (YY_("syntax error"));
-#else
-      {
-	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-	  {
-	    YYSIZE_T yyalloc = 2 * yysize;
-	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-	    if (yymsg != yymsgbuf)
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+	{
+	  YYSIZE_T yysize = 0;
+	  int yytype = YYTRANSLATE (yychar);
+	  const char* yyprefix;
+	  char *yymsg;
+	  int yyx;
+
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  int yyxbegin = yyn < 0 ? -yyn : 0;
+
+	  /* Stay within bounds of both yycheck and yytname.  */
+	  int yychecklim = YYLAST - yyn;
+	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+	  int yycount = 0;
+
+	  yyprefix = ", expecting ";
+	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      {
+		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+		yycount += 1;
+		if (yycount == 5)
+		  {
+		    yysize = 0;
+		    break;
+		  }
+	      }
+	  yysize += (sizeof ("syntax error, unexpected ")
+		     + yystrlen (yytname[yytype]));
+	  yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg != 0)
+	    {
+	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
+	      yyp = yystpcpy (yyp, yytname[yytype]);
+
+	      if (yycount < 5)
+		{
+		  yyprefix = ", expecting ";
+		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+		      {
+			yyp = yystpcpy (yyp, yyprefix);
+			yyp = yystpcpy (yyp, yytname[yyx]);
+			yyprefix = " or ";
+		      }
+		}
+	      yyerror (yymsg);
 	      YYSTACK_FREE (yymsg);
-	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-	    if (yymsg)
-	      yymsg_alloc = yyalloc;
-	    else
-	      {
-		yymsg = yymsgbuf;
-		yymsg_alloc = sizeof yymsgbuf;
-	      }
-	  }
-
-	if (0 < yysize && yysize <= yymsg_alloc)
-	  {
-	    (void) yysyntax_error (yymsg, yystate, yychar);
-	    yyerror (yymsg);
-	  }
-	else
-	  {
-	    yyerror (YY_("syntax error"));
-	    if (yysize != 0)
-	      goto yyexhaustedlab;
-	  }
-      }
-#endif
-    }
-
-
-
-  if (yyerrstatus == 3)
-    {
-      /* If just tried and failed to reuse look-ahead token after an
-	 error, discard it.  */
-
-      if (yychar <= YYEOF)
-	{
-	  /* Return failure if at end of input.  */
-	  if (yychar == YYEOF)
-	    YYABORT;
+	    }
+	  else
+	    yyerror ("syntax error; also virtual memory exhausted");
 	}
       else
+#endif /* YYERROR_VERBOSE */
+	yyerror ("syntax error");
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse lookahead token after an
+	 error, discard it.  */
+
+      if (yychar <= YYEOF)
+        {
+          /* If at end of input, pop the error token,
+	     then the rest of the stack, then return failure.  */
+	  if (yychar == YYEOF)
+	     for (;;)
+	       {
+		 YYPOPSTACK;
+		 if (yyssp == yyss)
+		   YYABORT;
+		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+		 yydestruct (yystos[*yyssp], yyvsp);
+	       }
+        }
+      else
 	{
-	  yydestruct ("Error: discarding",
-		      yytoken, &yylval);
+	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
+	  yydestruct (yytoken, &yylval);
 	  yychar = YYEMPTY;
+
 	}
     }
 
-  /* Else will try to reuse look-ahead token after shifting the error
+  /* Else will try to reuse lookahead token after shifting the error
      token.  */
   goto yyerrlab1;
@@ -4043,15 +3751,13 @@
 yyerrorlab:
 
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
+#ifdef __GNUC__
+  /* Pacify GCC when the user code never invokes YYERROR and the label
+     yyerrorlab therefore never appears in user code.  */
+  if (0)
      goto yyerrorlab;
-
-  /* Do not reclaim the symbols of the rule which action triggered
-     this YYERROR.  */
-  YYPOPSTACK (yylen);
-  yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
+#endif
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
   yystate = *yyssp;
   goto yyerrlab1;
@@ -4082,8 +3788,7 @@
 	YYABORT;
 
-
-      yydestruct ("Error: popping",
-		  yystos[yystate], yyvsp);
-      YYPOPSTACK (1);
+      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+      yydestruct (yystos[yystate], yyvsp);
+      YYPOPSTACK;
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
@@ -4093,9 +3798,8 @@
     YYACCEPT;
 
+  YYDPRINTF ((stderr, "Shifting error token, "));
+
   *++yyvsp = yylval;
 
-
-  /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
 
   yystate = yyn;
@@ -4118,9 +3822,9 @@
 
 #ifndef yyoverflow
-/*-------------------------------------------------.
-| yyexhaustedlab -- memory exhaustion comes here.  |
-`-------------------------------------------------*/
-yyexhaustedlab:
-  yyerror (YY_("memory exhausted"));
+/*----------------------------------------------.
+| yyoverflowlab -- parser overflow comes here.  |
+`----------------------------------------------*/
+yyoverflowlab:
+  yyerror ("parser stack overflow");
   yyresult = 2;
   /* Fall through.  */
@@ -4128,27 +3832,9 @@
 
 yyreturn:
-  if (yychar != YYEOF && yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-		 yytoken, &yylval);
-  /* Do not reclaim the symbols of the rule which action triggered
-     this YYABORT or YYACCEPT.  */
-  YYPOPSTACK (yylen);
-  YY_STACK_PRINT (yyss, yyssp);
-  while (yyssp != yyss)
-    {
-      yydestruct ("Cleanup: popping",
-		  yystos[*yyssp], yyvsp);
-      YYPOPSTACK (1);
-    }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
 #endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
+  return yyresult;
 }
 
Index: Singular/grammar.h
===================================================================
--- Singular/grammar.h	(revision d80a1affe5140fcac28532ccf3a3ad97b41ee6ee)
+++ Singular/grammar.h	(revision a5a8a1b9a7c07e38bc003684a775998eab555dc8)
@@ -1,8 +1,6 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
-
-/* Skeleton interface for Bison's Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+/* A Bison parser, made by GNU Bison 1.875d.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
@@ -18,19 +16,11 @@
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
-
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
 
 /* Tokens.  */
@@ -166,5 +156,4 @@
    };
 #endif
-/* Tokens.  */
 #define DOTDOT 258
 #define EQUAL_EQUAL 259
@@ -295,5 +284,5 @@
 
 
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
 typedef int YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -304,2 +293,4 @@
 
 
+
+
Index: Singular/grammar.y
===================================================================
--- Singular/grammar.y	(revision d80a1affe5140fcac28532ccf3a3ad97b41ee6ee)
+++ Singular/grammar.y	(revision a5a8a1b9a7c07e38bc003684a775998eab555dc8)
@@ -1410,7 +1410,10 @@
         TYPE_CMD expr
           {
-            if ($2.rtyp!=IDHDL) MYYERROR("identifier expected");
-            idhdl h = (idhdl)$2.data;
-            type_cmd(h);
+	    if (($2.e!=NULL)||($2.rtyp!=IDHDL)) $2.Print();
+	    else
+	    {
+              idhdl h = (idhdl)$2.data;
+              type_cmd(h);
+            }
           }
         | exprlist
