]> git.saurik.com Git - bison.git/blobdiff - src/bison.simple
* lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
[bison.git] / src / bison.simple
index 0e121d229075126890183c397a9ea716df2ab125..0482a0ea24738255b3848769989fa94c756791cf 100644 (file)
@@ -1,7 +1,8 @@
+%%{section} %%{body} %%".c" %%{yacc}
 /* -*- C -*- */
 
 /* -*- C -*- */
 
-/* A Bison parser, made from %%filename
-   by GNU bison %%version.  */
+/* A Bison parser, made from %%{filename}
+   by GNU bison %%{version}.  */
 
 /* Skeleton output parser for bison,
    Copyright 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
 
 /* Skeleton output parser for bison,
    Copyright 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
 #define YYBISON        1
 
 /* Pure parsers.  */
 #define YYBISON        1
 
 /* Pure parsers.  */
-#define YYPURE %%pure
+#define YYPURE %%{pure}
 
 /* Using locations.  */
 
 /* Using locations.  */
-#define YYLSP_NEEDED %%locations-flag
+#define YYLSP_NEEDED %%{locations-flag}
+
+/* If NAME_PREFIX is specified 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
+#if YYLSP_NEEDED
+# define yylloc %%{prefix}lloc
+#endif
+
+
+/* Copy the user declarations.  */
+%%{prologue}
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
-# define YYDEBUG %%debug
+# define YYDEBUG %%{debug}
 #endif
 
 /* Enabling verbose error messages.  */
 #endif
 
 /* Enabling verbose error messages.  */
 # undef YYERROR_VERBOSE
 # define YYERROR_VERBOSE 1
 #else
 # undef YYERROR_VERBOSE
 # define YYERROR_VERBOSE 1
 #else
-# define YYERROR_VERBOSE %%error-verbose
+# define YYERROR_VERBOSE %%{error-verbose}
 #endif
 
 #endif
 
-/* 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
-
 #ifndef YYSTYPE
 #ifndef YYSTYPE
-typedef %%stype yystype;
+typedef %%{stype} yystype;
 # define YYSTYPE yystype
 #endif
 
 # define YYSTYPE yystype
 #endif
 
@@ -76,15 +84,11 @@ typedef struct yyltype
   int last_line;
   int last_column;
 } yyltype;
   int last_line;
   int last_column;
 } yyltype;
-# define YYLTYPE %%ltype
+# define YYLTYPE %%{ltype}
 #endif
 
 #endif
 
-/* Copy the user declarations.  */
-%%prologue
-
-#line %%line "%%skeleton"
-
-#include <stdio.h>
+/* Line %%{skeleton-line} of %%{skeleton}.  */
+#line %%{line} "%%{parser-file-name}"
 
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
 
 /* All symbols defined below should begin with yy or YY, to avoid
    infringing on user name space.  This should be done even for local
@@ -93,32 +97,28 @@ typedef struct yyltype
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
    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
 
 /* 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
 # 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
 #   else
-#    if defined (__GNUC__) || defined (_AIX) || defined (__hpux)
+#    ifdef __GNUC__
 #     define YYSTACK_ALLOC __builtin_alloca
 #    endif
 #     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
 #   endif
 #  endif
 # endif
@@ -130,16 +130,14 @@ typedef struct yyltype
 #  ifdef __cplusplus
 #   include <cstdlib> /* INFRINGES ON USER NAME SPACE */
 #   define YYSIZE_T std::size_t
 #  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
 #  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
 #  endif
+#  define YYSTACK_ALLOC YYSTD (malloc)
+#  define YYSTACK_FREE YYSTD (free)
 # endif
 
 /* A type that is properly aligned for any stack member.  */
 # endif
 
 /* A type that is properly aligned for any stack member.  */
@@ -187,70 +185,78 @@ union yyalloc
 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
 
 /* Tokens.  */
 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
 
 /* Tokens.  */
-%%tokendef
-
-#define YYFINAL                %%final
-#define YYFLAG         %%flag
-#define YYNTBASE       %%ntbase
-#define YYLAST         %%last
-
-#define YYNTOKENS      %%ntokens
-#define YYNNTS         %%nnts
-#define YYNRULES       %%nrules
-#define YYNSTATES      %%nstates
-#define YYMAXUTOK      %%maxtok
-
-/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX.  */
-#define YYTRANSLATE(x) ((unsigned)(x) <= %%maxtok ? yytranslate[x] : %%nsym)
-
-/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX.  */
+%%{tokendef}
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  %%{final}
+#define YYFLAG  %%{flag}
+#define YYLAST   %%{last}
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  %%{ntokens}
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  %%{nnts}
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  %%{nrules}
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  %%{nstates}
+#define YYMAXUTOK  %%{maxtok}
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYTRANSLATE(x) ((unsigned)(x) <= %%{maxtok} ? yytranslate[x] : %%{nsym})
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
 static const char yytranslate[] =
 {
 static const char yytranslate[] =
 {
-  %%translate
+  %%{translate}
 };
 
 #if YYDEBUG
 };
 
 #if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
 static const short yyprhs[] =
 {
 static const short yyprhs[] =
 {
-  %%prhs
+  %%{prhs}
 };
 
 };
 
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
 static const short yyrhs[] =
 {
 static const short yyrhs[] =
 {
-  %%rhs
+  %%{rhs}
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const short yyrline[] =
 {
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const short yyrline[] =
 {
-  %%rline
+  %%{rline}
 };
 #endif
 
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE
-/* YYTNME[TOKEN_NUM] -- String name of the token TOKEN_NUM.  */
+#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[] =
 {
 static const char *const yytname[] =
 {
-  %%tname
+  %%{tname}
 };
 #endif
 
 /* YYTOKNUM[YYN] -- Index in YYTNAME corresponding to YYLEX.  */
 static const short yytoknum[] =
 {
 };
 #endif
 
 /* YYTOKNUM[YYN] -- Index in YYTNAME corresponding to YYLEX.  */
 static const short yytoknum[] =
 {
-  %%toknum
+  %%{toknum}
 };
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const short yyr1[] =
 {
 };
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const short yyr1[] =
 {
-  %%r1
+  %%{r1}
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 static const short yyr2[] =
 {
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 static const short yyr2[] =
 {
-  %%r2
+  %%{r2}
 };
 
 /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
 };
 
 /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
@@ -258,32 +264,39 @@ static const short yyr2[] =
    error.  */
 static const short yydefact[] =
 {
    error.  */
 static const short yydefact[] =
 {
-  %%defact
+  %%{defact}
 };
 
 };
 
+/* YYPGOTO[NTERM-NUM]. */
 static const short yydefgoto[] =
 {
 static const short yydefgoto[] =
 {
-  %%defgoto
+  %%{defgoto}
 };
 
 };
 
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
 static const short yypact[] =
 {
 static const short yypact[] =
 {
-  %%pact
+  %%{pact}
 };
 
 };
 
+/* YYPGOTO[NTERM-NUM].  */
 static const short yypgoto[] =
 {
 static const short yypgoto[] =
 {
-  %%pgoto
+  %%{pgoto}
 };
 
 };
 
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.  */
 static const short yytable[] =
 {
 static const short yytable[] =
 {
-  %%table
+  %%{table}
 };
 
 static const short yycheck[] =
 {
 };
 
 static const short yycheck[] =
 {
-  %%check
+  %%{check}
 };
 
 
 };
 
 
@@ -330,14 +343,14 @@ do                                                                \
   if (yychar == YYEMPTY && yylen == 1)                         \
     {                                                          \
       yychar = (Token);                                                \
   if (yychar == YYEMPTY && yylen == 1)                         \
     {                                                          \
       yychar = (Token);                                                \
-      yylval = (Value);                                        \
+      yylval = (Value);                                                \
       yychar1 = YYTRANSLATE (yychar);                          \
       YYPOPSTACK;                                              \
       goto yybackup;                                           \
     }                                                          \
   else                                                         \
     {                                                          \
       yychar1 = YYTRANSLATE (yychar);                          \
       YYPOPSTACK;                                              \
       goto yybackup;                                           \
     }                                                          \
   else                                                         \
     {                                                          \
-      yyerror ("syntax error: cannot back up");                \
+      yyerror ("syntax error: cannot back up");                        \
       YYERROR;                                                 \
     }                                                          \
 while (0)
       YYERROR;                                                 \
     }                                                          \
 while (0)
@@ -384,13 +397,11 @@ while (0)
 # ifndef YYFPRINTF
 #  ifdef __cplusplus
 #   include <cstdio.h> /* INFRINGES ON USER NAME SPACE */
 # 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 */
 #  else
 #   include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-#   define YYFPRINTF fprintf
-#   define YYSTDERR stderr
 #  endif
 #  endif
+#  define YYFPRINTF YYSTD (fprintf)
+#  define YYSTDERR YYSTD (stderr)
 # endif
 
 # define YYDPRINTF(Args)                       \
 # endif
 
 # define YYDPRINTF(Args)                       \
@@ -409,7 +420,7 @@ int yydebug;
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
 #ifndef        YYINITDEPTH
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
 #ifndef        YYINITDEPTH
-# define YYINITDEPTH %%initdepth
+# define YYINITDEPTH %%{initdepth}
 #endif
 
 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
 #endif
 
 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
@@ -424,7 +435,7 @@ int yydebug;
 #endif
 
 #ifndef YYMAXDEPTH
 #endif
 
 #ifndef YYMAXDEPTH
-# define YYMAXDEPTH %%maxdepth
+# define YYMAXDEPTH %%{maxdepth}
 #endif
 
 \f
 #endif
 
 \f
@@ -511,8 +522,6 @@ yystpcpy (yydest, yysrc)
 
 \f
 
 
 \f
 
-#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 *.
    It should actually point to an object.
 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
    into yyparse.  The argument should have type void *.
    It should actually point to an object.
@@ -885,19 +894,21 @@ yyreduce:
       int yyi;
 
       YYFPRINTF (YYSTDERR, "Reducing via rule %d (line %d), ",
       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.  */
 
       /* 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]]);
     }
 #endif
   switch (yyn)
     {
        YYFPRINTF (YYSTDERR, "%s ", yytname[yyrhs[yyi]]);
       YYFPRINTF (YYSTDERR, " -> %s\n", yytname[yyr1[yyn]]);
     }
 #endif
   switch (yyn)
     {
-%%actions
+      %%{actions}
     }
     }
-#line %%line "%%skeleton"
+
+/* Line %%{skeleton-line} of %%{skeleton}.  */
+#line %%{line} "%%{parser-file-name}"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -927,11 +938,11 @@ yyreduce:
 
   yyn = yyr1[yyn];
 
 
   yyn = yyr1[yyn];
 
-  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
   if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
     yystate = yytable[yystate];
   else
   if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
     yystate = yytable[yystate];
   else
-    yystate = yydefgoto[yyn - YYNTBASE];
+    yystate = yydefgoto[yyn - YYNTOKENS];
 
   goto yynewstate;
 
 
   goto yynewstate;
 
@@ -1128,4 +1139,4 @@ yyreturn:
   return yyresult;
 }
 
   return yyresult;
 }
 
-%%epilogue
+%%{epilogue}