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

📄 parsedate.c

📁 php-4.4.7学习linux时下载的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
#  undef YYSTACK_RELOCATE	if (yyss1 != yyssa)	  YYSTACK_FREE (yyss1);      }# endif#endif /* no yyoverflow */      yyssp = yyss + yysize - 1;      yyvsp = yyvs + yysize - 1;      YYDPRINTF ((stderr, "Stack size increased to %lu\n",		  (unsigned long int) yystacksize));      if (yyss + yystacksize - 1 <= yyssp)	YYABORT;    }  YYDPRINTF ((stderr, "Entering state %d\n", yystate));  goto yybackup;/*-----------.| yybackup.  |`-----------*/yybackup:  /* Do appropriate processing given the current state.  Read a     look-ahead token if we need one and don't already have one.  */  /* First try to decide what to do without reference to look-ahead token.  */  yyn = yypact[yystate];  if (yyn == YYPACT_NINF)    goto yydefault;  /* Not known => get a look-ahead token if don't already have one.  */  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */  if (yychar == YYEMPTY)    {      YYDPRINTF ((stderr, "Reading a token: "));      yychar = YYLEX;    }  if (yychar <= YYEOF)    {      yychar = yytoken = YYEOF;      YYDPRINTF ((stderr, "Now at end of input.\n"));    }  else    {      yytoken = YYTRANSLATE (yychar);      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);    }  /* If the proper action on seeing token YYTOKEN is to reduce or to     detect an error, take that action.  */  yyn += yytoken;  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)    goto yydefault;  yyn = yytable[yyn];  if (yyn <= 0)    {      if (yyn == 0 || yyn == YYTABLE_NINF)	goto yyerrlab;      yyn = -yyn;      goto yyreduce;    }  if (yyn == YYFINAL)    YYACCEPT;  /* Count tokens shifted since error; after three, turn off error     status.  */  if (yyerrstatus)    yyerrstatus--;  /* Shift the look-ahead token.  */  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);  /* Discard the shifted token unless it is eof.  */  if (yychar != YYEOF)    yychar = YYEMPTY;  yystate = yyn;  *++yyvsp = yylval;  goto yynewstate;/*-----------------------------------------------------------.| yydefault -- do the default action for the current state.  |`-----------------------------------------------------------*/yydefault:  yyn = yydefact[yystate];  if (yyn == 0)    goto yyerrlab;  goto yyreduce;/*-----------------------------.| yyreduce -- Do a reduction.  |`-----------------------------*/yyreduce:  /* yyn is the number of a rule to reduce with.  */  yylen = yyr2[yyn];  /* If YYLEN is nonzero, implement the default value of the action:     `$$ = $1'.     Otherwise, the following line sets YYVAL to garbage.     This behavior is undocumented and Bison     users should not rely upon it.  Assigning to YYVAL     unconditionally makes the parser a bit smaller, and it avoids a     GCC warning that YYVAL may be used uninitialized.  */  yyval = yyvsp[1-yylen];  YY_REDUCE_PRINT (yyn);  switch (yyn)    {        case 4:    {	    ((struct date_yy *)parm)->yyHaveTime++;	}    break;  case 5:    {	    ((struct date_yy *)parm)->yyHaveZone++;	}    break;  case 6:    {	    ((struct date_yy *)parm)->yyHaveDate++;	}    break;  case 7:    {	    ((struct date_yy *)parm)->yyHaveDay++;	}    break;  case 8:    {	    ((struct date_yy *)parm)->yyHaveRel++;	}    break;  case 10:    {	    ((struct date_yy *)parm)->yyHour = (yyvsp[(1) - (2)].Number);	    ((struct date_yy *)parm)->yyMinutes = 0;	    ((struct date_yy *)parm)->yySeconds = 0;	    ((struct date_yy *)parm)->yyMeridian = (yyvsp[(2) - (2)].Meridian);#ifdef PHP_DEBUG_PARSE_DATE_PARSER		printf("[U M]\n");#endif	}    break;  case 11:    {	    ((struct date_yy *)parm)->yyHour = (yyvsp[(1) - (4)].Number);	    ((struct date_yy *)parm)->yyMinutes = (yyvsp[(3) - (4)].Number);	    ((struct date_yy *)parm)->yySeconds = 0;	    ((struct date_yy *)parm)->yyMeridian = (yyvsp[(4) - (4)].Meridian);#ifdef PHP_DEBUG_PARSE_DATE_PARSER		printf("[U:U M]\n");#endif	}    break;  case 12:    {	    ((struct date_yy *)parm)->yyHour = (yyvsp[(1) - (4)].Number);	    ((struct date_yy *)parm)->yyMinutes = (yyvsp[(3) - (4)].Number);	    ((struct date_yy *)parm)->yyMeridian = MER24;#ifdef PHP_DEBUG_PARSE_DATE_PARSER		printf("[U:U rel]\n");#endif	}    break;  case 13:    {	    ((struct date_yy *)parm)->yyHour = (yyvsp[(1) - (4)].Number);	    ((struct date_yy *)parm)->yyMinutes = (yyvsp[(3) - (4)].Number);	    ((struct date_yy *)parm)->yyMeridian = MER24;	    ((struct date_yy *)parm)->yyHaveZone++;	    ((struct date_yy *)parm)->yyTimezone = ((yyvsp[(4) - (4)].Number) < 0			  ? -(yyvsp[(4) - (4)].Number) % 100 + (-(yyvsp[(4) - (4)].Number) / 100) * 60			  : - ((yyvsp[(4) - (4)].Number) % 100 + ((yyvsp[(4) - (4)].Number) / 100) * 60));#ifdef PHP_DEBUG_PARSE_DATE_PARSER		printf("[U:U S]\n");#endif	}    break;  case 14:    {	    ((struct date_yy *)parm)->yyHour = (yyvsp[(1) - (6)].Number);	    ((struct date_yy *)parm)->yyMinutes = (yyvsp[(3) - (6)].Number);	    ((struct date_yy *)parm)->yySeconds = (yyvsp[(5) - (6)].Number);	    ((struct date_yy *)parm)->yyMeridian = (yyvsp[(6) - (6)].Meridian);#ifdef PHP_DEBUG_PARSE_DATE_PARSER		printf("[U:U:U M]\n");#endif	}    break;  case 15:    {	    /* ISO 8601 format.  hh:mm:ss[+-][0-9]{2}([0-9]{2})?.  */	    ((struct date_yy *)parm)->yyHour = (yyvsp[(1) - (6)].Number);	    ((struct date_yy *)parm)->yyMinutes = (yyvsp[(3) - (6)].Number);	    ((struct date_yy *)parm)->yySeconds = (yyvsp[(5) - (6)].Number);#ifdef PHP_DEBUG_PARSE_DATE_PARSER		printf("[U:U:U rel]\n");#endif	}    break;  case 16:    {	    /* ISO 8601 format.  hh:mm:ss[+-][0-9]{2}([0-9]{2})?.  */	    ((struct date_yy *)parm)->yyHour = (yyvsp[(1) - (6)].Number);	    ((struct date_yy *)parm)->yyMinutes = (yyvsp[(3) - (6)].Number);	    ((struct date_yy *)parm)->yySeconds = (yyvsp[(5) - (6)].Number);	    ((struct date_yy *)parm)->yyMeridian = MER24;	    ((struct date_yy *)parm)->yyHaveZone++;		if ((yyvsp[(6) - (6)].Number) <= -100 || (yyvsp[(6) - (6)].Number) >= 100) {			((struct date_yy *)parm)->yyTimezone =  				-(yyvsp[(6) - (6)].Number) % 100 + (-(yyvsp[(6) - (6)].Number) / 100) * 60;		} else {			((struct date_yy *)parm)->yyTimezone =  -(yyvsp[(6) - (6)].Number) * 60;		}#ifdef PHP_DEBUG_PARSE_DATE_PARSER		printf("[U:U:U S]\n");#endif	}    break;  case 17:    {	    ((struct date_yy *)parm)->yyTimezone = (yyvsp[(1) - (1)].Number);	}    break;  case 18:    {	    ((struct date_yy *)parm)->yyTimezone = (yyvsp[(1) - (1)].Number) - 60;	}    break;  case 19:    {	    ((struct date_yy *)parm)->yyTimezone = (yyvsp[(1) - (2)].Number) - 60;	}    break;  case 20:    {	    ((struct date_yy *)parm)->yyDayOrdinal = 1;	    ((struct date_yy *)parm)->yyDayNumber = (yyvsp[(1) - (1)].Number);	}    break;  case 21:    {	    ((struct date_yy *)parm)->yyDayOrdinal = 1;	    ((struct date_yy *)parm)->yyDayNumber = (yyvsp[(1) - (2)].Number);	}    break;  case 22:    {	    ((struct date_yy *)parm)->yyDayOrdinal = (yyvsp[(1) - (2)].Number);	    ((struct date_yy *)parm)->yyDayNumber = (yyvsp[(2) - (2)].Number);	}    break;  case 23:    {	    ((struct date_yy *)parm)->yyMonth = (yyvsp[(1) - (3)].Number);	    ((struct date_yy *)parm)->yyDay = (yyvsp[(3) - (3)].Number);	}    break;  case 24:    {		((struct date_yy *)parm)->yyYear = (yyvsp[(8) - (8)].Number);		((struct date_yy *)parm)->yyMonth = (yyvsp[(1) - (8)].Number);		((struct date_yy *)parm)->yyDay = (yyvsp[(2) - (8)].Number);		((struct date_yy *)parm)->yyHour = (yyvsp[(3) - (8)].Number);		((struct date_yy *)parm)->yyMinutes = (yyvsp[(5) - (8)].Number);		((struct date_yy *)parm)->yySeconds = (yyvsp[(7) - (8)].Number);		((struct date_yy *)parm)->yyHaveTime = 1;	}    break;  case 25:    {	  /* Interpret as YYYY/MM/DD if $1 >= 1000, otherwise as MM/DD/YY.	     The goal in recognizing YYYY/MM/DD is solely to support legacy	     machine-generated dates like those in an RCS log listing.  If	     you want portability, use the ISO 8601 format.  */	  if ((yyvsp[(1) - (5)].Number) >= 1000)	    {	      ((struct date_yy *)parm)->yyYear = (yyvsp[(1) - (5)].Number);	      ((struct date_yy *)parm)->yyMonth = (yyvsp[(3) - (5)].Number);	      ((struct date_yy *)parm)->yyDay = (yyvsp[(5) - (5)].Number);	    }	  else	    {	      ((struct date_yy *)parm)->yyMonth = (yyvsp[(1) - (5)].Number);	      ((struct date_yy *)parm)->yyDay = (yyvsp[(3) - (5)].Number);	      ((struct date_yy *)parm)->yyYear = (yyvsp[(5) - (5)].Number);	    }	}    break;  case 26:    {	    /* ISO 8601 format.  yyyy-mm-dd.  */	    ((struct date_yy *)parm)->yyYear = (yyvsp[(1) - (3)].Number);	    ((struct date_yy *)parm)->yyMonth = -(yyvsp[(2) - (3)].Number);	    ((struct date_yy *)parm)->yyDay = -(yyvsp[(3) - (3)].Number);	}    break;  case 27:    {	    /* e.g. 17-JUN-1992.  */	    ((struct date_yy *)parm)->yyDay = (yyvsp[(1) - (3)].Number);	    ((struct date_yy *)parm)->yyMonth = (yyvsp[(2) - (3)].Number);	    ((struct date_yy *)parm)->yyYear = -(yyvsp[(3) - (3)].Number);	}    break;  case 28:    {	    ((struct date_yy *)parm)->yyMonth = (yyvsp[(1) - (3)].Number);	    ((struct date_yy *)parm)->yyDay = (yyvsp[(2) - (3)].Number);		((struct date_yy *)parm)->yyYear = (yyvsp[(3) - (3)].Number);	}    break;  case 29:    {	    ((struct date_yy *)parm)->yyMonth = (yyvsp[(1) - (2)].Number);	    if ((yyvsp[(2) - (2)].Number) > 1000) {		((struct date_yy *)parm)->yyYear = (yyvsp[(2) - (2)].Number);	    } else {		((struct date_yy *)parm)->yyDay = (yyvsp[(2) - (2)].Number);	    }	}    break;  case 30:    {	    ((struct date_yy *)parm)->yyMonth = (yyvsp[(1) - (4)].Number);	    ((struct date_yy *)parm)->yyDay = (yyvsp[(2) - (4)].Number);	    ((struct date_yy *)parm)->yyYear = (yyvsp[(4) - (4)].Number);	}    break;  case 31:    {	    ((struct date_yy *)parm)->yyMonth = (yyvsp[(2) - (2)].Number);	    if ((yyvsp[(1) - (2)].Number) > 1000) {		((struct date_yy *)parm)->yyYear = (yyvsp[(1) - (2)].Number);	    } else {		((struct date_yy *)parm)->yyDay = (yyvsp[(1) - (2)].Number);	    }	}    break;  case 32:    {	    ((struct date_yy *)parm)->yyMonth = (yyvsp[(2) - (3)].Number);	    ((struct date_yy *)parm)->yyDay = (yyvsp[(1) - (3)].Number);	    ((struct date_yy *)parm)->yyYear = (yyvsp[(3) - (3)].Number);	}    break;  case 33:    {	    ((struct date_yy *)parm)->yyRelSeconds =			-((struct date_yy *)parm)->yyRelSeconds;	    ((struct date_yy *)parm)->yyRelMinutes =			-((struct date_yy *)parm)->yyRelMinutes;	    ((struct date_yy *)parm)->yyRelHour =			-((struct date_yy *)parm)->yyRelHour;	    ((struct date_yy *)parm)->yyRelDay =			-((struct date_yy *)parm)->yyRelDay;	    ((struct date_yy *)parm)->yyRelMonth =			-((struct date_yy *)parm)->yyRelMonth;	    ((struct date_yy *)parm)->yyRelYear =			-((struct date_yy *)parm)->yyRelYear;	}    break;  case 35:    {	    ((struct date_yy *)parm)->yyRelYear += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);	}    break;  case 36:    {	    ((struct date_yy *)parm)->yyRelYear += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);	}    break;  case 37:    {	    ((struct date_yy *)parm)->yyRelYear += (yyvsp[(1) - (1)].Number);	}    break;  case 38:    {	    ((struct date_yy *)parm)->yyRelMonth += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);	}    break;  case 39:    {	    ((struct date_yy *)parm)->yyRelMonth += (yyvsp[(1) - (2)].Number) * (yyvsp[(2) - (2)].Number);	}    break;  case 40:    {	    ((struct date_yy *)parm)->yyRelMonth += (yyvsp[(1) - (1)].Number);	}

⌨️ 快捷键说明

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