亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? c-lex.c

?? gcc庫的原代碼,對編程有很大幫助.
?? C
?? 第 1 頁 / 共 4 頁
字號:
    case '_':    letter:      p = token_buffer;      while (isalnum (c) || c == '_' || c == '$' || c == '@')	{	  /* Make sure this char really belongs in an identifier.  */	  if (c == '@' && ! doing_objc_thang)	    break;	  if (c == '$' && ! dollars_in_ident)	    break;	  if (p >= token_buffer + maxtoken)	    p = extend_token_buffer (p);	  *p++ = c;	  c = getc (finput);	}      *p = 0;      nextchar = c;      value = IDENTIFIER;      yylval.itype = 0;      /* Try to recognize a keyword.  Uses minimum-perfect hash function */      {	register struct resword *ptr;	if (ptr = is_reserved_word (token_buffer, p - token_buffer))	  {	    if (ptr->rid)	      yylval.ttype = ridpointers[(int) ptr->rid];	    value = (int) ptr->token;	    /* Only return OBJECTNAME if it is a typedef.  */	    if (doing_objc_thang && value == OBJECTNAME)	      {		lastiddecl = lookup_name(yylval.ttype);		if (lastiddecl == NULL_TREE		    || TREE_CODE (lastiddecl) != TYPE_DECL)		  value = IDENTIFIER;	      }	    /* Even if we decided to recognize asm, still perhaps warn.  */	    if (pedantic		&& (value == ASM_KEYWORD || value == TYPEOF		    || ptr->rid == RID_INLINE)		&& token_buffer[0] != '_')	      pedwarn ("ANSI does not permit the keyword `%s'",		       token_buffer);	  }      }      /* If we did not find a keyword, look for an identifier	 (or a typename).  */      if (value == IDENTIFIER)	{ 	  if (token_buffer[0] == '@')	    error("invalid identifier `%s'", token_buffer);          yylval.ttype = get_identifier (token_buffer);	  lastiddecl = lookup_name (yylval.ttype);	  if (lastiddecl != 0 && TREE_CODE (lastiddecl) == TYPE_DECL)	    value = TYPENAME;	  /* A user-invisible read-only initialized variable	     should be replaced by its value.	     We handle only strings since that's the only case used in C.  */	  else if (lastiddecl != 0 && TREE_CODE (lastiddecl) == VAR_DECL		   && DECL_IGNORED_P (lastiddecl)		   && TREE_READONLY (lastiddecl)		   && DECL_INITIAL (lastiddecl) != 0		   && TREE_CODE (DECL_INITIAL (lastiddecl)) == STRING_CST)	    {	      tree stringval = DECL_INITIAL (lastiddecl);	      	      /* Copy the string value so that we won't clobber anything		 if we put something in the TREE_CHAIN of this one.  */	      yylval.ttype = build_string (TREE_STRING_LENGTH (stringval),					   TREE_STRING_POINTER (stringval));	      value = STRING;	    }          else if (doing_objc_thang)            {	      tree objc_interface_decl = is_class_name (yylval.ttype);	      if (objc_interface_decl)		{		  value = CLASSNAME;		  yylval.ttype = objc_interface_decl;		}	    }	}      break;    case '0':  case '1':  case '2':  case '3':  case '4':    case '5':  case '6':  case '7':  case '8':  case '9':    case '.':      {	int base = 10;	int count = 0;	int largest_digit = 0;	int numdigits = 0;	/* for multi-precision arithmetic,	   we actually store only HOST_BITS_PER_CHAR bits in each part.	   The number of parts is chosen so as to be sufficient to hold	   the enough bits to fit into the two HOST_WIDE_INTs that contain	   the integer value (this is always at least as many bits as are	   in a target `long long' value, but may be wider).  */#define TOTAL_PARTS ((HOST_BITS_PER_WIDE_INT / HOST_BITS_PER_CHAR) * 2 + 2)	int parts[TOTAL_PARTS];	int overflow = 0;	enum anon1 { NOT_FLOAT, AFTER_POINT, TOO_MANY_POINTS} floatflag	  = NOT_FLOAT;	for (count = 0; count < TOTAL_PARTS; count++)	  parts[count] = 0;	p = token_buffer;	*p++ = c;	if (c == '0')	  {	    *p++ = (c = getc (finput));	    if ((c == 'x') || (c == 'X'))	      {		base = 16;		*p++ = (c = getc (finput));	      }	    /* Leading 0 forces octal unless the 0 is the only digit.  */	    else if (c >= '0' && c <= '9')	      {		base = 8;		numdigits++;	      }	    else	      numdigits++;	  }	/* Read all the digits-and-decimal-points.  */	while (c == '.'	       || (isalnum (c) && c != 'l' && c != 'L'		   && c != 'u' && c != 'U'		   && c != 'i' && c != 'I' && c != 'j' && c != 'J'		   && (floatflag == NOT_FLOAT || ((c != 'f') && (c != 'F')))))	  {	    if (c == '.')	      {		if (base == 16)		  error ("floating constant may not be in radix 16");		if (floatflag == TOO_MANY_POINTS)		  /* We have already emitted an error.  Don't need another.  */		  ;		else if (floatflag == AFTER_POINT)		  {		    error ("malformed floating constant");		    floatflag = TOO_MANY_POINTS;		    /* Avoid another error from atof by forcing all characters		       from here on to be ignored.  */		    p[-1] = '\0';		  }		else		  floatflag = AFTER_POINT;		base = 10;		*p++ = c = getc (finput);		/* Accept '.' as the start of a floating-point number		   only when it is followed by a digit.		   Otherwise, unread the following non-digit		   and use the '.' as a structural token.  */		if (p == token_buffer + 2 && !isdigit (c))		  {		    if (c == '.')		      {			c = getc (finput);			if (c == '.')			  {			    *p++ = c;			    *p = 0;			    return ELLIPSIS;			  }			error ("parse error at `..'");		      }		    ungetc (c, finput);		    token_buffer[1] = 0;		    value = '.';		    goto done;		  }	      }	    else	      {		/* It is not a decimal point.		   It should be a digit (perhaps a hex digit).  */		if (isdigit (c))		  {		    c = c - '0';		  }		else if (base <= 10)		  {		    if (c == 'e' || c == 'E')		      {			base = 10;			floatflag = AFTER_POINT;			break;   /* start of exponent */		      }		    error ("nondigits in number and not hexadecimal");		    c = 0;		  }		else if (c >= 'a')		  {		    c = c - 'a' + 10;		  }		else		  {		    c = c - 'A' + 10;		  }		if (c >= largest_digit)		  largest_digit = c;		numdigits++;		for (count = 0; count < TOTAL_PARTS; count++)		  {		    parts[count] *= base;		    if (count)		      {			parts[count]			  += (parts[count-1] >> HOST_BITS_PER_CHAR);			parts[count-1]			  &= (1 << HOST_BITS_PER_CHAR) - 1;		      }		    else		      parts[0] += c;		  }		/* If the extra highest-order part ever gets anything in it,		   the number is certainly too big.  */		if (parts[TOTAL_PARTS - 1] != 0)		  overflow = 1;		if (p >= token_buffer + maxtoken - 3)		  p = extend_token_buffer (p);		*p++ = (c = getc (finput));	      }	  }	if (numdigits == 0)	  error ("numeric constant with no digits");	if (largest_digit >= base)	  error ("numeric constant contains digits beyond the radix");	/* Remove terminating char from the token buffer and delimit the string */	*--p = 0;	if (floatflag != NOT_FLOAT)	  {	    tree type = double_type_node;	    int garbage_chars = 0, exceeds_double = 0;	    int imag = 0;	    REAL_VALUE_TYPE value;	    jmp_buf handler;	    /* Read explicit exponent if any, and put it in tokenbuf.  */	    if ((c == 'e') || (c == 'E'))	      {		if (p >= token_buffer + maxtoken - 3)		  p = extend_token_buffer (p);		*p++ = c;		c = getc (finput);		if ((c == '+') || (c == '-'))		  {		    *p++ = c;		    c = getc (finput);		  }		if (! isdigit (c))		  error ("floating constant exponent has no digits");	        while (isdigit (c))		  {		    if (p >= token_buffer + maxtoken - 3)		      p = extend_token_buffer (p);		    *p++ = c;		    c = getc (finput);		  }	      }	    *p = 0;	    errno = 0;	    /* Convert string to a double, checking for overflow.  */	    if (setjmp (handler))	      {		error ("floating constant out of range");		value = dconst0;	      }	    else	      {		int fflag = 0, lflag = 0;		/* Copy token_buffer now, while it has just the number		   and not the suffixes; once we add `f' or `i',		   REAL_VALUE_ATOF may not work any more.  */		char *copy = (char *) alloca (p - token_buffer + 1);		bcopy (token_buffer, copy, p - token_buffer + 1);		set_float_handler (handler);		while (1)		  {		    int lose = 0;		    /* Read the suffixes to choose a data type.  */		    switch (c)		      {		      case 'f': case 'F':			if (fflag)			  error ("more than one `f' in numeric constant");			fflag = 1;			break;		      case 'l': case 'L':			if (lflag)			  error ("more than one `l' in numeric constant");			lflag = 1;			break;		      case 'i': case 'I':			if (imag)			  error ("more than one `i' or `j' in numeric constant");			else if (pedantic)			  pedwarn ("ANSI C forbids imaginary numeric constants");			imag = 1;			break;		      default:			lose = 1;		      }		    if (lose)		      break;		    if (p >= token_buffer + maxtoken - 3)		      p = extend_token_buffer (p);		    *p++ = c;		    *p = 0;		    c = getc (finput);		  }		/* The second argument, machine_mode, of REAL_VALUE_ATOF		   tells the desired precision of the binary result		   of decimal-to-binary conversion.  */		if (fflag)		  {		    if (lflag)		      error ("both `f' and `l' in floating constant");		    type = float_type_node;		    value = REAL_VALUE_ATOF (copy, TYPE_MODE (type));		    /* A diagnostic is required here by some ANSI C testsuites.		       This is not pedwarn, become some people don't want		       an error for this.  */		    if (REAL_VALUE_ISINF (value) && pedantic)		      warning ("floating point number exceeds range of `float'");		  }		else if (lflag)		  {		    type = long_double_type_node;		    value = REAL_VALUE_ATOF (copy, TYPE_MODE (type));		    if (REAL_VALUE_ISINF (value) && pedantic)		      warning ("floating point number exceeds range of `long double'");		  }		else		  {		    value = REAL_VALUE_ATOF (copy, TYPE_MODE (type));		    if (REAL_VALUE_ISINF (value) && pedantic)		      warning ("floating point number exceeds range of `double'");		  }		set_float_handler (NULL_PTR);	    }#ifdef ERANGE	    if (errno == ERANGE && !flag_traditional && pedantic)	      {  		/* ERANGE is also reported for underflow,  		   so test the value to distinguish overflow from that.  */		if (REAL_VALUES_LESS (dconst1, value)		    || REAL_VALUES_LESS (value, dconstm1))		  {		    warning ("floating point number exceeds range of `double'");		    exceeds_double = 1;		  }	      }#endif	    garbage_chars = 0;	    while (isalnum (c) || c == '.' || c == '_'		   || (!flag_traditional && (c == '+' || c == '-')		       && (p[-1] == 'e' || p[-1] == 'E')))	      {		if (p >= token_buffer + maxtoken - 3)		  p = extend_token_buffer (p);		*p++ = c;		c = getc (finput);		garbage_chars++;	      }	    if (garbage_chars > 0)	      error ("garbage at end of number");	    /* If the result is not a number, assume it must have been	       due to some error message above, so silently convert	       it to a zero.  */	    if (REAL_VALUE_ISNAN (value))	      value = dconst0;	    /* Create a node with determined type and value.  */	    if (imag)	      yylval.ttype = build_complex (convert (type, integer_zero_node),					    build_real (type, value));	    else	      yylval.ttype = build_real (type, value);	    ungetc (c, finput);	    *p = 0;	  }	else	  {	    tree traditional_type, ansi_type, type;	    HOST_WIDE_INT high, low;	    int spec_unsigned = 0;	    int spec_long = 0;	    int spec_long_long = 0;	    int spec_imag = 0;	    int bytes, warn, i;	    while (1)	      {		if (c == 'u' || c == 'U')		  {		    if (spec_unsigned)		      error ("two `u's in integer constant");		    spec_unsigned = 1;		  }		else if (c == 'l' || c == 'L')		  {		    if (spec_long)		      {			if (spec_long_long)			  error ("three `l's in integer constant");			else if (pedantic)			  pedwarn ("ANSI C forbids long long integer constants");			spec_long_long = 1;		      }		    spec_long = 1;		  }		else if (c == 'i' || c == 'j' || c == 'I' || c == 'J')		  {		    if (spec_imag)		      error ("more than one `i' or `j' in numeric constant");		    else if (pedantic)		      pedwarn ("ANSI C forbids imaginary numeric constants");		    spec_imag = 1;		  }		else		  {		    if (isalnum (c) || c == '.' || c == '_'			|| (!flag_traditional && (c == '+' || c == '-')			    && (p[-1] == 'e' || p[-1] == 'E')))		      {			error ("garbage at end of number");			while (isalnum (c) || c == '.' || c == '_'			       || (!flag_traditional && (c == '+' || c == '-')				   && (p[-1] == 'e' || p[-1] == 'E')))			  {			    if (p >= token_buffer + maxtoken - 3)			      p = extend_token_buffer (p);			    *p++ = c;			    c = getc (finput);			  }		      }		    break;		  }		if (p >= token_buffer + maxtoken - 3)		  p = extend_token_buffer (p);		*p++ = c;		c = getc (finput);	      }	    ungetc (c, finput);	    /* If the constant is not long long and it won't fit in an	       unsigned long, or if the constant is long long and won't fit	       in an unsigned long long, then warn that the constant is out	       of range.  */	    /* ??? This assumes that long long and long integer types are	       a multiple of 8 bits.  This better than the original code	       though which assumed that long was exactly 32 bits and long	       long was exactly 64 bits.  */	    if (spec_long_long)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
高清不卡一二三区| 欧美色图天堂网| 丝袜美腿亚洲色图| 日本一区二区三区四区在线视频| 色呦呦国产精品| 加勒比av一区二区| 亚洲国产成人va在线观看天堂| 久久久不卡影院| 欧美日韩免费观看一区二区三区 | 免费人成在线不卡| 国产精品国产三级国产aⅴ入口| 日韩亚洲欧美成人一区| 一本在线高清不卡dvd| 国产精品一区二区在线看| 日韩综合在线视频| 亚洲一区免费视频| 亚洲视频在线观看三级| 国产午夜精品在线观看| 欧美成人综合网站| 4438亚洲最大| 欧美综合欧美视频| 91丝袜国产在线播放| 成人一区在线看| 国内精品写真在线观看| 免费在线观看视频一区| 午夜视黄欧洲亚洲| 亚洲午夜免费视频| 樱桃视频在线观看一区| 日韩美女精品在线| 国产精品伦理在线| 亚洲国产精品精华液2区45| 日韩精品一区二区三区中文不卡| 在线播放欧美女士性生活| 欧美无砖专区一中文字| 色综合久久天天综合网| 51精品国自产在线| 欧美日韩成人在线| 69久久夜色精品国产69蝌蚪网| 欧美日韩在线精品一区二区三区激情| 色婷婷av一区二区| 欧美午夜一区二区三区| 一本到不卡精品视频在线观看| 不卡一区二区中文字幕| 波多野结衣欧美| 99视频有精品| 在线免费视频一区二区| 欧美日韩在线播放三区| 3d成人动漫网站| 91精品国产色综合久久不卡蜜臀| 欧美一区三区四区| 欧美刺激脚交jootjob| 久久久久久免费毛片精品| 国产午夜精品福利| 国产精品视频线看| 一级做a爱片久久| 偷拍一区二区三区四区| 蜜臀精品一区二区三区在线观看| 捆绑变态av一区二区三区| 国内精品伊人久久久久av影院| 国产高清精品在线| 99免费精品在线| 在线免费观看视频一区| 欧美一区二区视频免费观看| 26uuu亚洲| 亚洲国产精品成人综合| 亚洲精品一二三| www.一区二区| 91福利社在线观看| 6080午夜不卡| 久久一二三国产| 亚洲你懂的在线视频| 日韩精品亚洲一区| 国产久卡久卡久卡久卡视频精品| 99久久精品一区| 欧美日韩专区在线| 精品免费日韩av| 国产精品久久99| 日韩成人午夜精品| 成人激情午夜影院| 91精品啪在线观看国产60岁| 国产午夜精品久久| 亚洲高清免费观看 | 1000部国产精品成人观看| 亚洲国产精品一区二区www| 久久国产婷婷国产香蕉| 99国产精品久久久久久久久久| 欧美三级午夜理伦三级中视频| 亚洲精品一区二区三区福利| 亚洲桃色在线一区| 日本视频一区二区三区| www.在线欧美| 精品国产乱码久久久久久闺蜜 | 亚洲精品欧美激情| 国产一区视频网站| 欧美精品v日韩精品v韩国精品v| 欧美激情综合五月色丁香小说| 婷婷国产在线综合| 91麻豆免费观看| 精品国产一二三区| 亚洲国产日韩一级| 欧美日韩大陆一区二区| 自拍偷拍亚洲激情| 国产原创一区二区| 欧美精品色综合| 成人欧美一区二区三区白人| 久久99热99| 欧美日韩一区二区欧美激情| 中文字幕免费一区| 极品少妇xxxx偷拍精品少妇| 欧美日韩亚洲国产综合| 最新热久久免费视频| 国产在线看一区| 91精品国产一区二区三区香蕉| 亚洲男人天堂av网| 成人精品鲁一区一区二区| 精品入口麻豆88视频| 视频一区视频二区中文| 一本久久a久久精品亚洲| 国产午夜精品福利| 国产精品综合久久| 日韩欧美不卡在线观看视频| 午夜精品久久久久影视| 色一区在线观看| 亚洲丝袜自拍清纯另类| 岛国av在线一区| 日本一区二区三区四区在线视频 | 欧美成人官网二区| 偷窥少妇高潮呻吟av久久免费 | 精品黑人一区二区三区久久| 日韩在线一二三区| 欧美日韩高清影院| 午夜av一区二区三区| 欧美日韩一区在线观看| 亚洲第一成人在线| 亚洲欧洲成人精品av97| 国产盗摄视频一区二区三区| 国产婷婷色一区二区三区四区| 国产精品一区二区三区四区| 久久精品一级爱片| 成人亚洲精品久久久久软件| 久久久精品蜜桃| 成人一级视频在线观看| 国产精品狼人久久影院观看方式| 豆国产96在线|亚洲| 国产精品国产精品国产专区不蜜| jlzzjlzz亚洲女人18| 中文字幕五月欧美| 日本道色综合久久| 亚洲大片一区二区三区| 欧美一级淫片007| 精品无人码麻豆乱码1区2区 | 成人免费黄色大片| 自拍偷在线精品自拍偷无码专区| 91蝌蚪porny| 亚洲国产精品久久人人爱蜜臀| 91精品啪在线观看国产60岁| 久久精品国产一区二区| 欧美大片一区二区三区| 丝袜诱惑制服诱惑色一区在线观看| 91欧美一区二区| 一区二区三区久久| 欧美视频日韩视频| 一区二区三区在线视频观看58 | 日韩在线卡一卡二| 欧美成人艳星乳罩| 国产福利视频一区二区三区| 综合久久一区二区三区| 欧美无砖专区一中文字| 韩国v欧美v日本v亚洲v| 国产精品家庭影院| 欧美丰满一区二区免费视频| 精品一二三四区| 国产精品福利影院| 欧美精三区欧美精三区| 风流少妇一区二区| 午夜久久久影院| 欧美国产激情一区二区三区蜜月| 色94色欧美sute亚洲13| 久久丁香综合五月国产三级网站| 国产精品久久久久久久久免费丝袜 | 国产在线播放一区三区四| 亚洲婷婷国产精品电影人久久| 欧美日韩综合在线免费观看| 国产一区二区0| 一区二区国产盗摄色噜噜| 日韩视频免费观看高清完整版 | 色婷婷精品久久二区二区蜜臀av| 日本成人在线看| 国产精品免费视频网站| 91精品国产一区二区三区| 懂色av中文一区二区三区| 亚洲国产精品久久久久秋霞影院 | 99精品桃花视频在线观看| 美女脱光内衣内裤视频久久网站| 欧美极品xxx| 日韩欧美国产电影| 日本道色综合久久| 国产成人精品影视| 日韩精品视频网站| 亚洲综合男人的天堂|