/* A type that is properly aligned for any stack member. */
union yyalloc
{
- short yys;
- YYSTYPE yyv;
+ short yyss;
+ YYSTYPE yyvs;
# if YYLSP_NEEDED
- YYLTYPE yyl;
+ YYLTYPE yyls;
# endif
};
do \
{ \
YYSIZE_T yynewbytes; \
- yymemcpy (yyptr, (char *) (Stack), \
+ yymemcpy ((char *) yyptr, (char *) (Stack), \
yysize * (YYSIZE_T) sizeof (Type)); \
- (Stack) = (Type *) yyptr; \
+ Stack = &yyptr->Stack; \
yynewbytes = yystacksize * sizeof (Type) + YYSTACK_GAP_MAX; \
- yynewbytes -= yynewbytes % sizeof (union yyalloc); \
- yyptr += yynewbytes; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
} \
while (0)
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
YYDEST. */
static char *
-# ifndef __cplusplus
+# if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+# else
yystpcpy (yydest, yysrc)
char *yydest;
const char *yysrc;
-# else
-yystpcpy (char *yydest, const char *yysrc)
# endif
{
register char *yyd = yydest;
{
short *yyss1 = yyss;
- char *yyptr = (char *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
if (! yyptr)
goto yyoverflowlab;
YYSTACK_RELOCATE (short, yyss);
yyerror ("parse error; also virtual memory exhausted");
}
else
-#endif /* YYERROR_VERBOSE */
+#endif /* defined (YYERROR_VERBOSE) */
yyerror ("parse error");
}
goto yyerrlab1;