-#ifndef lint
-static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
-#endif
-#define YYBYACC 1
-#define YYMAJOR 1
-#define YYMINOR 9
-#define yyclearin (yychar=(-1))
-#define yyerrok (yyerrflag=0)
-#define YYRECOVERING (yyerrflag!=0)
-#define YYPREFIX "yy"
-#line 2 "parsedate.y"
+
+# line 2 "parsedate.y"
/* $Revision$
**
** Originally written by Steven M. Bellovin <smb@research.att.com> while
static void date_error(char *);
-#line 100 "parsedate.y"
-typedef union {
+
+# line 100 "parsedate.y"
+typedef union
+#ifdef __cplusplus
+ YYSTYPE
+#endif
+ {
time_t Number;
enum _MERIDIAN Meridian;
} YYSTYPE;
-#line 114 "y.tab.c"
-#define tDAY 257
-#define tDAYZONE 258
-#define tMERIDIAN 259
-#define tMONTH 260
-#define tMONTH_UNIT 261
-#define tSEC_UNIT 262
-#define tSNUMBER 263
-#define tUNUMBER 264
-#define tZONE 265
-#define YYERRCODE 256
-short yylhs[] = { -1,
- 0, 0, 4, 4, 4, 4, 5, 5, 5, 5,
- 5, 2, 2, 2, 2, 1, 6, 6, 6, 6,
- 6, 6, 6, 7, 7, 7, 7, 3, 3,
-};
-short yylen[] = { 2,
- 0, 2, 1, 2, 1, 1, 2, 4, 4, 6,
- 6, 1, 1, 2, 1, 1, 3, 5, 2, 4,
- 2, 3, 5, 2, 2, 2, 2, 0, 1,
-};
-short yydefred[] = { 1,
- 0, 0, 0, 0, 0, 2, 0, 5, 6, 0,
- 0, 26, 24, 29, 0, 27, 25, 0, 0, 7,
- 13, 16, 0, 15, 4, 0, 0, 22, 0, 0,
- 14, 0, 20, 0, 9, 8, 0, 23, 0, 18,
- 11, 10,
-};
-short yydgoto[] = { 1,
- 24, 25, 20, 6, 7, 8, 9,
-};
-short yysindex[] = { 0,
- -239, -36, -248, -255, -47, 0, -232, 0, 0, -247,
- -25, 0, 0, 0, -237, 0, 0, -235, -234, 0,
- 0, 0, -231, 0, 0, -226, -229, 0, -56, -11,
- 0, -227, 0, -225, 0, 0, -224, 0, -250, 0,
- 0, 0,
-};
-short yyrindex[] = { 0,
- 0, 0, 0, 0, 1, 0, 22, 0, 0, 0,
- 12, 0, 0, 0, 28, 0, 0, 0, 0, 0,
- 0, 0, 23, 0, 0, 0, 0, 0, 3, 14,
- 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
- 0, 0,
-};
-short yygindex[] = { 0,
- -19, 0, -24, 0, 0, 0, 0,
-};
-#define YYTABLESIZE 291
-short yytable[] = { 19,
- 28, 34, 28, 31, 36, 12, 13, 10, 14, 35,
- 18, 19, 22, 17, 42, 11, 26, 2, 27, 41,
- 3, 3, 12, 4, 5, 21, 28, 21, 29, 30,
- 22, 22, 23, 32, 33, 37, 38, 0, 39, 40,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 14, 0, 0, 0, 22, 0, 0, 0,
- 0, 14, 15, 16, 17, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 28, 28, 28,
- 28, 0, 28, 28, 28, 28, 28, 28, 19, 0,
- 17, 19, 0, 17, 19, 19, 17, 17, 3, 12,
- 0, 3, 12, 0, 21, 3, 12, 21, 0, 0,
- 21,
-};
-short yycheck[] = { 47,
- 0, 58, 0, 23, 29, 261, 262, 44, 259, 29,
- 58, 0, 263, 0, 39, 264, 264, 257, 44, 39,
- 260, 0, 0, 263, 264, 258, 264, 0, 264, 264,
- 263, 263, 265, 260, 264, 47, 264, -1, 264, 264,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 259, -1, -1, -1, 263, -1, -1, -1,
- -1, 259, 260, 261, 262, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 257, 258, 257,
- 258, -1, 260, 263, 264, 265, 264, 265, 257, -1,
- 257, 260, -1, 260, 263, 264, 263, 264, 257, 257,
- -1, 260, 260, -1, 257, 264, 264, 260, -1, -1,
- 263,
-};
-#define YYFINAL 1
-#ifndef YYDEBUG
-#define YYDEBUG 0
+# define tDAY 257
+# define tDAYZONE 258
+# define tMERIDIAN 259
+# define tMONTH 260
+# define tMONTH_UNIT 261
+# define tSEC_UNIT 262
+# define tSNUMBER 263
+# define tUNUMBER 264
+# define tZONE 265
+
+#include <inttypes.h>
+
+#ifdef __STDC__
+#include <stdlib.h>
+#include <string.h>
+#else
+#include <malloc.h>
+#include <memory.h>
#endif
-#define YYMAXTOKEN 265
-#if YYDEBUG
-char *yyname[] = {
-"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,"','",0,0,"'/'",0,0,0,0,0,0,0,0,0,0,"':'",0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"tDAY","tDAYZONE",
-"tMERIDIAN","tMONTH","tMONTH_UNIT","tSEC_UNIT","tSNUMBER","tUNUMBER","tZONE",
-};
-char *yyrule[] = {
-"$accept : spec",
-"spec :",
-"spec : spec item",
-"item : time",
-"item : time zone",
-"item : date",
-"item : rel",
-"time : tUNUMBER o_merid",
-"time : tUNUMBER ':' tUNUMBER o_merid",
-"time : tUNUMBER ':' tUNUMBER numzone",
-"time : tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid",
-"time : tUNUMBER ':' tUNUMBER ':' tUNUMBER numzone",
-"zone : tZONE",
-"zone : tDAYZONE",
-"zone : tZONE numzone",
-"zone : numzone",
-"numzone : tSNUMBER",
-"date : tUNUMBER '/' tUNUMBER",
-"date : tUNUMBER '/' tUNUMBER '/' tUNUMBER",
-"date : tMONTH tUNUMBER",
-"date : tMONTH tUNUMBER ',' tUNUMBER",
-"date : tUNUMBER tMONTH",
-"date : tUNUMBER tMONTH tUNUMBER",
-"date : tDAY ',' tUNUMBER tMONTH tUNUMBER",
-"rel : tSNUMBER tSEC_UNIT",
-"rel : tUNUMBER tSEC_UNIT",
-"rel : tSNUMBER tMONTH_UNIT",
-"rel : tUNUMBER tMONTH_UNIT",
-"o_merid :",
-"o_merid : tMERIDIAN",
-};
+
+#include <values.h>
+
+#if defined(__cplusplus) || defined(__STDC__)
+
+#if defined(__cplusplus) && defined(__EXTERN_C__)
+extern "C" {
#endif
-#ifdef YYSTACKSIZE
-#undef YYMAXDEPTH
-#define YYMAXDEPTH YYSTACKSIZE
-#else
-#ifdef YYMAXDEPTH
-#define YYSTACKSIZE YYMAXDEPTH
-#else
-#define YYSTACKSIZE 500
-#define YYMAXDEPTH 500
+#ifndef yyerror
+#if defined(__cplusplus)
+ void yyerror(const char *);
#endif
#endif
-int yydebug;
-int yynerrs;
-int yyerrflag;
-int yychar;
-short *yyssp;
-YYSTYPE *yyvsp;
-YYSTYPE yyval;
+#ifndef yylex
+ int yylex(void);
+#endif
+ int yyparse(void);
+#if defined(__cplusplus) && defined(__EXTERN_C__)
+}
+#endif
+
+#endif
+
+#define yyclearin yychar = -1
+#define yyerrok yyerrflag = 0
+extern int yychar;
+extern int yyerrflag;
YYSTYPE yylval;
-short yyss[YYSTACKSIZE];
-YYSTYPE yyvs[YYSTACKSIZE];
-#define yystacksize YYSTACKSIZE
-#line 287 "parsedate.y"
+YYSTYPE yyval;
+typedef int yytabelem;
+#ifndef YYMAXDEPTH
+#define YYMAXDEPTH 150
+#endif
+#if YYMAXDEPTH > 0
+int yy_yys[YYMAXDEPTH], *yys = yy_yys;
+YYSTYPE yy_yyv[YYMAXDEPTH], *yyv = yy_yyv;
+#else /* user does initial allocation */
+int *yys;
+YYSTYPE *yyv;
+#endif
+static int yymaxdepth = YYMAXDEPTH;
+# define YYERRCODE 256
+
+# line 286 "parsedate.y"
+
/* Month and day table. */
static TABLE MonthDayTable[] = {
/* NOTREACHED */
}
#endif /* TEST */
-#line 805 "y.tab.c"
-#define YYABORT goto yyabort
-#define YYREJECT goto yyabort
-#define YYACCEPT goto yyaccept
-#define YYERROR goto yyerrlab
-int
-yyparse()
-{
- register int yym, yyn, yystate;
+static const yytabelem yyexca[] ={
+-1, 1,
+ 0, -1,
+ -2, 0,
+ };
+# define YYNPROD 30
+# define YYLAST 216
+static const yytabelem yyact[]={
+
+ 17, 12, 34, 40, 39, 21, 14, 8, 11, 14,
+ 7, 16, 38, 9, 6, 36, 31, 29, 28, 27,
+ 22, 14, 25, 24, 37, 35, 30, 23, 13, 15,
+ 5, 4, 3, 2, 1, 10, 0, 0, 0, 0,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 33, 32, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 42, 41, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 21, 0, 0, 0, 14, 0, 0,
+ 0, 0, 21, 18, 20, 19 };
+static const yytabelem yypact[]={
+
+-10000000, -250,-10000000, -257,-10000000,-10000000, -47, -244, -17, -239,
+-10000000, -242,-10000000,-10000000,-10000000,-10000000, -245, -246, -247,-10000000,
+-10000000,-10000000, -18, -248,-10000000,-10000000,-10000000, -56, -22,-10000000,
+ -249, -236,-10000000,-10000000, -252, -260,-10000000, -261, -254,-10000000,
+-10000000,-10000000,-10000000 };
+static const yytabelem yypgo[]={
+
+ 0, 28, 35, 29, 34, 33, 32, 31, 30 };
+static const yytabelem yyr1[]={
+
+ 0, 4, 4, 5, 5, 5, 5, 6, 6, 6,
+ 6, 6, 2, 2, 2, 2, 1, 7, 7, 7,
+ 7, 7, 7, 7, 8, 8, 8, 8, 3, 3 };
+static const yytabelem yyr2[]={
+
+ 0, 0, 4, 3, 5, 3, 3, 5, 9, 9,
+ 13, 13, 3, 3, 5, 3, 3, 7, 11, 5,
+ 9, 5, 7, 11, 5, 5, 5, 5, 1, 3 };
+static const yytabelem yychk[]={
+
+-10000000, -4, -5, -6, -7, -8, 264, 260, 257, 263,
+ -2, 265, 258, -1, 263, -3, 58, 47, 260, 262,
+ 261, 259, 264, 44, 262, 261, -1, 264, 264, 264,
+ 44, 264, -3, -1, 58, 47, 264, 260, 264, 264,
+ 264, -3, -1 };
+static const yytabelem yydef[]={
+
+ 1, -2, 2, 3, 5, 6, 28, 0, 0, 0,
+ 4, 12, 13, 15, 16, 7, 0, 0, 21, 25,
+ 27, 29, 19, 0, 24, 26, 14, 28, 17, 22,
+ 0, 0, 8, 9, 0, 0, 20, 0, 28, 18,
+ 23, 10, 11 };
+typedef struct
+#ifdef __cplusplus
+ yytoktype
+#endif
+{ char *t_name; int t_val; } yytoktype;
+#ifndef YYDEBUG
+# define YYDEBUG 0 /* don't allow debugging */
+#endif
+
#if YYDEBUG
- register char *yys;
- extern char *getenv();
-
- if (yys = getenv("YYDEBUG"))
- {
- yyn = *yys;
- if (yyn >= '0' && yyn <= '9')
- yydebug = yyn - '0';
- }
+
+yytoktype yytoks[] =
+{
+ "tDAY", 257,
+ "tDAYZONE", 258,
+ "tMERIDIAN", 259,
+ "tMONTH", 260,
+ "tMONTH_UNIT", 261,
+ "tSEC_UNIT", 262,
+ "tSNUMBER", 263,
+ "tUNUMBER", 264,
+ "tZONE", 265,
+ "-unknown-", -1 /* ends search */
+};
+
+char * yyreds[] =
+{
+ "-no such reduction-",
+ "spec : /* empty */",
+ "spec : spec item",
+ "item : time",
+ "item : time zone",
+ "item : date",
+ "item : rel",
+ "time : tUNUMBER o_merid",
+ "time : tUNUMBER ':' tUNUMBER o_merid",
+ "time : tUNUMBER ':' tUNUMBER numzone",
+ "time : tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid",
+ "time : tUNUMBER ':' tUNUMBER ':' tUNUMBER numzone",
+ "zone : tZONE",
+ "zone : tDAYZONE",
+ "zone : tZONE numzone",
+ "zone : numzone",
+ "numzone : tSNUMBER",
+ "date : tUNUMBER '/' tUNUMBER",
+ "date : tUNUMBER '/' tUNUMBER '/' tUNUMBER",
+ "date : tMONTH tUNUMBER",
+ "date : tMONTH tUNUMBER ',' tUNUMBER",
+ "date : tUNUMBER tMONTH",
+ "date : tUNUMBER tMONTH tUNUMBER",
+ "date : tDAY ',' tUNUMBER tMONTH tUNUMBER",
+ "rel : tSNUMBER tSEC_UNIT",
+ "rel : tUNUMBER tSEC_UNIT",
+ "rel : tSNUMBER tMONTH_UNIT",
+ "rel : tUNUMBER tMONTH_UNIT",
+ "o_merid : /* empty */",
+ "o_merid : tMERIDIAN",
+};
+#endif /* YYDEBUG */
+# line 1 "/usr/ccs/bin/yaccpar"
+/*
+ * Copyright (c) 1993 by Sun Microsystems, Inc.
+ */
+
+#pragma ident "@(#)yaccpar 6.15 97/12/08 SMI"
+
+/*
+** Skeleton parser driver for yacc output
+*/
+
+/*
+** yacc user known macros and defines
+*/
+#define YYERROR goto yyerrlab
+#define YYACCEPT return(0)
+#define YYABORT return(1)
+#define YYBACKUP( newtoken, newvalue )\
+{\
+ if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
+ {\
+ yyerror( "syntax error - cannot backup" );\
+ goto yyerrlab;\
+ }\
+ yychar = newtoken;\
+ yystate = *yyps;\
+ yylval = newvalue;\
+ goto yynewstate;\
+}
+#define YYRECOVERING() (!!yyerrflag)
+#define YYNEW(type) malloc(sizeof(type) * yynewmax)
+#define YYCOPY(to, from, type) \
+ (type *) memcpy(to, (char *) from, yymaxdepth * sizeof (type))
+#define YYENLARGE( from, type) \
+ (type *) realloc((char *) from, yynewmax * sizeof(type))
+#ifndef YYDEBUG
+# define YYDEBUG 1 /* make debugging available */
#endif
- yynerrs = 0;
- yyerrflag = 0;
- yychar = (-1);
+/*
+** user known globals
+*/
+int yydebug; /* set to 1 to get debugging */
- yyssp = yyss;
- yyvsp = yyvs;
- *yyssp = yystate = 0;
+/*
+** driver internal defines
+*/
+#define YYFLAG (-10000000)
-yyloop:
- if (yyn = yydefred[yystate]) goto yyreduce;
- if (yychar < 0)
- {
- if ((yychar = yylex()) < 0) yychar = 0;
-#if YYDEBUG
- if (yydebug)
- {
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- printf("%sdebug: state %d, reading %d (%s)\n",
- YYPREFIX, yystate, yychar, yys);
- }
+/*
+** global variables used by the parser
+*/
+YYSTYPE *yypv; /* top of value stack */
+int *yyps; /* top of state stack */
+
+int yystate; /* current state */
+int yytmp; /* extra var (lasts between blocks) */
+
+int yynerrs; /* number of errors */
+int yyerrflag; /* error recovery flag */
+int yychar; /* current input token number */
+
+
+
+#ifdef YYNMBCHARS
+#define YYLEX() yycvtok(yylex())
+/*
+** yycvtok - return a token if i is a wchar_t value that exceeds 255.
+** If i<255, i itself is the token. If i>255 but the neither
+** of the 30th or 31st bit is on, i is already a token.
+*/
+#if defined(__STDC__) || defined(__cplusplus)
+int yycvtok(int i)
+#else
+int yycvtok(i) int i;
#endif
- }
- if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: state %d, shifting to state %d\n",
- YYPREFIX, yystate, yytable[yyn]);
+{
+ int first = 0;
+ int last = YYNMBCHARS - 1;
+ int mid;
+ wchar_t j;
+
+ if(i&0x60000000){/*Must convert to a token. */
+ if( yymbchars[last].character < i ){
+ return i;/*Giving up*/
+ }
+ while ((last>=first)&&(first>=0)) {/*Binary search loop*/
+ mid = (first+last)/2;
+ j = yymbchars[mid].character;
+ if( j==i ){/*Found*/
+ return yymbchars[mid].tvalue;
+ }else if( j<i ){
+ first = mid + 1;
+ }else{
+ last = mid -1;
+ }
+ }
+ /*No entry in the table.*/
+ return i;/* Giving up.*/
+ }else{/* i is already a token. */
+ return i;
+ }
+}
+#else/*!YYNMBCHARS*/
+#define YYLEX() yylex()
+#endif/*!YYNMBCHARS*/
+
+/*
+** yyparse - return 0 if worked, 1 if syntax error not recovered from
+*/
+#if defined(__STDC__) || defined(__cplusplus)
+int yyparse(void)
+#else
+int yyparse()
#endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
- yychar = (-1);
- if (yyerrflag > 0) --yyerrflag;
- goto yyloop;
- }
- if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
- {
- yyn = yytable[yyn];
- goto yyreduce;
- }
- if (yyerrflag) goto yyinrecovery;
-#ifdef lint
- goto yynewerror;
+{
+ register YYSTYPE *yypvt = 0; /* top of value stack for $vars */
+
+#if defined(__cplusplus) || defined(lint)
+/*
+ hacks to please C++ and lint - goto's inside
+ switch should never be executed
+*/
+ static int __yaccpar_lint_hack__ = 0;
+ switch (__yaccpar_lint_hack__)
+ {
+ case 1: goto yyerrlab;
+ case 2: goto yynewstate;
+ }
#endif
-yynewerror:
- yyerror("syntax error");
-#ifdef lint
- goto yyerrlab;
+
+ /*
+ ** Initialize externals - yyparse may be called more than once
+ */
+ yypv = &yyv[-1];
+ yyps = &yys[-1];
+ yystate = 0;
+ yytmp = 0;
+ yynerrs = 0;
+ yyerrflag = 0;
+ yychar = -1;
+
+#if YYMAXDEPTH <= 0
+ if (yymaxdepth <= 0)
+ {
+ if ((yymaxdepth = YYEXPAND(0)) <= 0)
+ {
+ yyerror("yacc initialization error");
+ YYABORT;
+ }
+ }
#endif
-yyerrlab:
- ++yynerrs;
-yyinrecovery:
- if (yyerrflag < 3)
- {
- yyerrflag = 3;
- for (;;)
- {
- if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
- {
+
+ {
+ register YYSTYPE *yy_pv; /* top of value stack */
+ register int *yy_ps; /* top of state stack */
+ register int yy_state; /* current state */
+ register int yy_n; /* internal state number info */
+ goto yystack; /* moved from 6 lines above to here to please C++ */
+
+ /*
+ ** get globals into registers.
+ ** branch to here only if YYBACKUP was called.
+ */
+ yynewstate:
+ yy_pv = yypv;
+ yy_ps = yyps;
+ yy_state = yystate;
+ goto yy_newstate;
+
+ /*
+ ** get globals into registers.
+ ** either we just started, or we just finished a reduction
+ */
+ yystack:
+ yy_pv = yypv;
+ yy_ps = yyps;
+ yy_state = yystate;
+
+ /*
+ ** top of for (;;) loop while no reductions done
+ */
+ yy_stack:
+ /*
+ ** put a state and value onto the stacks
+ */
#if YYDEBUG
- if (yydebug)
- printf("%sdebug: state %d, error recovery shifting\
- to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
+ /*
+ ** if debugging, look up token value in list of value vs.
+ ** name pairs. 0 and negative (-1) are special values.
+ ** Note: linear search is used since time is not a real
+ ** consideration while debugging.
+ */
+ if ( yydebug )
+ {
+ register int yy_i;
+
+ printf( "State %d, token ", yy_state );
+ if ( yychar == 0 )
+ printf( "end-of-file\n" );
+ else if ( yychar < 0 )
+ printf( "-none-\n" );
+ else
+ {
+ for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
+ yy_i++ )
+ {
+ if ( yytoks[yy_i].t_val == yychar )
+ break;
+ }
+ printf( "%s\n", yytoks[yy_i].t_name );
+ }
+ }
+#endif /* YYDEBUG */
+ if ( ++yy_ps >= &yys[ yymaxdepth ] ) /* room on stack? */
+ {
+ /*
+ ** reallocate and recover. Note that pointers
+ ** have to be reset, or bad things will happen
+ */
+ long yyps_index = (yy_ps - yys);
+ long yypv_index = (yy_pv - yyv);
+ long yypvt_index = (yypvt - yyv);
+ int yynewmax;
+#ifdef YYEXPAND
+ yynewmax = YYEXPAND(yymaxdepth);
+#else
+ yynewmax = 2 * yymaxdepth; /* double table size */
+ if (yymaxdepth == YYMAXDEPTH) /* first time growth */
+ {
+ char *newyys = (char *)YYNEW(int);
+ char *newyyv = (char *)YYNEW(YYSTYPE);
+ if (newyys != 0 && newyyv != 0)
+ {
+ yys = YYCOPY(newyys, yys, int);
+ yyv = YYCOPY(newyyv, yyv, YYSTYPE);
+ }
+ else
+ yynewmax = 0; /* failed */
+ }
+ else /* not first time */
+ {
+ yys = YYENLARGE(yys, int);
+ yyv = YYENLARGE(yyv, YYSTYPE);
+ if (yys == 0 || yyv == 0)
+ yynewmax = 0; /* failed */
+ }
#endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
- goto yyloop;
- }
- else
- {
+ if (yynewmax <= yymaxdepth) /* tables not expanded */
+ {
+ yyerror( "yacc stack overflow" );
+ YYABORT;
+ }
+ yymaxdepth = yynewmax;
+
+ yy_ps = yys + yyps_index;
+ yy_pv = yyv + yypv_index;
+ yypvt = yyv + yypvt_index;
+ }
+ *yy_ps = yy_state;
+ *++yy_pv = yyval;
+
+ /*
+ ** we have a new state - find out what to do
+ */
+ yy_newstate:
+ if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
+ goto yydefault; /* simple state */
#if YYDEBUG
- if (yydebug)
- printf("%sdebug: error recovery discarding state %d\n",
- YYPREFIX, *yyssp);
+ /*
+ ** if debugging, need to mark whether new token grabbed
+ */
+ yytmp = yychar < 0;
#endif
- if (yyssp <= yyss) goto yyabort;
- --yyssp;
- --yyvsp;
- }
- }
- }
- else
- {
- if (yychar == 0) goto yyabort;
+ if ( ( yychar < 0 ) && ( ( yychar = YYLEX() ) < 0 ) )
+ yychar = 0; /* reached EOF */
+#if YYDEBUG
+ if ( yydebug && yytmp )
+ {
+ register int yy_i;
+
+ printf( "Received token " );
+ if ( yychar == 0 )
+ printf( "end-of-file\n" );
+ else if ( yychar < 0 )
+ printf( "-none-\n" );
+ else
+ {
+ for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
+ yy_i++ )
+ {
+ if ( yytoks[yy_i].t_val == yychar )
+ break;
+ }
+ printf( "%s\n", yytoks[yy_i].t_name );
+ }
+ }
+#endif /* YYDEBUG */
+ if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
+ goto yydefault;
+ if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar ) /*valid shift*/
+ {
+ yychar = -1;
+ yyval = yylval;
+ yy_state = yy_n;
+ if ( yyerrflag > 0 )
+ yyerrflag--;
+ goto yy_stack;
+ }
+
+ yydefault:
+ if ( ( yy_n = yydef[ yy_state ] ) == -2 )
+ {
#if YYDEBUG
- if (yydebug)
- {
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
- YYPREFIX, yystate, yychar, yys);
- }
+ yytmp = yychar < 0;
#endif
- yychar = (-1);
- goto yyloop;
- }
-yyreduce:
+ if ( ( yychar < 0 ) && ( ( yychar = YYLEX() ) < 0 ) )
+ yychar = 0; /* reached EOF */
+#if YYDEBUG
+ if ( yydebug && yytmp )
+ {
+ register int yy_i;
+
+ printf( "Received token " );
+ if ( yychar == 0 )
+ printf( "end-of-file\n" );
+ else if ( yychar < 0 )
+ printf( "-none-\n" );
+ else
+ {
+ for ( yy_i = 0;
+ yytoks[yy_i].t_val >= 0;
+ yy_i++ )
+ {
+ if ( yytoks[yy_i].t_val
+ == yychar )
+ {
+ break;
+ }
+ }
+ printf( "%s\n", yytoks[yy_i].t_name );
+ }
+ }
+#endif /* YYDEBUG */
+ /*
+ ** look through exception table
+ */
+ {
+ register const int *yyxi = yyexca;
+
+ while ( ( *yyxi != -1 ) ||
+ ( yyxi[1] != yy_state ) )
+ {
+ yyxi += 2;
+ }
+ while ( ( *(yyxi += 2) >= 0 ) &&
+ ( *yyxi != yychar ) )
+ ;
+ if ( ( yy_n = yyxi[1] ) < 0 )
+ YYACCEPT;
+ }
+ }
+
+ /*
+ ** check for syntax error
+ */
+ if ( yy_n == 0 ) /* have an error */
+ {
+ /* no worry about speed here! */
+ switch ( yyerrflag )
+ {
+ case 0: /* new error */
+ yyerror( "syntax error" );
+ goto skip_init;
+ yyerrlab:
+ /*
+ ** get globals into registers.
+ ** we have a user generated syntax type error
+ */
+ yy_pv = yypv;
+ yy_ps = yyps;
+ yy_state = yystate;
+ skip_init:
+ yynerrs++;
+ /* FALLTHRU */
+ case 1:
+ case 2: /* incompletely recovered error */
+ /* try again... */
+ yyerrflag = 3;
+ /*
+ ** find state where "error" is a legal
+ ** shift action
+ */
+ while ( yy_ps >= yys )
+ {
+ yy_n = yypact[ *yy_ps ] + YYERRCODE;
+ if ( yy_n >= 0 && yy_n < YYLAST &&
+ yychk[yyact[yy_n]] == YYERRCODE) {
+ /*
+ ** simulate shift of "error"
+ */
+ yy_state = yyact[ yy_n ];
+ goto yy_stack;
+ }
+ /*
+ ** current state has no shift on
+ ** "error", pop stack
+ */
+#if YYDEBUG
+# define _POP_ "Error recovery pops state %d, uncovers state %d\n"
+ if ( yydebug )
+ printf( _POP_, *yy_ps,
+ yy_ps[-1] );
+# undef _POP_
+#endif
+ yy_ps--;
+ yy_pv--;
+ }
+ /*
+ ** there is no state on stack with "error" as
+ ** a valid shift. give up.
+ */
+ YYABORT;
+ case 3: /* no shift yet; eat a token */
+#if YYDEBUG
+ /*
+ ** if debugging, look up token in list of
+ ** pairs. 0 and negative shouldn't occur,
+ ** but since timing doesn't matter when
+ ** debugging, it doesn't hurt to leave the
+ ** tests here.
+ */
+ if ( yydebug )
+ {
+ register int yy_i;
+
+ printf( "Error recovery discards " );
+ if ( yychar == 0 )
+ printf( "token end-of-file\n" );
+ else if ( yychar < 0 )
+ printf( "token -none-\n" );
+ else
+ {
+ for ( yy_i = 0;
+ yytoks[yy_i].t_val >= 0;
+ yy_i++ )
+ {
+ if ( yytoks[yy_i].t_val
+ == yychar )
+ {
+ break;
+ }
+ }
+ printf( "token %s\n",
+ yytoks[yy_i].t_name );
+ }
+ }
+#endif /* YYDEBUG */
+ if ( yychar == 0 ) /* reached EOF. quit */
+ YYABORT;
+ yychar = -1;
+ goto yy_newstate;
+ }
+ }/* end if ( yy_n == 0 ) */
+ /*
+ ** reduction by production yy_n
+ ** put stack tops, etc. so things right after switch
+ */
#if YYDEBUG
- if (yydebug)
- printf("%sdebug: state %d, reducing by rule %d (%s)\n",
- YYPREFIX, yystate, yyn, yyrule[yyn]);
+ /*
+ ** if debugging, print the string that is the user's
+ ** specification of the reduction which is just about
+ ** to be done.
+ */
+ if ( yydebug )
+ printf( "Reduce by (%d) \"%s\"\n",
+ yy_n, yyreds[ yy_n ] );
#endif
- yym = yylen[yyn];
- yyval = yyvsp[1-yym];
- switch (yyn)
- {
+ yytmp = yy_n; /* value to switch over */
+ yypvt = yy_pv; /* $vars top of value stack */
+ /*
+ ** Look in goto table for next state
+ ** Sorry about using yy_state here as temporary
+ ** register variable, but why not, if it works...
+ ** If yyr2[ yy_n ] doesn't have the low order bit
+ ** set, then there is no action to be done for
+ ** this reduction. So, no saving & unsaving of
+ ** registers done. The only difference between the
+ ** code just after the if and the body of the if is
+ ** the goto yy_stack in the body. This way the test
+ ** can be made before the choice of what to do is needed.
+ */
+ {
+ /* length of production doubled with extra bit */
+ register int yy_len = yyr2[ yy_n ];
+
+ if ( !( yy_len & 01 ) )
+ {
+ yy_len >>= 1;
+ yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
+ yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
+ *( yy_ps -= yy_len ) + 1;
+ if ( yy_state >= YYLAST ||
+ yychk[ yy_state =
+ yyact[ yy_state ] ] != -yy_n )
+ {
+ yy_state = yyact[ yypgo[ yy_n ] ];
+ }
+ goto yy_stack;
+ }
+ yy_len >>= 1;
+ yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
+ yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
+ *( yy_ps -= yy_len ) + 1;
+ if ( yy_state >= YYLAST ||
+ yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
+ {
+ yy_state = yyact[ yypgo[ yy_n ] ];
+ }
+ }
+ /* save until reenter driver code */
+ yystate = yy_state;
+ yyps = yy_ps;
+ yypv = yy_pv;
+ }
+ /*
+ ** code supplied by user is placed in this switch
+ */
+ switch( yytmp )
+ {
+
case 3:
-#line 118 "parsedate.y"
+# line 118 "parsedate.y"
{
yyHaveTime++;
#ifdef lint
YYERROR;
}
#endif /* lint */
- }
-break;
+ } break;
case 4:
-#line 127 "parsedate.y"
+# line 127 "parsedate.y"
{
yyHaveTime++;
- yyTimezone = yyvsp[0].Number;
- }
-break;
+ yyTimezone = yypvt[-0].Number;
+ } break;
case 5:
-#line 131 "parsedate.y"
+# line 131 "parsedate.y"
{
yyHaveDate++;
- }
-break;
+ } break;
case 6:
-#line 134 "parsedate.y"
+# line 134 "parsedate.y"
{
yyHaveRel = 1;
- }
-break;
+ } break;
case 7:
-#line 139 "parsedate.y"
+# line 139 "parsedate.y"
{
- if (yyvsp[-1].Number < 100) {
- yyHour = yyvsp[-1].Number;
+ if (yypvt[-1].Number < 100) {
+ yyHour = yypvt[-1].Number;
yyMinutes = 0;
}
else {
- yyHour = yyvsp[-1].Number / 100;
- yyMinutes = yyvsp[-1].Number % 100;
+ yyHour = yypvt[-1].Number / 100;
+ yyMinutes = yypvt[-1].Number % 100;
}
yySeconds = 0;
- yyMeridian = yyvsp[0].Meridian;
- }
-break;
+ yyMeridian = yypvt[-0].Meridian;
+ } break;
case 8:
-#line 151 "parsedate.y"
+# line 151 "parsedate.y"
{
- yyHour = yyvsp[-3].Number;
- yyMinutes = yyvsp[-1].Number;
+ yyHour = yypvt[-3].Number;
+ yyMinutes = yypvt[-1].Number;
yySeconds = 0;
- yyMeridian = yyvsp[0].Meridian;
- }
-break;
+ yyMeridian = yypvt[-0].Meridian;
+ } break;
case 9:
-#line 157 "parsedate.y"
+# line 157 "parsedate.y"
{
- yyHour = yyvsp[-3].Number;
- yyMinutes = yyvsp[-1].Number;
- yyTimezone = yyvsp[0].Number;
+ yyHour = yypvt[-3].Number;
+ yyMinutes = yypvt[-1].Number;
+ yyTimezone = yypvt[-0].Number;
yyMeridian = MER24;
yyDSTmode = DSToff;
- }
-break;
+ } break;
case 10:
-#line 164 "parsedate.y"
+# line 164 "parsedate.y"
{
- yyHour = yyvsp[-5].Number;
- yyMinutes = yyvsp[-3].Number;
- yySeconds = yyvsp[-1].Number;
- yyMeridian = yyvsp[0].Meridian;
- }
-break;
+ yyHour = yypvt[-5].Number;
+ yyMinutes = yypvt[-3].Number;
+ yySeconds = yypvt[-1].Number;
+ yyMeridian = yypvt[-0].Meridian;
+ } break;
case 11:
-#line 170 "parsedate.y"
+# line 170 "parsedate.y"
{
- yyHour = yyvsp[-5].Number;
- yyMinutes = yyvsp[-3].Number;
- yySeconds = yyvsp[-1].Number;
- yyTimezone = yyvsp[0].Number;
+ yyHour = yypvt[-5].Number;
+ yyMinutes = yypvt[-3].Number;
+ yySeconds = yypvt[-1].Number;
+ yyTimezone = yypvt[-0].Number;
yyMeridian = MER24;
yyDSTmode = DSToff;
- }
-break;
+ } break;
case 12:
-#line 180 "parsedate.y"
+# line 180 "parsedate.y"
{
- yyval.Number = yyvsp[0].Number;
+ yyval.Number = yypvt[-0].Number;
yyDSTmode = DSToff;
- }
-break;
+ } break;
case 13:
-#line 184 "parsedate.y"
+# line 184 "parsedate.y"
{
- yyval.Number = yyvsp[0].Number;
+ yyval.Number = yypvt[-0].Number;
yyDSTmode = DSTon;
- }
-break;
+ } break;
case 14:
-#line 188 "parsedate.y"
+# line 188 "parsedate.y"
{
/* Only allow "GMT+300" and "GMT-0800" */
- if (yyvsp[-1].Number != 0) {
+ if (yypvt[-1].Number != 0) {
YYABORT;
}
- yyval.Number = yyvsp[0].Number;
+ yyval.Number = yypvt[-0].Number;
yyDSTmode = DSToff;
- }
-break;
+ } break;
case 15:
-#line 196 "parsedate.y"
+# line 196 "parsedate.y"
{
- yyval.Number = yyvsp[0].Number;
+ yyval.Number = yypvt[-0].Number;
yyDSTmode = DSToff;
- }
-break;
+ } break;
case 16:
-#line 202 "parsedate.y"
+# line 202 "parsedate.y"
{
int i;
/* Unix and GMT and numeric timezones -- a little confusing. */
- if (yyvsp[0].Number < 0) {
+ if (yypvt[-0].Number < 0) {
/* Don't work with negative modulus. */
- yyvsp[0].Number = -yyvsp[0].Number;
- if (yyvsp[0].Number > 9999 || (i = yyvsp[0].Number % 100) >= 60) {
+ yypvt[-0].Number = -yypvt[-0].Number;
+ if (yypvt[-0].Number > 9999 || (i = yypvt[-0].Number % 100) >= 60) {
YYABORT;
}
- yyval.Number = (yyvsp[0].Number / 100) * 60 + i;
+ yyval.Number = (yypvt[-0].Number / 100) * 60 + i;
}
else {
- if (yyvsp[0].Number > 9999 || (i = yyvsp[0].Number % 100) >= 60) {
+ if (yypvt[-0].Number > 9999 || (i = yypvt[-0].Number % 100) >= 60) {
YYABORT;
}
- yyval.Number = -((yyvsp[0].Number / 100) * 60 + i);
+ yyval.Number = -((yypvt[-0].Number / 100) * 60 + i);
}
- }
-break;
+ } break;
case 17:
-#line 223 "parsedate.y"
+# line 223 "parsedate.y"
{
- yyMonth = yyvsp[-2].Number;
- yyDay = yyvsp[0].Number;
- }
-break;
+ yyMonth = yypvt[-2].Number;
+ yyDay = yypvt[-0].Number;
+ } break;
case 18:
-#line 227 "parsedate.y"
+# line 227 "parsedate.y"
{
- if (yyvsp[-4].Number > 100) {
- yyYear = yyvsp[-4].Number;
- yyMonth = yyvsp[-2].Number;
- yyDay = yyvsp[0].Number;
+ if (yypvt[-4].Number > 100) {
+ yyYear = yypvt[-4].Number;
+ yyMonth = yypvt[-2].Number;
+ yyDay = yypvt[-0].Number;
}
else {
- yyMonth = yyvsp[-4].Number;
- yyDay = yyvsp[-2].Number;
- yyYear = yyvsp[0].Number;
+ yyMonth = yypvt[-4].Number;
+ yyDay = yypvt[-2].Number;
+ yyYear = yypvt[-0].Number;
}
- }
-break;
+ } break;
case 19:
-#line 239 "parsedate.y"
+# line 239 "parsedate.y"
{
- yyMonth = yyvsp[-1].Number;
- yyDay = yyvsp[0].Number;
- }
-break;
+ yyMonth = yypvt[-1].Number;
+ yyDay = yypvt[-0].Number;
+ } break;
case 20:
-#line 243 "parsedate.y"
+# line 243 "parsedate.y"
{
- yyMonth = yyvsp[-3].Number;
- yyDay = yyvsp[-2].Number;
- yyYear = yyvsp[0].Number;
- }
-break;
+ yyMonth = yypvt[-3].Number;
+ yyDay = yypvt[-2].Number;
+ yyYear = yypvt[-0].Number;
+ } break;
case 21:
-#line 248 "parsedate.y"
+# line 248 "parsedate.y"
{
- yyDay = yyvsp[-1].Number;
- yyMonth = yyvsp[0].Number;
- }
-break;
+ yyDay = yypvt[-1].Number;
+ yyMonth = yypvt[-0].Number;
+ } break;
case 22:
-#line 252 "parsedate.y"
+# line 252 "parsedate.y"
{
- yyDay = yyvsp[-2].Number;
- yyMonth = yyvsp[-1].Number;
- yyYear = yyvsp[0].Number;
- }
-break;
+ yyDay = yypvt[-2].Number;
+ yyMonth = yypvt[-1].Number;
+ yyYear = yypvt[-0].Number;
+ } break;
case 23:
-#line 257 "parsedate.y"
+# line 257 "parsedate.y"
{
- yyDay = yyvsp[-2].Number;
- yyMonth = yyvsp[-1].Number;
- yyYear = yyvsp[0].Number;
- }
-break;
+ yyDay = yypvt[-2].Number;
+ yyMonth = yypvt[-1].Number;
+ yyYear = yypvt[-0].Number;
+ } break;
case 24:
-#line 264 "parsedate.y"
+# line 264 "parsedate.y"
{
- yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number;
- }
-break;
+ yyRelSeconds += yypvt[-1].Number * yypvt[-0].Number;
+ } break;
case 25:
-#line 267 "parsedate.y"
+# line 267 "parsedate.y"
{
- yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number;
- }
-break;
+ yyRelSeconds += yypvt[-1].Number * yypvt[-0].Number;
+ } break;
case 26:
-#line 270 "parsedate.y"
+# line 270 "parsedate.y"
{
- yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number;
- }
-break;
+ yyRelMonth += yypvt[-1].Number * yypvt[-0].Number;
+ } break;
case 27:
-#line 273 "parsedate.y"
+# line 273 "parsedate.y"
{
- yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number;
- }
-break;
+ yyRelMonth += yypvt[-1].Number * yypvt[-0].Number;
+ } break;
case 28:
-#line 278 "parsedate.y"
+# line 278 "parsedate.y"
{
yyval.Meridian = MER24;
- }
-break;
+ } break;
case 29:
-#line 281 "parsedate.y"
+# line 281 "parsedate.y"
{
- yyval.Meridian = yyvsp[0].Meridian;
+ yyval.Meridian = yypvt[-0].Meridian;
+ } break;
+# line 531 "/usr/ccs/bin/yaccpar"
}
-break;
-#line 1181 "y.tab.c"
- }
- yyssp -= yym;
- yystate = *yyssp;
- yyvsp -= yym;
- yym = yylhs[yyn];
- if (yystate == 0 && yym == 0)
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: after reduction, shifting from state 0 to\
- state %d\n", YYPREFIX, YYFINAL);
-#endif
- yystate = YYFINAL;
- *++yyssp = YYFINAL;
- *++yyvsp = yyval;
- if (yychar < 0)
- {
- if ((yychar = yylex()) < 0) yychar = 0;
-#if YYDEBUG
- if (yydebug)
- {
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- printf("%sdebug: state %d, reading %d (%s)\n",
- YYPREFIX, YYFINAL, yychar, yys);
- }
-#endif
- }
- if (yychar == 0) goto yyaccept;
- goto yyloop;
- }
- if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
- yystate = yytable[yyn];
- else
- yystate = yydgoto[yym];
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: after reduction, shifting from state %d \
-to state %d\n", YYPREFIX, *yyssp, yystate);
-#endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate;
- *++yyvsp = yyval;
- goto yyloop;
-yyoverflow:
- yyerror("yacc stack overflow");
-yyabort:
- return (1);
-yyaccept:
- return (0);
+ goto yystack; /* reset registers in driver code */
}
+