mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-23 19:23:02 +00:00
Use malloc, if using alloca is troublesome.
(YYSTACK_USE_ALLOCA): New flag macro. Define it for some systems and compilers. (YYSTACK_ALLOC): New macro. (yyparse): Use YYSTACK_ALLOC to allocate stack. If it was malloc'd, free it.
This commit is contained in:
87
bison.simple
87
bison.simple
@@ -28,30 +28,53 @@
|
|||||||
It was written by Richard Stallman by simplifying the hairy parser
|
It was written by Richard Stallman by simplifying the hairy parser
|
||||||
used when %semantic_parser is specified. */
|
used when %semantic_parser is specified. */
|
||||||
|
|
||||||
#ifndef alloca
|
#ifndef YYSTACK_USE_ALLOCA
|
||||||
|
#ifdef alloca
|
||||||
|
#define YYSTACK_USE_ALLOCA
|
||||||
|
#else /* alloca not defined */
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
|
#define YYSTACK_USE_ALLOCA
|
||||||
#define alloca __builtin_alloca
|
#define alloca __builtin_alloca
|
||||||
#else /* not GNU C. */
|
#else /* not GNU C. */
|
||||||
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
|
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
|
||||||
|
#define YYSTACK_USE_ALLOCA
|
||||||
#include <alloca.h>
|
#include <alloca.h>
|
||||||
#else /* not sparc */
|
#else /* not sparc */
|
||||||
|
/* We think this test detects Watcom and Microsoft C. */
|
||||||
/* This used to test MSDOS, but that is a bad idea
|
/* This used to test MSDOS, but that is a bad idea
|
||||||
since that is in the user namespace. */
|
since that symbol is in the user namespace. */
|
||||||
#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
|
#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
|
||||||
|
#if 0 /* No need for malloc.h, which pollutes the namespace;
|
||||||
|
instead, just don't use alloca. */
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
#endif
|
||||||
#else /* not MSDOS, or __TURBOC__ */
|
#else /* not MSDOS, or __TURBOC__ */
|
||||||
#if defined(_AIX)
|
#if defined(_AIX)
|
||||||
#include <malloc.h>
|
/* I don't know what this was needed for, but it pollutes the namespace.
|
||||||
|
So I turned it off. rms, 2 May 1997. */
|
||||||
|
/* #include <malloc.h> */
|
||||||
#pragma alloca
|
#pragma alloca
|
||||||
|
#define YYSTACK_USE_ALLOCA
|
||||||
#else /* not MSDOS, or __TURBOC__, or _AIX */
|
#else /* not MSDOS, or __TURBOC__, or _AIX */
|
||||||
#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9 and 10. */
|
#if 0
|
||||||
|
#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
|
||||||
|
and on HPUX 10. Eventually we can turn this on. */
|
||||||
|
#define YYSTACK_USE_ALLOCA
|
||||||
#define alloca __builtin_alloca
|
#define alloca __builtin_alloca
|
||||||
#endif /* __hpux */
|
#endif /* __hpux */
|
||||||
|
#endif
|
||||||
#endif /* not _AIX */
|
#endif /* not _AIX */
|
||||||
#endif /* not MSDOS, or __TURBOC__ */
|
#endif /* not MSDOS, or __TURBOC__ */
|
||||||
#endif /* not sparc. */
|
#endif /* not sparc */
|
||||||
#endif /* not GNU C. */
|
#endif /* not GNU C */
|
||||||
#endif /* alloca not defined. */
|
#endif /* alloca not defined */
|
||||||
|
#endif /* YYSTACK_USE_ALLOCA not defined */
|
||||||
|
|
||||||
|
#ifdef YYSTACK_USE_ALLOCA
|
||||||
|
#define YYSTACK_ALLOC alloca
|
||||||
|
#else
|
||||||
|
#define YYSTACK_ALLOC malloc
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Note: there must be only one dollar sign in this file.
|
/* Note: there must be only one dollar sign in this file.
|
||||||
It is replaced by the list of actions, each action
|
It is replaced by the list of actions, each action
|
||||||
@@ -61,8 +84,8 @@
|
|||||||
#define yyclearin (yychar = YYEMPTY)
|
#define yyclearin (yychar = YYEMPTY)
|
||||||
#define YYEMPTY -2
|
#define YYEMPTY -2
|
||||||
#define YYEOF 0
|
#define YYEOF 0
|
||||||
#define YYACCEPT return(0)
|
#define YYACCEPT goto yyacceptlab
|
||||||
#define YYABORT return(1)
|
#define YYABORT goto yyabortlab
|
||||||
#define YYERROR goto yyerrlab1
|
#define YYERROR goto yyerrlab1
|
||||||
/* Like YYERROR except do call yyerror.
|
/* Like YYERROR except do call yyerror.
|
||||||
This remains here temporarily to ease the
|
This remains here temporarily to ease the
|
||||||
@@ -188,7 +211,7 @@ __yy_memcpy (char *to, char *from, unsigned int count)
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#line 196 "bison.simple"
|
#line 215 "bison.simple"
|
||||||
|
|
||||||
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
|
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
|
||||||
into yyparse. The argument should have type void *.
|
into yyparse. The argument should have type void *.
|
||||||
@@ -246,6 +269,7 @@ yyparse(YYPARSE_PARAM_ARG)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
int yystacksize = YYINITDEPTH;
|
int yystacksize = YYINITDEPTH;
|
||||||
|
int yyfree_stacks = 0;
|
||||||
|
|
||||||
#ifdef YYPURE
|
#ifdef YYPURE
|
||||||
int yychar;
|
int yychar;
|
||||||
@@ -330,19 +354,30 @@ yynewstate:
|
|||||||
if (yystacksize >= YYMAXDEPTH)
|
if (yystacksize >= YYMAXDEPTH)
|
||||||
{
|
{
|
||||||
yyerror("parser stack overflow");
|
yyerror("parser stack overflow");
|
||||||
|
if (yyfree_stacks)
|
||||||
|
{
|
||||||
|
free (yyss);
|
||||||
|
free (yyvs);
|
||||||
|
#ifdef YYLSP_NEEDED
|
||||||
|
free (yyls);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
yystacksize *= 2;
|
yystacksize *= 2;
|
||||||
if (yystacksize > YYMAXDEPTH)
|
if (yystacksize > YYMAXDEPTH)
|
||||||
yystacksize = YYMAXDEPTH;
|
yystacksize = YYMAXDEPTH;
|
||||||
yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
|
#ifndef YYSTACK_USE_ALLOCA
|
||||||
|
yyfree_stacks = 1;
|
||||||
|
#endif
|
||||||
|
yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
|
||||||
__yy_memcpy ((char *)yyss, (char *)yyss1,
|
__yy_memcpy ((char *)yyss, (char *)yyss1,
|
||||||
size * (unsigned int) sizeof (*yyssp));
|
size * (unsigned int) sizeof (*yyssp));
|
||||||
yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
|
yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
|
||||||
__yy_memcpy ((char *)yyvs, (char *)yyvs1,
|
__yy_memcpy ((char *)yyvs, (char *)yyvs1,
|
||||||
size * (unsigned int) sizeof (*yyvsp));
|
size * (unsigned int) sizeof (*yyvsp));
|
||||||
#ifdef YYLSP_NEEDED
|
#ifdef YYLSP_NEEDED
|
||||||
yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
|
yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
|
||||||
__yy_memcpy ((char *)yyls, (char *)yyls1,
|
__yy_memcpy ((char *)yyls, (char *)yyls1,
|
||||||
size * (unsigned int) sizeof (*yylsp));
|
size * (unsigned int) sizeof (*yylsp));
|
||||||
#endif
|
#endif
|
||||||
@@ -502,7 +537,7 @@ yyreduce:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
$ /* the action file gets copied in in place of this dollarsign */
|
$ /* the action file gets copied in in place of this dollarsign */
|
||||||
#line 498 "bison.simple"
|
#line 541 "bison.simple"
|
||||||
|
|
||||||
yyvsp -= yylen;
|
yyvsp -= yylen;
|
||||||
yyssp -= yylen;
|
yyssp -= yylen;
|
||||||
@@ -697,4 +732,28 @@ yyerrhandle:
|
|||||||
|
|
||||||
yystate = yyn;
|
yystate = yyn;
|
||||||
goto yynewstate;
|
goto yynewstate;
|
||||||
|
|
||||||
|
yyacceptlab:
|
||||||
|
/* YYACCEPT comes here. */
|
||||||
|
if (yyfree_stacks)
|
||||||
|
{
|
||||||
|
free (yyss);
|
||||||
|
free (yyvs);
|
||||||
|
#ifdef YYLSP_NEEDED
|
||||||
|
free (yyls);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
yyabortlab:
|
||||||
|
/* YYABORT comes here. */
|
||||||
|
if (yyfree_stacks)
|
||||||
|
{
|
||||||
|
free (yyss);
|
||||||
|
free (yyvs);
|
||||||
|
#ifdef YYLSP_NEEDED
|
||||||
|
free (yyls);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
87
src/bison.s1
87
src/bison.s1
@@ -28,30 +28,53 @@
|
|||||||
It was written by Richard Stallman by simplifying the hairy parser
|
It was written by Richard Stallman by simplifying the hairy parser
|
||||||
used when %semantic_parser is specified. */
|
used when %semantic_parser is specified. */
|
||||||
|
|
||||||
#ifndef alloca
|
#ifndef YYSTACK_USE_ALLOCA
|
||||||
|
#ifdef alloca
|
||||||
|
#define YYSTACK_USE_ALLOCA
|
||||||
|
#else /* alloca not defined */
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
|
#define YYSTACK_USE_ALLOCA
|
||||||
#define alloca __builtin_alloca
|
#define alloca __builtin_alloca
|
||||||
#else /* not GNU C. */
|
#else /* not GNU C. */
|
||||||
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
|
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
|
||||||
|
#define YYSTACK_USE_ALLOCA
|
||||||
#include <alloca.h>
|
#include <alloca.h>
|
||||||
#else /* not sparc */
|
#else /* not sparc */
|
||||||
|
/* We think this test detects Watcom and Microsoft C. */
|
||||||
/* This used to test MSDOS, but that is a bad idea
|
/* This used to test MSDOS, but that is a bad idea
|
||||||
since that is in the user namespace. */
|
since that symbol is in the user namespace. */
|
||||||
#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
|
#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
|
||||||
|
#if 0 /* No need for malloc.h, which pollutes the namespace;
|
||||||
|
instead, just don't use alloca. */
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
#endif
|
||||||
#else /* not MSDOS, or __TURBOC__ */
|
#else /* not MSDOS, or __TURBOC__ */
|
||||||
#if defined(_AIX)
|
#if defined(_AIX)
|
||||||
#include <malloc.h>
|
/* I don't know what this was needed for, but it pollutes the namespace.
|
||||||
|
So I turned it off. rms, 2 May 1997. */
|
||||||
|
/* #include <malloc.h> */
|
||||||
#pragma alloca
|
#pragma alloca
|
||||||
|
#define YYSTACK_USE_ALLOCA
|
||||||
#else /* not MSDOS, or __TURBOC__, or _AIX */
|
#else /* not MSDOS, or __TURBOC__, or _AIX */
|
||||||
#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9 and 10. */
|
#if 0
|
||||||
|
#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
|
||||||
|
and on HPUX 10. Eventually we can turn this on. */
|
||||||
|
#define YYSTACK_USE_ALLOCA
|
||||||
#define alloca __builtin_alloca
|
#define alloca __builtin_alloca
|
||||||
#endif /* __hpux */
|
#endif /* __hpux */
|
||||||
|
#endif
|
||||||
#endif /* not _AIX */
|
#endif /* not _AIX */
|
||||||
#endif /* not MSDOS, or __TURBOC__ */
|
#endif /* not MSDOS, or __TURBOC__ */
|
||||||
#endif /* not sparc. */
|
#endif /* not sparc */
|
||||||
#endif /* not GNU C. */
|
#endif /* not GNU C */
|
||||||
#endif /* alloca not defined. */
|
#endif /* alloca not defined */
|
||||||
|
#endif /* YYSTACK_USE_ALLOCA not defined */
|
||||||
|
|
||||||
|
#ifdef YYSTACK_USE_ALLOCA
|
||||||
|
#define YYSTACK_ALLOC alloca
|
||||||
|
#else
|
||||||
|
#define YYSTACK_ALLOC malloc
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Note: there must be only one dollar sign in this file.
|
/* Note: there must be only one dollar sign in this file.
|
||||||
It is replaced by the list of actions, each action
|
It is replaced by the list of actions, each action
|
||||||
@@ -61,8 +84,8 @@
|
|||||||
#define yyclearin (yychar = YYEMPTY)
|
#define yyclearin (yychar = YYEMPTY)
|
||||||
#define YYEMPTY -2
|
#define YYEMPTY -2
|
||||||
#define YYEOF 0
|
#define YYEOF 0
|
||||||
#define YYACCEPT return(0)
|
#define YYACCEPT goto yyacceptlab
|
||||||
#define YYABORT return(1)
|
#define YYABORT goto yyabortlab
|
||||||
#define YYERROR goto yyerrlab1
|
#define YYERROR goto yyerrlab1
|
||||||
/* Like YYERROR except do call yyerror.
|
/* Like YYERROR except do call yyerror.
|
||||||
This remains here temporarily to ease the
|
This remains here temporarily to ease the
|
||||||
@@ -188,7 +211,7 @@ __yy_memcpy (char *to, char *from, unsigned int count)
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#line 196 "bison.simple"
|
#line 215 "bison.simple"
|
||||||
|
|
||||||
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
|
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
|
||||||
into yyparse. The argument should have type void *.
|
into yyparse. The argument should have type void *.
|
||||||
@@ -246,6 +269,7 @@ yyparse(YYPARSE_PARAM_ARG)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
int yystacksize = YYINITDEPTH;
|
int yystacksize = YYINITDEPTH;
|
||||||
|
int yyfree_stacks = 0;
|
||||||
|
|
||||||
#ifdef YYPURE
|
#ifdef YYPURE
|
||||||
int yychar;
|
int yychar;
|
||||||
@@ -330,19 +354,30 @@ yynewstate:
|
|||||||
if (yystacksize >= YYMAXDEPTH)
|
if (yystacksize >= YYMAXDEPTH)
|
||||||
{
|
{
|
||||||
yyerror("parser stack overflow");
|
yyerror("parser stack overflow");
|
||||||
|
if (yyfree_stacks)
|
||||||
|
{
|
||||||
|
free (yyss);
|
||||||
|
free (yyvs);
|
||||||
|
#ifdef YYLSP_NEEDED
|
||||||
|
free (yyls);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
yystacksize *= 2;
|
yystacksize *= 2;
|
||||||
if (yystacksize > YYMAXDEPTH)
|
if (yystacksize > YYMAXDEPTH)
|
||||||
yystacksize = YYMAXDEPTH;
|
yystacksize = YYMAXDEPTH;
|
||||||
yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
|
#ifndef YYSTACK_USE_ALLOCA
|
||||||
|
yyfree_stacks = 1;
|
||||||
|
#endif
|
||||||
|
yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
|
||||||
__yy_memcpy ((char *)yyss, (char *)yyss1,
|
__yy_memcpy ((char *)yyss, (char *)yyss1,
|
||||||
size * (unsigned int) sizeof (*yyssp));
|
size * (unsigned int) sizeof (*yyssp));
|
||||||
yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
|
yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
|
||||||
__yy_memcpy ((char *)yyvs, (char *)yyvs1,
|
__yy_memcpy ((char *)yyvs, (char *)yyvs1,
|
||||||
size * (unsigned int) sizeof (*yyvsp));
|
size * (unsigned int) sizeof (*yyvsp));
|
||||||
#ifdef YYLSP_NEEDED
|
#ifdef YYLSP_NEEDED
|
||||||
yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
|
yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
|
||||||
__yy_memcpy ((char *)yyls, (char *)yyls1,
|
__yy_memcpy ((char *)yyls, (char *)yyls1,
|
||||||
size * (unsigned int) sizeof (*yylsp));
|
size * (unsigned int) sizeof (*yylsp));
|
||||||
#endif
|
#endif
|
||||||
@@ -502,7 +537,7 @@ yyreduce:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
$ /* the action file gets copied in in place of this dollarsign */
|
$ /* the action file gets copied in in place of this dollarsign */
|
||||||
#line 498 "bison.simple"
|
#line 541 "bison.simple"
|
||||||
|
|
||||||
yyvsp -= yylen;
|
yyvsp -= yylen;
|
||||||
yyssp -= yylen;
|
yyssp -= yylen;
|
||||||
@@ -697,4 +732,28 @@ yyerrhandle:
|
|||||||
|
|
||||||
yystate = yyn;
|
yystate = yyn;
|
||||||
goto yynewstate;
|
goto yynewstate;
|
||||||
|
|
||||||
|
yyacceptlab:
|
||||||
|
/* YYACCEPT comes here. */
|
||||||
|
if (yyfree_stacks)
|
||||||
|
{
|
||||||
|
free (yyss);
|
||||||
|
free (yyvs);
|
||||||
|
#ifdef YYLSP_NEEDED
|
||||||
|
free (yyls);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
yyabortlab:
|
||||||
|
/* YYABORT comes here. */
|
||||||
|
if (yyfree_stacks)
|
||||||
|
{
|
||||||
|
free (yyss);
|
||||||
|
free (yyvs);
|
||||||
|
#ifdef YYLSP_NEEDED
|
||||||
|
free (yyls);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,30 +28,53 @@
|
|||||||
It was written by Richard Stallman by simplifying the hairy parser
|
It was written by Richard Stallman by simplifying the hairy parser
|
||||||
used when %semantic_parser is specified. */
|
used when %semantic_parser is specified. */
|
||||||
|
|
||||||
#ifndef alloca
|
#ifndef YYSTACK_USE_ALLOCA
|
||||||
|
#ifdef alloca
|
||||||
|
#define YYSTACK_USE_ALLOCA
|
||||||
|
#else /* alloca not defined */
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
|
#define YYSTACK_USE_ALLOCA
|
||||||
#define alloca __builtin_alloca
|
#define alloca __builtin_alloca
|
||||||
#else /* not GNU C. */
|
#else /* not GNU C. */
|
||||||
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
|
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
|
||||||
|
#define YYSTACK_USE_ALLOCA
|
||||||
#include <alloca.h>
|
#include <alloca.h>
|
||||||
#else /* not sparc */
|
#else /* not sparc */
|
||||||
|
/* We think this test detects Watcom and Microsoft C. */
|
||||||
/* This used to test MSDOS, but that is a bad idea
|
/* This used to test MSDOS, but that is a bad idea
|
||||||
since that is in the user namespace. */
|
since that symbol is in the user namespace. */
|
||||||
#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
|
#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
|
||||||
|
#if 0 /* No need for malloc.h, which pollutes the namespace;
|
||||||
|
instead, just don't use alloca. */
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
#endif
|
||||||
#else /* not MSDOS, or __TURBOC__ */
|
#else /* not MSDOS, or __TURBOC__ */
|
||||||
#if defined(_AIX)
|
#if defined(_AIX)
|
||||||
#include <malloc.h>
|
/* I don't know what this was needed for, but it pollutes the namespace.
|
||||||
|
So I turned it off. rms, 2 May 1997. */
|
||||||
|
/* #include <malloc.h> */
|
||||||
#pragma alloca
|
#pragma alloca
|
||||||
|
#define YYSTACK_USE_ALLOCA
|
||||||
#else /* not MSDOS, or __TURBOC__, or _AIX */
|
#else /* not MSDOS, or __TURBOC__, or _AIX */
|
||||||
#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9 and 10. */
|
#if 0
|
||||||
|
#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
|
||||||
|
and on HPUX 10. Eventually we can turn this on. */
|
||||||
|
#define YYSTACK_USE_ALLOCA
|
||||||
#define alloca __builtin_alloca
|
#define alloca __builtin_alloca
|
||||||
#endif /* __hpux */
|
#endif /* __hpux */
|
||||||
|
#endif
|
||||||
#endif /* not _AIX */
|
#endif /* not _AIX */
|
||||||
#endif /* not MSDOS, or __TURBOC__ */
|
#endif /* not MSDOS, or __TURBOC__ */
|
||||||
#endif /* not sparc. */
|
#endif /* not sparc */
|
||||||
#endif /* not GNU C. */
|
#endif /* not GNU C */
|
||||||
#endif /* alloca not defined. */
|
#endif /* alloca not defined */
|
||||||
|
#endif /* YYSTACK_USE_ALLOCA not defined */
|
||||||
|
|
||||||
|
#ifdef YYSTACK_USE_ALLOCA
|
||||||
|
#define YYSTACK_ALLOC alloca
|
||||||
|
#else
|
||||||
|
#define YYSTACK_ALLOC malloc
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Note: there must be only one dollar sign in this file.
|
/* Note: there must be only one dollar sign in this file.
|
||||||
It is replaced by the list of actions, each action
|
It is replaced by the list of actions, each action
|
||||||
@@ -61,8 +84,8 @@
|
|||||||
#define yyclearin (yychar = YYEMPTY)
|
#define yyclearin (yychar = YYEMPTY)
|
||||||
#define YYEMPTY -2
|
#define YYEMPTY -2
|
||||||
#define YYEOF 0
|
#define YYEOF 0
|
||||||
#define YYACCEPT return(0)
|
#define YYACCEPT goto yyacceptlab
|
||||||
#define YYABORT return(1)
|
#define YYABORT goto yyabortlab
|
||||||
#define YYERROR goto yyerrlab1
|
#define YYERROR goto yyerrlab1
|
||||||
/* Like YYERROR except do call yyerror.
|
/* Like YYERROR except do call yyerror.
|
||||||
This remains here temporarily to ease the
|
This remains here temporarily to ease the
|
||||||
@@ -188,7 +211,7 @@ __yy_memcpy (char *to, char *from, unsigned int count)
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#line 196 "bison.simple"
|
#line 215 "bison.simple"
|
||||||
|
|
||||||
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
|
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
|
||||||
into yyparse. The argument should have type void *.
|
into yyparse. The argument should have type void *.
|
||||||
@@ -246,6 +269,7 @@ yyparse(YYPARSE_PARAM_ARG)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
int yystacksize = YYINITDEPTH;
|
int yystacksize = YYINITDEPTH;
|
||||||
|
int yyfree_stacks = 0;
|
||||||
|
|
||||||
#ifdef YYPURE
|
#ifdef YYPURE
|
||||||
int yychar;
|
int yychar;
|
||||||
@@ -330,19 +354,30 @@ yynewstate:
|
|||||||
if (yystacksize >= YYMAXDEPTH)
|
if (yystacksize >= YYMAXDEPTH)
|
||||||
{
|
{
|
||||||
yyerror("parser stack overflow");
|
yyerror("parser stack overflow");
|
||||||
|
if (yyfree_stacks)
|
||||||
|
{
|
||||||
|
free (yyss);
|
||||||
|
free (yyvs);
|
||||||
|
#ifdef YYLSP_NEEDED
|
||||||
|
free (yyls);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
yystacksize *= 2;
|
yystacksize *= 2;
|
||||||
if (yystacksize > YYMAXDEPTH)
|
if (yystacksize > YYMAXDEPTH)
|
||||||
yystacksize = YYMAXDEPTH;
|
yystacksize = YYMAXDEPTH;
|
||||||
yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
|
#ifndef YYSTACK_USE_ALLOCA
|
||||||
|
yyfree_stacks = 1;
|
||||||
|
#endif
|
||||||
|
yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
|
||||||
__yy_memcpy ((char *)yyss, (char *)yyss1,
|
__yy_memcpy ((char *)yyss, (char *)yyss1,
|
||||||
size * (unsigned int) sizeof (*yyssp));
|
size * (unsigned int) sizeof (*yyssp));
|
||||||
yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
|
yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
|
||||||
__yy_memcpy ((char *)yyvs, (char *)yyvs1,
|
__yy_memcpy ((char *)yyvs, (char *)yyvs1,
|
||||||
size * (unsigned int) sizeof (*yyvsp));
|
size * (unsigned int) sizeof (*yyvsp));
|
||||||
#ifdef YYLSP_NEEDED
|
#ifdef YYLSP_NEEDED
|
||||||
yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
|
yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
|
||||||
__yy_memcpy ((char *)yyls, (char *)yyls1,
|
__yy_memcpy ((char *)yyls, (char *)yyls1,
|
||||||
size * (unsigned int) sizeof (*yylsp));
|
size * (unsigned int) sizeof (*yylsp));
|
||||||
#endif
|
#endif
|
||||||
@@ -502,7 +537,7 @@ yyreduce:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
$ /* the action file gets copied in in place of this dollarsign */
|
$ /* the action file gets copied in in place of this dollarsign */
|
||||||
#line 498 "bison.simple"
|
#line 541 "bison.simple"
|
||||||
|
|
||||||
yyvsp -= yylen;
|
yyvsp -= yylen;
|
||||||
yyssp -= yylen;
|
yyssp -= yylen;
|
||||||
@@ -697,4 +732,28 @@ yyerrhandle:
|
|||||||
|
|
||||||
yystate = yyn;
|
yystate = yyn;
|
||||||
goto yynewstate;
|
goto yynewstate;
|
||||||
|
|
||||||
|
yyacceptlab:
|
||||||
|
/* YYACCEPT comes here. */
|
||||||
|
if (yyfree_stacks)
|
||||||
|
{
|
||||||
|
free (yyss);
|
||||||
|
free (yyvs);
|
||||||
|
#ifdef YYLSP_NEEDED
|
||||||
|
free (yyls);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
yyabortlab:
|
||||||
|
/* YYABORT comes here. */
|
||||||
|
if (yyfree_stacks)
|
||||||
|
{
|
||||||
|
free (yyss);
|
||||||
|
free (yyvs);
|
||||||
|
#ifdef YYLSP_NEEDED
|
||||||
|
free (yyls);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user