]> git.saurik.com Git - bison.git/blobdiff - src/bison.simple
* src/bison.simple: Do not provide a default for YYSTYPE and
[bison.git] / src / bison.simple
index 593eadf34b44b1f8bc29470bf19ceb80200f218a..033d72688637b231a673228b13b873b2cb003b30 100644 (file)
@@ -63,6 +63,9 @@
 #define yydebug %%prefix##debug
 #define yynerrs %%prefix##nerrs
 
+/* Copy the user declarations.  */
+%%prologue
+
 #ifndef YYSTYPE
 typedef %%stype yystype;
 # define YYSTYPE yystype
@@ -79,14 +82,9 @@ typedef struct yyltype
 # define YYLTYPE %%ltype
 #endif
 
-/* Copy the user declarations.  */
-%%prologue
-
 /* Line %%skeleton-line of %%skeleton.  */
 #line %%line "%%parser-file-name"
 
-#include <stdio.h>
-
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
    variables, as they might otherwise be expanded by user macros.
@@ -94,32 +92,28 @@ typedef struct yyltype
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
-#if ! defined (yyoverflow) || YYERROR_VERBOSE
+#ifdef __cplusplus
+# define YYSTD(x) std::x
+#else
+# define YYSTD(x) x
+#endif
+
+#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
 
 /* The parser invokes alloca or malloc; define the necessary symbols.  */
 
 # if YYSTACK_USE_ALLOCA
 #  define YYSTACK_ALLOC alloca
-#  define YYSIZE_T size_t
+#  define YYSIZE_T YYSTD (size_t)
 # else
 #  ifndef YYSTACK_USE_ALLOCA
 #   if defined (alloca) || defined (_ALLOCA_H)
 #    define YYSTACK_ALLOC alloca
-#    define YYSIZE_T size_t
+#    define YYSIZE_T YYSTD (size_t)
 #   else
-#    if defined (__GNUC__) || defined (_AIX) || defined (__hpux)
+#    ifdef __GNUC__
 #     define YYSTACK_ALLOC __builtin_alloca
 #    endif
-#    ifndef __GNUC__
-#     ifdef _AIX
- #     pragma alloca
-#     endif
-#     if defined (__sgi) || defined (__sparc__) || defined (__sparc) || defined (__sun)
-#      include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-#      define YYSTACK_ALLOC alloca
-#      define YYSIZE_T size_t
-#     endif
-#    endif
 #   endif
 #  endif
 # endif
@@ -131,16 +125,14 @@ typedef struct yyltype
 #  ifdef __cplusplus
 #   include <cstdlib> /* INFRINGES ON USER NAME SPACE */
 #   define YYSIZE_T std::size_t
-#   define YYSTACK_ALLOC std::malloc
-#   define YYSTACK_FREE std::free
 #  else
 #   ifdef __STDC__
 #    include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
 #    define YYSIZE_T size_t
 #   endif
-#   define YYSTACK_ALLOC malloc
-#   define YYSTACK_FREE free
 #  endif
+#  define YYSTACK_ALLOC YYSTD (malloc)
+#  define YYSTACK_FREE YYSTD (free)
 # endif
 
 /* A type that is properly aligned for any stack member.  */
@@ -222,7 +214,7 @@ static const short yyprhs[] =
   %%prhs
 };
 
-/* YYRHS -- A `0'-separated list of the rules' RHS. */
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
 static const short yyrhs[] =
 {
   %%rhs
@@ -400,13 +392,11 @@ while (0)
 # ifndef YYFPRINTF
 #  ifdef __cplusplus
 #   include <cstdio.h> /* INFRINGES ON USER NAME SPACE */
-#   define YYFPRINTF std::fprintf
-#   define YYSTDERR std::stderr
 #  else
 #   include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-#   define YYFPRINTF fprintf
-#   define YYSTDERR stderr
 #  endif
+#  define YYFPRINTF YYSTD (fprintf)
+#  define YYSTDERR YYSTD (stderr)
 # endif
 
 # define YYDPRINTF(Args)                       \
@@ -899,10 +889,10 @@ yyreduce:
       int yyi;
 
       YYFPRINTF (YYSTDERR, "Reducing via rule %d (line %d), ",
-                yyn, yyrline[yyn]);
+                yyn - 1, yyrline[yyn]);
 
       /* Print the symbols being reduced, and their result.  */
-      for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
+      for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++)
        YYFPRINTF (YYSTDERR, "%s ", yytname[yyrhs[yyi]]);
       YYFPRINTF (YYSTDERR, " -> %s\n", yytname[yyr1[yyn]]);
     }