⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getdate_tab.cpp

📁 pwlib源码库
💻 CPP
📖 第 1 页 / 共 4 页
字号:
		VARIABLE->yyMonth = -yyvsp[-1].Number;		VARIABLE->yyDay = -yyvsp[0].Number;	    }	    else		SetPossibleDate(VARIABLE, yyvsp[-2].Number, -yyvsp[-1].Number, -yyvsp[0].Number);	;    break;}case 23:#line 235 "..\..\common\getdate.y"{	    /* e.g. 17-JUN-1992.  */	    VARIABLE->yyDay = yyvsp[-2].Number;	    VARIABLE->yyMonth = yyvsp[-1].Number;	    VARIABLE->yyYear = -yyvsp[0].Number;	;    break;}case 24:#line 241 "..\..\common\getdate.y"{	    VARIABLE->yyMonth = yyvsp[-1].Number;	    VARIABLE->yyDay = yyvsp[0].Number;	;    break;}case 25:#line 245 "..\..\common\getdate.y"{	    VARIABLE->yyMonth = yyvsp[-3].Number;	    VARIABLE->yyDay = yyvsp[-2].Number;	    VARIABLE->yyYear = yyvsp[0].Number;	;    break;}case 26:#line 250 "..\..\common\getdate.y"{	    VARIABLE->yyMonth = yyvsp[0].Number;	    VARIABLE->yyDay = yyvsp[-1].Number;	;    break;}case 27:#line 254 "..\..\common\getdate.y"{	    VARIABLE->yyMonth = yyvsp[-1].Number;	    VARIABLE->yyDay = yyvsp[-2].Number;	    VARIABLE->yyYear = yyvsp[0].Number;	;    break;}case 28:#line 261 "..\..\common\getdate.y"{	    VARIABLE->yyRelSeconds = -VARIABLE->yyRelSeconds;	    VARIABLE->yyRelMonth = -VARIABLE->yyRelMonth;	;    break;}case 30:#line 268 "..\..\common\getdate.y"{	    VARIABLE->yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number * 60L;	;    break;}case 31:#line 271 "..\..\common\getdate.y"{	    VARIABLE->yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number * 60L;	;    break;}case 32:#line 274 "..\..\common\getdate.y"{	    VARIABLE->yyRelSeconds += yyvsp[0].Number * 60L;	;    break;}case 33:#line 277 "..\..\common\getdate.y"{	    VARIABLE->yyRelSeconds += yyvsp[-1].Number;	;    break;}case 34:#line 280 "..\..\common\getdate.y"{	    VARIABLE->yyRelSeconds += yyvsp[-1].Number;	;    break;}case 35:#line 283 "..\..\common\getdate.y"{	    VARIABLE->yyRelSeconds++;	;    break;}case 36:#line 286 "..\..\common\getdate.y"{	    VARIABLE->yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number;	;    break;}case 37:#line 289 "..\..\common\getdate.y"{	    VARIABLE->yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number;	;    break;}case 38:#line 292 "..\..\common\getdate.y"{	    VARIABLE->yyRelMonth += yyvsp[0].Number;	;    break;}case 39:#line 297 "..\..\common\getdate.y"{	    if (VARIABLE->yyHaveTime && VARIABLE->yyHaveDate && !VARIABLE->yyHaveRel)		VARIABLE->yyYear = yyvsp[0].Number;	    else {		if(yyvsp[0].Number>10000) {		    VARIABLE->yyHaveDate++;		    VARIABLE->yyDay= (yyvsp[0].Number)%100;		    VARIABLE->yyMonth= (yyvsp[0].Number/100)%100;		    VARIABLE->yyYear = yyvsp[0].Number/10000;		}		else {		    VARIABLE->yyHaveTime++;		    if (yyvsp[0].Number < 100) {			VARIABLE->yyHour = yyvsp[0].Number;			VARIABLE->yyMinutes = 0;		    }		    else {		    	VARIABLE->yyHour = yyvsp[0].Number / 100;		    	VARIABLE->yyMinutes = yyvsp[0].Number % 100;		    }		    VARIABLE->yySeconds = 0;		    VARIABLE->yyMeridian = MER24;	        }	    }	;    break;}case 40:#line 324 "..\..\common\getdate.y"{	    yyval.Meridian = MER24;	;    break;}case 41:#line 327 "..\..\common\getdate.y"{	    yyval.Meridian = yyvsp[0].Meridian;	;    break;}}   /* the action file gets copied in in place of this dollarsign */#line 487 "bison.simple"  yyvsp -= yylen;  yyssp -= yylen;#ifdef YYLSP_NEEDED  yylsp -= yylen;#endif#if YYDEBUG != 0  if (yydebug)    {      short *ssp1 = yyss - 1;      fprintf (stderr, "state stack now");      while (ssp1 != yyssp)	fprintf (stderr, " %d", *++ssp1);      fprintf (stderr, "\n");    }#endif  *++yyvsp = yyval;#ifdef YYLSP_NEEDED  yylsp++;  if (yylen == 0)    {      yylsp->first_line = yylloc.first_line;      yylsp->first_column = yylloc.first_column;      yylsp->last_line = (yylsp-1)->last_line;      yylsp->last_column = (yylsp-1)->last_column;      yylsp->text = 0;    }  else    {      yylsp->last_line = (yylsp+yylen-1)->last_line;      yylsp->last_column = (yylsp+yylen-1)->last_column;    }#endif  /* Now "shift" the result of the reduction.     Determine what state that goes to,     based on the state we popped back to     and the rule number reduced by.  */  yyn = yyr1[yyn];  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)    yystate = yytable[yystate];  else    yystate = yydefgoto[yyn - YYNTBASE];  goto yynewstate;yyerrlab:   /* here on detecting error */  if (! yyerrstatus)    /* If not already recovering from an error, report this error.  */    {      ++yynerrs;#ifdef YYERROR_VERBOSE      yyn = yypact[yystate];      if (yyn > YYFLAG && yyn < YYLAST)	{	  int size = 0;	  char *msg;	  int x, count;	  count = 0;	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */	  for (x = (yyn < 0 ? -yyn : 0);	       x < (sizeof(yytname) / sizeof(char *)); x++)	    if (yycheck[x + yyn] == x)	      size += strlen(yytname[x]) + 15, count++;	  msg = (char *) malloc(size + 15);	  if (msg != 0)	    {	      strcpy(msg, "parse error");	      if (count < 5)		{		  count = 0;		  for (x = (yyn < 0 ? -yyn : 0);		       x < (sizeof(yytname) / sizeof(char *)); x++)		    if (yycheck[x + yyn] == x)		      {			strcat(msg, count == 0 ? ", expecting `" : " or `");			strcat(msg, yytname[x]);			strcat(msg, "'");			count++;		      }		}	      yyerror(msg);	      free(msg);	    }	  else	    yyerror ("parse error; also virtual memory exceeded");	}      else#endif /* YYERROR_VERBOSE */	yyerror("parse error");    }  goto yyerrlab1;yyerrlab1:   /* here on error raised explicitly by an action */  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)	YYABORT;#if YYDEBUG != 0      if (yydebug)	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);#endif      yychar = YYEMPTY;    }  /* Else will try to reuse lookahead token     after shifting the error token.  */  yyerrstatus = 3;		/* Each real token shifted decrements this */  goto yyerrhandle;yyerrdefault:  /* current state does not do anything special for the error token. */#if 0  /* This is wrong; only states that explicitly want error tokens     should shift them.  */  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/  if (yyn) goto yydefault;#endifyyerrpop:   /* pop the current state because it cannot handle the error token */  if (yyssp == yyss) YYABORT;  yyvsp--;  yystate = *--yyssp;#ifdef YYLSP_NEEDED  yylsp--;#endif#if YYDEBUG != 0  if (yydebug)    {      short *ssp1 = yyss - 1;      fprintf (stderr, "Error: state stack now");      while (ssp1 != yyssp)	fprintf (stderr, " %d", *++ssp1);      fprintf (stderr, "\n");    }#endifyyerrhandle:  yyn = yypact[yystate];  if (yyn == YYFLAG)    goto yyerrdefault;  yyn += YYTERROR;  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)    goto yyerrdefault;  yyn = yytable[yyn];  if (yyn < 0)    {      if (yyn == YYFLAG)	goto yyerrpop;      yyn = -yyn;      goto yyreduce;    }  else if (yyn == 0)    goto yyerrpop;  if (yyn == YYFINAL)    YYACCEPT;#if YYDEBUG != 0  if (yydebug)    fprintf(stderr, "Shifting error token, ");#endif  *++yyvsp = yylval;#ifdef YYLSP_NEEDED  *++yylsp = yylloc;#endif  yystate = yyn;  goto yynewstate;}#line 332 "..\..\common\getdate.y"/* Month and day table. */static TABLE const MonthDayTable[] = {    { "january",	tMONTH,  1 },    { "february",	tMONTH,  2 },    { "march",		tMONTH,  3 },    { "april",		tMONTH,  4 },    { "may",		tMONTH,  5 },    { "june",		tMONTH,  6 },    { "july",		tMONTH,  7 },    { "august",		tMONTH,  8 },    { "september",	tMONTH,  9 },    { "sept",		tMONTH,  9 },    { "october",	tMONTH, 10 },    { "november",	tMONTH, 11 },    { "december",	tMONTH, 12 },    { "sunday",		tDAY, 0 },    { "monday",		tDAY, 1 },    { "tuesday",	tDAY, 2 },    { "tues",		tDAY, 2 },    { "wednesday",	tDAY, 3 },    { "wednes",		tDAY, 3 },    { "thursday",	tDAY, 4 },    { "thur",		tDAY, 4 },    { "thurs",		tDAY, 4 },    { "friday",		tDAY, 5 },    { "saturday",	tDAY, 6 },    { NULL }};/* Time units table. */static TABLE const UnitsTable[] = {    { "year",		tMONTH_UNIT,	12 },    { "month",		tMONTH_UNIT,	1 },    { "fortnight",	tMINUTE_UNIT,	14 * 24 * 60 },    { "week",		tMINUTE_UNIT,	7 * 24 * 60 },    { "day",		tMINUTE_UNIT,	1 * 24 * 60 },    { "hour",		tMINUTE_UNIT,	60 },    { "minute",		tMINUTE_UNIT,	1 },    { "min",		tMINUTE_UNIT,	1 },    { "second",		tSEC_UNIT,	1 },    { "sec",		tSEC_UNIT,	1 },    { NULL }};/* Assorted relative-time words. */static TABLE const OtherTable[] = {    { "tomorrow",	tMINUTE_UNIT,	1 * 24 * 60 },    { "yesterday",	tMINUTE_UNIT,	-1 * 24 * 60 },    { "today",		tMINUTE_UNIT,	0 },    { "now",		tMINUTE_UNIT,	0 },    { "last",		tUNUMBER,	-1 },    { "this",		tMINUTE_UNIT,	0 },    { "next",		tUNUMBER,	2 },    { "first",		tUNUMBER,	1 },/*  { "second",		tUNUMBER,	2 }, */    { "third",		tUNUMBER,	3 },    { "fourth",		tUNUMBER,	4 },    { "fifth",		tUNUMBER,	5 },    { "sixth",		tUNUMBER,	6 },    { "seventh",	tUNUMBER,	7 },    { "eighth",		tUNUMBER,	8 },    { "ninth",		tUNUMBER,	9 },    { "tenth",		tUNUMBER,	10 },    { "eleventh",	tUNUMBER,	11 },    { "twelfth",	tUNUMBER,	12 },    { "ago",		tAGO,	1 },    { NULL }};/* The timezone table. *//* Some of these are commented out because a time_t can't store a float. */static TABLE const TimezoneTable[] = {    { "gmt",	tZONE,     HOUR( 0) },	/* Greenwich Mean */    { "ut",	tZONE,     HOUR( 0) },	/* Universal (Coordinated) */    { "utc",	tZONE,     HOUR( 0) },    { "wet",	tZONE,     HOUR( 0) },	/* Western European */    { "bst",	tDAYZONE,  HOUR( 0) },	/* British Summer */    { "wat",	tZONE,     HOUR( 1) },	/* West Africa */    { "at",	tZONE,     HOUR( 2) },	/* Azores */#if	0    /* For completeness.  BST is also British Summer, and GST is     * also Guam Standard. */    { "bst",	tZONE,     HOUR( 3) },	/* Brazil Standard */    { "gst",	tZONE,     HOUR( 3) },	/* Greenland Standard */#endif#if 0    { "nft",	tZONE,     HOUR(3.5) },	/* Newfoundland */    { "nst",	tZONE,     HOUR(3.5) },	/* Newfoundland Standard */    { "ndt",	tDAYZONE,  HOUR(3.5) },	/* Newfoundland Daylight */#endif    { "ast",	tZONE,     HOUR( 4) },	/* Atlantic Standard */    { "adt",	tDAYZONE,  HOUR( 4) },	/* Atlantic Daylight */    { "est",	tZONE,     HOUR( 5) },	/* Eastern Standard */    { "edt",	tDAYZONE,  HOUR( 5) },	/* Eastern Daylight */    { "cst",	tZONE,     HOUR( 6) },	/* Central Standard */    { "cdt",	tDAYZONE,  HOUR( 6) },	/* Central Daylight */    { "mst",	tZONE,     HOUR( 7) },	/* Mountain Standard */    { "mdt",	tDAYZONE,  HOUR( 7) },	/* Mountain Daylight */    { "pst",	tZONE,     HOUR( 8) },	/* Pacific Standard */    { "pdt",	tDAYZONE,  HOUR( 8) },	/* Pacific Daylight */    { "yst",	tZONE,     HOUR( 9) },	/* Yukon Standard */    { "ydt",	tDAYZONE,  HOUR( 9) },	/* Yukon Daylight */    { "hst",	tZONE,     HOUR(10) },	/* Hawaii Standard */    { "hdt",	tDAYZONE,  HOUR(10) },	/* Hawaii Daylight */    { "cat",	tZONE,     HOUR(10) },	/* Central Alaska */    { "ahst",	tZONE,     HOUR(10) },	/* Alaska-Hawaii Standard */    { "nt",	tZONE,     HOUR(11) },	/* Nome */    { "idlw",	tZONE,     HOUR(12) },	/* International Date Line West */    { "cet",	tZONE,     -HOUR(1) },	/* Central European */    { "met",	tZONE,     -HOUR(1) },	/* Middle European */    { "mewt",	tZONE,     -HOUR(1) },	/* Middle European Winter */    { "mest",	tDAYZONE,  -HOUR(1) },	/* Middle European Summer */    { "swt",	tZONE,     -HOUR(1) },	/* Swedish Winter */    { "sst",	tDAYZONE,  -HOUR(1) },	/* Swedish Summer */    { "fwt",	tZONE,     -HOUR(1) },	/* French Winter */    { "fst",	tDAYZONE,  -HOUR(1) },	/* French Summer */    { "eet",	tZONE,     -HOUR(2) },	/* Eastern Europe, USSR Zone 1 */    { "bt",	tZONE,     -HOUR(3) },	/* Baghdad, USSR Zone 2 */#if 0    { "it",	tZONE,     -HOUR(3.5) },/* Iran */#endif    { "zp4",	tZONE,     -HOUR(4) },	/* USSR Zone 3 */    { "zp5",	tZONE,     -HOUR(5) },	/* USSR Zone 4 */#if 0    { "ist",	tZONE,     -HOUR(5.5) },/* Indian Standard */#endif    { "zp6",	tZONE,     -HOUR(6) },	/* USSR Zone 5 */#if	0    /* For completeness.  NST is also Newfoundland Stanard, and SST is     * also Swedish Summer. */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -