]> git.saurik.com Git - bison.git/blobdiff - src/bison.simple
* src/bison.simple: Fix debug.
[bison.git] / src / bison.simple
index 700a9edbda4b3a4fda410deb4155c7b37444a783..872ee38b6d3c527cdfefa62626c9151075dfe32b 100644 (file)
 
 #include <stdio.h>
 
+/* If name_prefix is specify substitute the variables and functions
+   names.  */
+#define yyparse %%prefix##parse
+#define yylex %%prefix##lex
+#define yyerror %%prefix##error
+#define yylval %%prefix##lval
+#define yychar %%prefix##char
+#define yydebug %%prefix##debug
+#define yynerrs %%prefix##nerrs
+
 /* Copy the user declarations.  */
-%%definitions
+#line %%input_line "%%filename"
+%%prologue
 
+#line %%line "%%skeleton"
 #ifndef __cplusplus
 # ifndef __STDC__
 #  define const
 # endif /* alloca not defined */
 #endif /* YYSTACK_USE_ALLOCA not defined */
 
+#ifndef YYSTACK_USE_ALLOCA
+# define YYSTACK_USE_ALLOCA 0
+#endif
+
+/* Realloc WHAT from SIZE to YYSTACKSIZE elements of TYPE.
+   If WHAT was malloc'ed (not the original automatic ARRAY), free it. */
 #if YYSTACK_USE_ALLOCA
-# define YYSTACK_ALLOC alloca
+# define YYSTACK_REALLOC(Type, What, Array)                            \
+do {                                                                   \
+  Type *old = What;                                                    \
+  What = (Type *) alloca (yystacksize * sizeof (Type));                        \
+  __yy_memcpy ((char *) What, (char *) old,                            \
+              (size) * (unsigned int) sizeof (Type));                  \
+} while (0)
 #else
-# define YYSTACK_ALLOC malloc
+# define YYSTACK_REALLOC(Type, What, Array)                            \
+do {                                                                   \
+  Type *old = What;                                                    \
+  What = (Type *) malloc (yystacksize * sizeof (Type));                        \
+  __yy_memcpy ((char *) What, (char *) old,                            \
+              (size) * (unsigned int) sizeof (Type));                  \
+  yyfree_stacks = 1;                                                   \
+  if (old != Array)                                                    \
+    free (old);                                                                \
+} while (0)
 #endif
 
 #define YYBISON        1       /* Identify Bison output.  */
 # define YYDEBUG %%debug
 #endif
 
+#line %%input_line "%%filename"
 #ifndef YYSTYPE
-# define YYSTYPE %%stype
+typedef %%stype yystype;
+# define YYSTYPE yystype
 #endif
 
 #ifndef YYLTYPE
@@ -114,11 +149,13 @@ typedef struct yyltype
 # define YYLTYPE %%ltype
 #endif
 
-#ifndef YYERROR_VERBOSE
-# define YYERROR_VERBOSE %%verbose
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
 #endif
 
-/* Tokens. */
+#define YYERROR_VERBOSE %%error_verbose
+
+/* Tokens.  */
 %%tokendef
 
 #define YYFINAL                %%final
@@ -160,8 +197,8 @@ static const short yyrline[] =
 #endif
 
 #if YYDEBUG || YYERROR_VERBOSE
-/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
-static const charconst yytname[] =
+/* YYTNME[TOKEN_NUM] -- String name of the token TOKEN_NUM.  */
+static const char *const yytname[] =
 {
   %%tname
 };
@@ -219,7 +256,7 @@ static const short yycheck[] =
 };
 
 #define yyerrok                (yyerrstatus = 0)
-#define yyclearin      (%%yychar = YYEMPTY)
+#define yyclearin      (yychar = YYEMPTY)
 #define YYEMPTY                -2
 #define YYEOF          0
 
@@ -237,17 +274,17 @@ static const short yycheck[] =
 
 #define YYBACKUP(Token, Value)                                 \
 do                                                             \
-  if (%%yychar == YYEMPTY && yylen == 1)                       \
+  if (yychar == YYEMPTY && yylen == 1)                         \
     {                                                          \
-      %%yychar = (Token);                                      \
-      %%yylval = (Value);                                      \
-      yychar1 = YYTRANSLATE (%%yychar);                                \
+      yychar = (Token);                                                \
+      yylval = (Value);                                        \
+      yychar1 = YYTRANSLATE (yychar);                          \
       YYPOPSTACK;                                              \
       goto yybackup;                                           \
     }                                                          \
   else                                                         \
     {                                                          \
-      %%yyerror ("syntax error: cannot back up");              \
+      yyerror ("syntax error: cannot back up");                \
       YYERROR;                                                 \
     }                                                          \
 while (0)
@@ -268,38 +305,41 @@ while (0)
    Current.last_column = Rhs[N].last_column;
 #endif
 
+/* Definition of YYLSP_NEEDED.  */
+#define YYLSP_NEEDED %%locations_flag
+
 /* YYLEX -- calling `yylex' with the right arguments.  */
 
 #if YYPURE
 # if YYLSP_NEEDED
 #  ifdef YYLEX_PARAM
-#   define YYLEX               %%yylex (&%%yylval, &yylloc, YYLEX_PARAM)
+#   define YYLEX               yylex (&yylval, &yylloc, YYLEX_PARAM)
 #  else
-#   define YYLEX               %%yylex (&%%yylval, &yylloc)
+#   define YYLEX               yylex (&yylval, &yylloc)
 #  endif
 # else /* !YYLSP_NEEDED */
 #  ifdef YYLEX_PARAM
-#   define YYLEX               %%yylex (&%%yylval, YYLEX_PARAM)
+#   define YYLEX               yylex (&yylval, YYLEX_PARAM)
 #  else
-#   define YYLEX               %%yylex (&%%yylval)
+#   define YYLEX               yylex (&yylval)
 #  endif
 # endif /* !YYLSP_NEEDED */
 #else /* !YYPURE */
-# define YYLEX                 %%yylex ()
+# define YYLEX                 yylex ()
 #endif /* !YYPURE */
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
 # define YYDPRINTF(Args)                       \
 do {                                           \
-  if (%%yydebug)                               \
+  if (yydebug)                                 \
     fprintf Args;                              \
 } while (0)
 /* Nonzero means print parse trace. [The following comment makes no
    sense to me.  Could someone clarify it?  --akim] Since this is
    uninitialized, it does not stop multiple parsers from coexisting.
    */
-int %%yydebug;
+int yydebug;
 #else /* !YYDEBUG */
 # define YYDPRINTF(Args)
 #endif /* !YYDEBUG */
@@ -353,7 +393,7 @@ __yy_memcpy (char *to, const char *from, unsigned int count)
 
 \f
 
-#line %%line "%%filename"
+#line %%line "%%skeleton"
 
 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
    into yyparse.  The argument should have type void *.
@@ -377,9 +417,9 @@ __yy_memcpy (char *to, const char *from, unsigned int count)
 /* Prevent warning if -Wstrict-prototypes.  */
 #ifdef __GNUC__
 # ifdef YYPARSE_PARAM
-int %%yyparse (void *);
+int yyparse (void *);
 # else
-int %%yyparse (void);
+int yyparse (void);
 # endif
 #endif
 
@@ -388,13 +428,13 @@ int %%yyparse (void);
 
 #define _YY_DECL_VARIABLES                             \
 /* The lookahead symbol.  */                           \
-int %%yychar;                                          \
+int yychar;                                            \
                                                        \
-/* The semantic value of the lookahead symbol. */      \
-YYSTYPE %%yylval;                                      \
+/* The semantic value of the lookahead symbol.  */     \
+YYSTYPE yylval;                                                \
                                                        \
 /* Number of parse errors so far.  */                  \
-int %%yynerrs;
+int yynerrs;
 
 #if YYLSP_NEEDED
 # define YY_DECL_VARIABLES                     \
@@ -407,17 +447,17 @@ YYLTYPE yylloc;
 _YY_DECL_VARIABLES
 #endif
 
-/* If nonreentrant, generate the variables here. */
+/* If nonreentrant, generate the variables here.  */
 
 #if !YYPURE
 YY_DECL_VARIABLES
 #endif  /* !YYPURE */
 
 int
-%%yyparse (YYPARSE_PARAM_ARG)
+yyparse (YYPARSE_PARAM_ARG)
      YYPARSE_PARAM_DECL
 {
-  /* If reentrant, generate the variables here. */
+  /* If reentrant, generate the variables here.  */
 #if YYPURE
   YY_DECL_VARIABLES
 #endif  /* !YYPURE */
@@ -431,13 +471,13 @@ int
 
   /* Three stacks and their tools:
      `yyss': related to states,
-     `yysv': related to semantic values,
+     `yyvs': related to semantic values,
      `yyls': related to locations.
 
      Refer to the stacks thru separate pointers, to allow yyoverflow
      to reallocate them elsewhere.  */
 
-  /* The state stack. */
+  /* The state stack.  */
   short        yyssa[YYINITDEPTH];
   short *yyss = yyssa;
   register short *yyssp;
@@ -471,15 +511,15 @@ int
 # endif
 
   /* When reducing, the number of symbols on the RHS of the reduced
-     rule. */
+     rule.  */
   int yylen;
 
   YYDPRINTF ((stderr, "Starting parse\n"));
 
   yystate = 0;
   yyerrstatus = 0;
-  %%yynerrs = 0;
-  %%yychar = YYEMPTY;          /* Cause a token to be read.  */
+  yynerrs = 0;
+  yychar = YYEMPTY;            /* Cause a token to be read.  */
 
   /* Initialize stack pointers.
      Waste one element of value and location stack
@@ -496,56 +536,54 @@ int
 /*------------------------------------------------------------.
 | yynewstate -- Push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
-yynewstate:
+ 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.
      */
   yyssp++;
 
-yysetstate:
+ yysetstate:
   *yyssp = yystate;
 
   if (yyssp >= yyss + yystacksize - 1)
     {
-      /* 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;
-      short *yyss1 = yyss;
-#if YYLSP_NEEDED
-      YYLTYPE *yyls1 = yyls;
-#endif
-
       /* Get the current used size of the three stacks, in elements.  */
       int size = yyssp - yyss + 1;
 
 #ifdef yyoverflow
-      /* Each stack pointer address is followed by the size of the
-        data in use in that stack, in bytes.  */
+      {
+       /* 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;
+       short *yyss1 = yyss;
+
+       /* Each stack pointer address is followed by the size of the
+          data in use in that stack, in bytes.  */
 # if YYLSP_NEEDED
-      /* This used to be a conditional around just the two extra args,
-        but that might be undefined if yyoverflow is a macro.  */
-      yyoverflow ("parser stack overflow",
-                 &yyss1, size * sizeof (*yyssp),
-                 &yyvs1, size * sizeof (*yyvsp),
-                 &yyls1, size * sizeof (*yylsp),
-                 &yystacksize);
+       YYLTYPE *yyls1 = yyls;
+       /* This used to be a conditional around just the two extra args,
+          but that might be undefined if yyoverflow is a macro.  */
+       yyoverflow ("parser stack overflow",
+                   &yyss1, size * sizeof (*yyssp),
+                   &yyvs1, size * sizeof (*yyvsp),
+                   &yyls1, size * sizeof (*yylsp),
+                   &yystacksize);
+       yyls = yyls1;
 # else
-      yyoverflow ("parser stack overflow",
-                 &yyss1, size * sizeof (*yyssp),
-                 &yyvs1, size * sizeof (*yyvsp),
-                 &yystacksize);
-# endif
-
-      yyss = yyss1; yyvs = yyvs1;
-# if YYLSP_NEEDED
-      yyls = yyls1;
+       yyoverflow ("parser stack overflow",
+                   &yyss1, size * sizeof (*yyssp),
+                   &yyvs1, size * sizeof (*yyvsp),
+                   &yystacksize);
 # endif
+       yyss = yyss1;
+       yyvs = yyvs1;
+      }
 #else /* no yyoverflow */
       /* Extend the stack our own way.  */
       if (yystacksize >= YYMAXDEPTH)
        {
-         %%yyerror ("parser stack overflow");
+         yyerror ("parser stack overflow");
          if (yyfree_stacks)
            {
              free (yyss);
@@ -559,19 +597,11 @@ yysetstate:
       yystacksize *= 2;
       if (yystacksize > YYMAXDEPTH)
        yystacksize = YYMAXDEPTH;
-# if !YYSTACK_USE_ALLOCA
-      yyfree_stacks = 1;
-# endif
-      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1,
-                  size * (unsigned int) sizeof (*yyssp));
-      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
-                  size * (unsigned int) sizeof (*yyvsp));
+
+      YYSTACK_REALLOC (short, yyss, yyssa);
+      YYSTACK_REALLOC (YYSTYPE, yyvs, yyvsa);
 # if YYLSP_NEEDED
-      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1,
-                  size * (unsigned int) sizeof (*yylsp));
+      YYSTACK_REALLOC (YYLTYPE, yyls, yylsa);
 # endif
 #endif /* no yyoverflow */
 
@@ -611,35 +641,35 @@ yybackup:
   /* yychar is either YYEMPTY or YYEOF
      or a valid token in external form.  */
 
-  if (%%yychar == YYEMPTY)
+  if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
-      %%yychar = YYLEX;
+      yychar = YYLEX;
     }
 
-  /* Convert token to internal form (in yychar1) for indexing tables with */
+  /* Convert token to internal form (in yychar1) for indexing tables with */
 
-  if (%%yychar <= 0)           /* This means end of input. */
+  if (yychar <= 0)             /* This means end of input.  */
     {
       yychar1 = 0;
-      %%yychar = YYEOF;                /* Don't call YYLEX any more */
+      yychar = YYEOF;          /* Don't call YYLEX any more.  */
 
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
   else
     {
-      yychar1 = YYTRANSLATE (%%yychar);
+      yychar1 = YYTRANSLATE (yychar);
 
 #if YYDEBUG
      /* We have to keep this `#if YYDEBUG', since we use variables
        which are defined only if `YYDEBUG' is set.  */
-      if (%%yydebug)
+      if (yydebug)
        {
-         fprintf (stderr, "Next token is %d (%s", %%yychar, yytname[yychar1]);
+         fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
          /* Give the individual parser a way to print the precise
             meaning of a token, for further debugging info.  */
 # ifdef YYPRINT
-         YYPRINT (stderr, %%yychar, %%yylval);
+         YYPRINT (stderr, yychar, yylval);
 # endif
          fprintf (stderr, ")\n");
        }
@@ -673,13 +703,13 @@ yybackup:
     YYACCEPT;
 
   /* Shift the lookahead token.  */
-  YYDPRINTF ((stderr, "Shifting token %d (%s), ", %%yychar, yytname[yychar1]));
+  YYDPRINTF ((stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]));
 
   /* Discard the token being shifted unless it is eof.  */
-  if (%%yychar != YYEOF)
-    %%yychar = YYEMPTY;
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
 
-  *++yyvsp = %%yylval;
+  *++yyvsp = yylval;
 #if YYLSP_NEEDED
   *++yylsp = yylloc;
 #endif
@@ -730,7 +760,7 @@ yyreduce:
 #if YYDEBUG
   /* We have to keep this `#if YYDEBUG', since we use variables which
      are defined only if `YYDEBUG' is set.  */
-  if (%%yydebug)
+  if (yydebug)
     {
       int i;
 
@@ -745,9 +775,9 @@ yyreduce:
 #endif
   switch (yyn)
     {
-      %%action /* The action file replaces this line. */
+      %%action
     }
-#line %%line "%%filename"
+#line %%line "%%skeleton"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -756,7 +786,7 @@ yyreduce:
 #endif
 
 #if YYDEBUG
-  if (%%yydebug)
+  if (yydebug)
     {
       short *ssp1 = yyss - 1;
       fprintf (stderr, "state stack now");
@@ -793,7 +823,7 @@ yyerrlab:
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
-      ++%%yynerrs;
+      ++yynerrs;
 
 #if YYERROR_VERBOSE
       yyn = yypact[yystate];
@@ -805,67 +835,66 @@ yyerrlab:
          int x, count;
 
          count = 0;
-         /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
-         for (x = (yyn < 0 ? -yyn : 0);
+         /* Start X at -YYN if negative to avoid negative indexes in
+            YYCHECK.  */
+         for (x = yyn < 0 ? -yyn : 0;
               x < (int) (sizeof (yytname) / sizeof (char *)); x++)
            if (yycheck[x + yyn] == x)
              size += strlen (yytname[x]) + 15, count++;
-         size += strlen ("parse error, unexpected `") + 1;
-         size += strlen (yytname[YYTRANSLATE (%%yychar)]);
+         size += strlen ("parse error, unexpected ") + 1;
+         size += strlen (yytname[YYTRANSLATE (yychar)]);
          msg = (char *) malloc (size);
          if (msg != 0)
            {
-             strcpy (msg, "parse error, unexpected `");
-             strcat (msg, yytname[YYTRANSLATE (%%yychar)]);
-             strcat (msg, "'");
+             strcpy (msg, "parse error, unexpected ");
+             strcat (msg, yytname[YYTRANSLATE (yychar)]);
 
              if (count < 5)
                {
                  count = 0;
-                 for (x = (yyn < 0 ? -yyn : 0);
+                 for (x = yyn < 0 ? -yyn : 0;
                         x < (int) (sizeof (yytname) / sizeof (char *)); x++)
                    if (yycheck[x + yyn] == x)
                      {
-                       strcat (msg, count == 0 ? ", expecting `" : " or `");
+                       strcat (msg, count == 0 ? ", expecting " : " or ");
                        strcat (msg, yytname[x]);
-                       strcat (msg, "'");
                        count++;
                      }
                }
-             %%yyerror (msg);
+             yyerror (msg);
              free (msg);
            }
           else
-           %%yyerror ("parse error; also virtual memory exceeded");
+           yyerror ("parse error; also virtual memory exhausted");
         }
       else
 #endif /* YYERROR_VERBOSE */
-        %%yyerror ("parse error");
+        yyerror ("parse error");
     }
   goto yyerrlab1;
 
 
-/*--------------------------------------------------.
-| yyerrlab1 -- error raised explicitly by an action |
-`--------------------------------------------------*/
+/*----------------------------------------------------.
+| yyerrlab1 -- error raised explicitly by an action |
+`----------------------------------------------------*/
 yyerrlab1:
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
         error, discard it.  */
 
-      /* return failure if at end of input */
-      if (%%yychar == YYEOF)
+      /* Return failure if at end of input.  */
+      if (yychar == YYEOF)
        YYABORT;
       YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
-                 %%yychar, yytname[yychar1]));
-      %%yychar = YYEMPTY;
+                 yychar, yytname[yychar1]));
+      yychar = YYEMPTY;
     }
 
   /* Else will try to reuse lookahead token after shifting the error
      token.  */
 
-  yyerrstatus = 3;             /* Each real token shifted decrements this */
+  yyerrstatus = 3;             /* Each real token shifted decrements this */
 
   goto yyerrhandle;
 
@@ -888,7 +917,7 @@ yyerrdefault:
 
 /*---------------------------------------------------------------.
 | yyerrpop -- pop the current state because it cannot handle the |
-| error token                                                    |
+| error token.                                                   |
 `---------------------------------------------------------------*/
 yyerrpop:
   if (yyssp == yyss)
@@ -900,7 +929,7 @@ yyerrpop:
 #endif
 
 #if YYDEBUG
-  if (%%yydebug)
+  if (yydebug)
     {
       short *ssp1 = yyss - 1;
       fprintf (stderr, "Error: state stack now");
@@ -938,7 +967,7 @@ yyerrhandle:
 
   YYDPRINTF ((stderr, "Shifting error token, "));
 
-  *++yyvsp = %%yylval;
+  *++yyvsp = yylval;
 #if YYLSP_NEEDED
   *++yylsp = yylloc;
 #endif
@@ -976,3 +1005,6 @@ yyabortlab:
     }
   return 1;
 }
+
+#line %%input_line "%%filename"
+%%epilogue