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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? c-parse.y

?? GCC編譯器源代碼
?? Y
?? 第 1 頁 / 共 5 頁
字號:
		{ pedwarn ("empty declaration"); }	| extension decl		{ pedantic = $<itype>1; }	;/* Declspecs which contain at least one type specifier or typedef name.   (Just `const' or `volatile' is not enough.)   A typedef'd name following these is taken as a name to be declared.   Declspecs have a non-NULL TREE_VALUE, attributes do not.  */typed_declspecs:	  typespec reserved_declspecs		{ $$ = tree_cons (NULL_TREE, $1, $2); }	| declmods typespec reserved_declspecs		{ $$ = chainon ($3, tree_cons (NULL_TREE, $2, $1)); }	;reserved_declspecs:  /* empty */		{ $$ = NULL_TREE; }	| reserved_declspecs typespecqual_reserved		{ $$ = tree_cons (NULL_TREE, $2, $1); }	| reserved_declspecs SCSPEC		{ if (extra_warnings)		    warning ("`%s' is not at beginning of declaration",			     IDENTIFIER_POINTER ($2));		  $$ = tree_cons (NULL_TREE, $2, $1); }	| reserved_declspecs attributes		{ $$ = tree_cons ($2, NULL_TREE, $1); }	;typed_declspecs_no_prefix_attr:	  typespec reserved_declspecs_no_prefix_attr		{ $$ = tree_cons (NULL_TREE, $1, $2); }	| declmods_no_prefix_attr typespec reserved_declspecs_no_prefix_attr		{ $$ = chainon ($3, tree_cons (NULL_TREE, $2, $1)); }	;reserved_declspecs_no_prefix_attr:	  /* empty */		{ $$ = NULL_TREE; }	| reserved_declspecs_no_prefix_attr typespecqual_reserved		{ $$ = tree_cons (NULL_TREE, $2, $1); }	| reserved_declspecs_no_prefix_attr SCSPEC		{ if (extra_warnings)		    warning ("`%s' is not at beginning of declaration",			     IDENTIFIER_POINTER ($2));		  $$ = tree_cons (NULL_TREE, $2, $1); }	;/* List of just storage classes, type modifiers, and prefix attributes.   A declaration can start with just this, but then it cannot be used   to redeclare a typedef-name.   Declspecs have a non-NULL TREE_VALUE, attributes do not.  */declmods:	  declmods_no_prefix_attr		{ $$ = $1; }	| attributes		{ $$ = tree_cons ($1, NULL_TREE, NULL_TREE); }	| declmods declmods_no_prefix_attr		{ $$ = chainon ($2, $1); }	| declmods attributes		{ $$ = tree_cons ($2, NULL_TREE, $1); }	;declmods_no_prefix_attr:	  TYPE_QUAL		{ $$ = tree_cons (NULL_TREE, $1, NULL_TREE);		  TREE_STATIC ($$) = 1; }	| SCSPEC		{ $$ = tree_cons (NULL_TREE, $1, NULL_TREE); }	| declmods_no_prefix_attr TYPE_QUAL		{ $$ = tree_cons (NULL_TREE, $2, $1);		  TREE_STATIC ($$) = 1; }	| declmods_no_prefix_attr SCSPEC		{ if (extra_warnings && TREE_STATIC ($1))		    warning ("`%s' is not at beginning of declaration",			     IDENTIFIER_POINTER ($2));		  $$ = tree_cons (NULL_TREE, $2, $1);		  TREE_STATIC ($$) = TREE_STATIC ($1); }	;/* Used instead of declspecs where storage classes are not allowed   (that is, for typenames and structure components).   Don't accept a typedef-name if anything but a modifier precedes it.  */typed_typespecs:	  typespec reserved_typespecquals		{ $$ = tree_cons (NULL_TREE, $1, $2); }	| nonempty_type_quals typespec reserved_typespecquals		{ $$ = chainon ($3, tree_cons (NULL_TREE, $2, $1)); }	;reserved_typespecquals:  /* empty */		{ $$ = NULL_TREE; }	| reserved_typespecquals typespecqual_reserved		{ $$ = tree_cons (NULL_TREE, $2, $1); }	;/* A typespec (but not a type qualifier).   Once we have seen one of these in a declaration,   if a typedef name appears then it is being redeclared.  */typespec: TYPESPEC	| structsp	| TYPENAME		{ /* For a typedef name, record the meaning, not the name.		     In case of `foo foo, bar;'.  */		  $$ = lookup_name ($1); }	| TYPEOF '(' expr ')'		{ $$ = TREE_TYPE ($3); }	| TYPEOF '(' typename ')'		{ $$ = groktypename ($3); }	;/* A typespec that is a reserved word, or a type qualifier.  */typespecqual_reserved: TYPESPEC	| TYPE_QUAL	| structsp	;initdecls:	initdcl	| initdecls ',' initdcl	;notype_initdecls:	notype_initdcl	| notype_initdecls ',' initdcl	;maybeasm:	  /* empty */		{ $$ = NULL_TREE; }	| ASM_KEYWORD '(' string ')'		{ if (TREE_CHAIN ($3)) $3 = combine_strings ($3);		  $$ = $3;		}	;initdcl:	  declarator maybeasm maybe_attribute '='		{ $<ttype>$ = start_decl ($1, current_declspecs, 1,					  $3, prefix_attributes);		  start_init ($<ttype>$, $2, global_bindings_p ()); }	  init/* Note how the declaration of the variable is in effect while its init is parsed! */		{ finish_init ();		  finish_decl ($<ttype>5, $6, $2); }	| declarator maybeasm maybe_attribute		{ tree d = start_decl ($1, current_declspecs, 0,				       $3, prefix_attributes);		  finish_decl (d, NULL_TREE, $2);                 }	;notype_initdcl:	  notype_declarator maybeasm maybe_attribute '='		{ $<ttype>$ = start_decl ($1, current_declspecs, 1,					  $3, prefix_attributes);		  start_init ($<ttype>$, $2, global_bindings_p ()); }	  init/* Note how the declaration of the variable is in effect while its init is parsed! */		{ finish_init ();		  decl_attributes ($<ttype>5, $3, prefix_attributes);		  finish_decl ($<ttype>5, $6, $2); }	| notype_declarator maybeasm maybe_attribute		{ tree d = start_decl ($1, current_declspecs, 0,				       $3, prefix_attributes);		  finish_decl (d, NULL_TREE, $2); }	;/* the * rules are dummies to accept the Apollo extended syntax   so that the header files compile. */maybe_attribute:      /* empty */  		{ $$ = NULL_TREE; }	| attributes		{ $$ = $1; }	; attributes:      attribute		{ $$ = $1; }	| attributes attribute		{ $$ = chainon ($1, $2); }	;attribute:      ATTRIBUTE '(' '(' attribute_list ')' ')'		{ $$ = $4; }	;attribute_list:      attrib		{ $$ = $1; }	| attribute_list ',' attrib		{ $$ = chainon ($1, $3); }	; attrib:    /* empty */		{ $$ = NULL_TREE; }	| any_word		{ $$ = build_tree_list ($1, NULL_TREE); }	| any_word '(' IDENTIFIER ')'		{ $$ = build_tree_list ($1, build_tree_list (NULL_TREE, $3)); }	| any_word '(' IDENTIFIER ',' nonnull_exprlist ')'		{ $$ = build_tree_list ($1, tree_cons (NULL_TREE, $3, $5)); }	| any_word '(' exprlist ')'		{ $$ = build_tree_list ($1, $3); }	;/* This still leaves out most reserved keywords,   shouldn't we include them?  */any_word:	  identifier	| SCSPEC	| TYPESPEC	| TYPE_QUAL	;/* Initializers.  `init' is the entry point.  */init:	expr_no_commas	| '{'		{ really_start_incremental_init (NULL_TREE);		  /* Note that the call to clear_momentary		     is in process_init_element.  */		  push_momentary (); }	  initlist_maybe_comma '}'		{ $$ = pop_init_level (0);		  if ($$ == error_mark_node		      && ! (yychar == STRING || yychar == CONSTANT))		    pop_momentary ();		  else		    pop_momentary_nofree (); }	| error		{ $$ = error_mark_node; }	;/* `initlist_maybe_comma' is the guts of an initializer in braces.  */initlist_maybe_comma:	  /* empty */		{ if (pedantic)		    pedwarn ("ANSI C forbids empty initializer braces"); }	| initlist1 maybecomma	;initlist1:	  initelt	| initlist1 ',' initelt	;/* `initelt' is a single element of an initializer.   It may use braces.  */initelt:	expr_no_commas		{ process_init_element ($1); }	| '{' 		{ push_init_level (0); }	  initlist_maybe_comma '}'		{ process_init_element (pop_init_level (0)); }	| error	/* These are for labeled elements.  The syntax for an array element	   initializer conflicts with the syntax for an Objective-C message,	   so don't include these productions in the Objective-C grammar.  */	| '[' expr_no_commas ELLIPSIS expr_no_commas ']' '='		{ set_init_index ($2, $4); }	  initelt	| '[' expr_no_commas ']' '='		{ set_init_index ($2, NULL_TREE); }	  initelt	| '[' expr_no_commas ']'		{ set_init_index ($2, NULL_TREE); }	  initelt	| identifier ':'		{ set_init_label ($1); }	  initelt	| '.' identifier '='		{ set_init_label ($2); }	  initelt	;nested_function:	  declarator		{ push_c_function_context ();		  if (! start_function (current_declspecs, $1,					prefix_attributes, NULL_TREE, 1))		    {		      pop_c_function_context ();		      YYERROR1;		    }		  reinit_parse_for_function (); }	   old_style_parm_decls		{ store_parm_decls (); }/* This used to use compstmt_or_error.   That caused a bug with input `f(g) int g {}',   where the use of YYERROR1 above caused an error   which then was handled by compstmt_or_error.   There followed a repeated execution of that same rule,   which called YYERROR1 again, and so on.  */	  compstmt		{ finish_function (1);		  pop_c_function_context (); }	;notype_nested_function:	  notype_declarator		{ push_c_function_context ();		  if (! start_function (current_declspecs, $1,					prefix_attributes, NULL_TREE, 1))		    {		      pop_c_function_context ();		      YYERROR1;		    }		  reinit_parse_for_function (); }	  old_style_parm_decls		{ store_parm_decls (); }/* This used to use compstmt_or_error.   That caused a bug with input `f(g) int g {}',   where the use of YYERROR1 above caused an error   which then was handled by compstmt_or_error.   There followed a repeated execution of that same rule,   which called YYERROR1 again, and so on.  */	  compstmt		{ finish_function (1);		  pop_c_function_context (); }	;/* Any kind of declarator (thus, all declarators allowed   after an explicit typespec).  */declarator:	  after_type_declarator	| notype_declarator	;/* A declarator that is allowed only after an explicit typespec.  */after_type_declarator:	  '(' after_type_declarator ')'		{ $$ = $2; }	| after_type_declarator '(' parmlist_or_identifiers  %prec '.'		{ $$ = build_nt (CALL_EXPR, $1, $3, NULL_TREE); }/*	| after_type_declarator '(' error ')'  %prec '.'		{ $$ = build_nt (CALL_EXPR, $1, NULL_TREE, NULL_TREE);		  poplevel (0, 0, 0); }  */	| after_type_declarator '[' expr ']'  %prec '.'		{ $$ = build_nt (ARRAY_REF, $1, $3); }	| after_type_declarator '[' ']'  %prec '.'		{ $$ = build_nt (ARRAY_REF, $1, NULL_TREE); }	| '*' type_quals after_type_declarator  %prec UNARY		{ $$ = make_pointer_declarator ($2, $3); }	/* ??? Yuck.  setattrs is a quick hack.  We can't use	   prefix_attributes because $1 only applies to this	   declarator.  We assume setspecs has already been done.	   setattrs also avoids 5 reduce/reduce conflicts (otherwise multiple	   attributes could be recognized here or in `attributes').  */	| attributes setattrs after_type_declarator		{ $$ = $3; }	| TYPENAME	;/* Kinds of declarator that can appear in a parameter list   in addition to notype_declarator.  This is like after_type_declarator   but does not allow a typedef name in parentheses as an identifier   (because it would conflict with a function with that typedef as arg).  */parm_declarator:	  parm_declarator '(' parmlist_or_identifiers  %prec '.'		{ $$ = build_nt (CALL_EXPR, $1, $3, NULL_TREE); }/*	| parm_declarator '(' error ')'  %prec '.'		{ $$ = build_nt (CALL_EXPR, $1, NULL_TREE, NULL_TREE);		  poplevel (0, 0, 0); }  */	| parm_declarator '[' expr ']'  %prec '.'		{ $$ = build_nt (ARRAY_REF, $1, $3); }	| parm_declarator '[' ']'  %prec '.'		{ $$ = build_nt (ARRAY_REF, $1, NULL_TREE); }	| '*' type_quals parm_declarator  %prec UNARY		{ $$ = make_pointer_declarator ($2, $3); }	/* ??? Yuck.  setattrs is a quick hack.  We can't use	   prefix_attributes because $1 only applies to this	   declarator.  We assume setspecs has already been done.	   setattrs also avoids 5 reduce/reduce conflicts (otherwise multiple	   attributes could be recognized here or in `attributes').  */	| attributes setattrs parm_declarator		{ $$ = $3; }	| TYPENAME	;/* A declarator allowed whether or not there has been   an explicit typespec.  These cannot redeclare a typedef-name.  */notype_declarator:	  notype_declarator '(' parmlist_or_identifiers  %prec '.'		{ $$ = build_nt (CALL_EXPR, $1, $3, NULL_TREE); }/*	| notype_declarator '(' error ')'  %prec '.'		{ $$ = build_nt (CALL_EXPR, $1, NULL_TREE, NULL_TREE);		  poplevel (0, 0, 0); }  */	| '(' notype_declarator ')'		{ $$ = $2; }	| '*' type_quals notype_declarator  %prec UNARY		{ $$ = make_pointer_declarator ($2, $3); }	| notype_declarator '[' expr ']'  %prec '.'		{ $$ = build_nt (ARRAY_REF, $1, $3); }	| notype_declarator '[' ']'  %prec '.'		{ $$ = build_nt (ARRAY_REF, $1, NULL_TREE); }	/* ??? Yuck.  setattrs is a quick hack.  We can't use	   prefix_attributes because $1 only applies to this	   declarator.  We assume setspecs has already been done.	   setattrs also avoids 5 reduce/reduce conflicts (otherwise multiple	   attributes could be recognized here or in `attributes').  */	| attributes setattrs notype_declarator		{ $$ = $3; }	| IDENTIFIER	;structsp:	  STRUCT identifier '{'		{ $$ = start_struct (RECORD_TYPE, $2);		  /* Start scope of tag before parsing components.  */		}	  component_decl_list '}' maybe_attribute 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜美腿亚洲色图| 91偷拍与自偷拍精品| 丁香亚洲综合激情啪啪综合| 一本高清dvd不卡在线观看 | 日韩不卡手机在线v区| 国产精品一二三在| 欧美精品免费视频| 一区二区在线看| a亚洲天堂av| 久久精品视频一区二区| 日本免费新一区视频| 在线一区二区观看| 国产精品成人网| 国产精品77777竹菊影视小说| 777奇米成人网| 亚洲制服丝袜av| 91一区二区三区在线观看| 国产日韩精品一区| 黑人巨大精品欧美黑白配亚洲| 欧美日韩精品系列| 亚洲国产成人av网| 日本电影欧美片| 亚洲丝袜精品丝袜在线| 成人av手机在线观看| 国产亚洲精品7777| 精品一区二区三区香蕉蜜桃| 91精品国产福利| 日韩电影在线一区二区三区| 欧美群妇大交群的观看方式| 亚洲国产中文字幕| 欧美人与禽zozo性伦| 偷拍与自拍一区| 7777精品伊人久久久大香线蕉最新版| 亚洲精品视频在线| 欧美综合一区二区| 亚洲已满18点击进入久久| 欧美三级韩国三级日本三斤| 亚洲午夜久久久久| 91精品国产综合久久精品图片 | 中文字幕日韩av资源站| 丁香另类激情小说| 日韩伦理电影网| 在线免费观看日本一区| 亚洲国产精品嫩草影院| 欧美精品一卡二卡| 欧美aaa在线| 久久久久久久国产精品影院| 国产成人av电影在线| 中文字幕在线不卡国产视频| 一本色道亚洲精品aⅴ| 亚洲小说春色综合另类电影| 欧美精品在线观看播放| 激情六月婷婷久久| 国产精品久久久爽爽爽麻豆色哟哟 | a美女胸又www黄视频久久| 亚洲精品中文字幕在线观看| 欧日韩精品视频| 久久爱www久久做| 国产精品网曝门| 欧美在线free| 国产在线精品一区二区不卡了| 国产精品久线观看视频| 欧美性受xxxx| 国产精品一品二品| 亚洲激情一二三区| 欧美sm美女调教| 99麻豆久久久国产精品免费| 午夜精品影院在线观看| 久久精品在这里| 欧美日韩精品福利| 成人av免费在线播放| 性做久久久久久久免费看| 久久免费看少妇高潮| 精品视频在线免费| 国产二区国产一区在线观看| 亚洲综合丝袜美腿| 欧美国产1区2区| 欧美一区二区三区婷婷月色 | 欧美蜜桃一区二区三区| 高清国产午夜精品久久久久久| 亚洲蜜臀av乱码久久精品| 精品国产第一区二区三区观看体验| 99久久精品免费观看| 精品一区在线看| 亚洲成人7777| 亚洲欧洲日韩综合一区二区| 欧美精品一区二区高清在线观看 | 日韩中文字幕亚洲一区二区va在线| 久久久久久久久久看片| 在线电影国产精品| 91在线视频免费观看| 国产福利一区二区三区| 精品亚洲国内自在自线福利| 亚洲丰满少妇videoshd| 亚洲日本一区二区三区| 国产午夜精品一区二区三区视频| 欧美三级日韩三级| 在线精品亚洲一区二区不卡| 99亚偷拍自图区亚洲| 国产伦精品一区二区三区在线观看 | 欧美一区二区三区在线视频| 91黄色免费网站| www.亚洲色图.com| 国产精品18久久久久| 蜜臀精品一区二区三区在线观看 | 一区二区三区欧美亚洲| 一色屋精品亚洲香蕉网站| 欧美激情在线一区二区三区| 久久精品欧美日韩| 日韩欧美电影一二三| 日韩一区二区在线观看| 欧美在线视频不卡| 欧美日韩国产美女| 欧美精品乱码久久久久久按摩| 在线观看日韩高清av| 欧美性videosxxxxx| 在线观看精品一区| 欧美亚男人的天堂| 欧美一区中文字幕| 日韩欧美中文字幕制服| 日韩天堂在线观看| 久久综合久久99| 欧美日韩不卡一区二区| 欧美另类高清zo欧美| 欧美一级欧美三级| 2023国产一二三区日本精品2022| 久久午夜羞羞影院免费观看| 国产午夜精品理论片a级大结局| 国产精品美女一区二区三区| 国产精品久久久久久福利一牛影视 | 黑人巨大精品欧美黑白配亚洲 | 另类小说一区二区三区| 国内精品久久久久影院薰衣草| 国产综合久久久久久久久久久久| 国产在线不卡一卡二卡三卡四卡| 成人免费三级在线| 在线影院国内精品| 欧美一区三区四区| 久久久av毛片精品| 亚洲欧美偷拍另类a∨色屁股| 亚洲一二三区在线观看| 狠狠色综合播放一区二区| 成人亚洲一区二区一| 91福利社在线观看| 日韩一区二区在线观看| 国产精品素人一区二区| 亚洲线精品一区二区三区八戒| 免费亚洲电影在线| 成人午夜精品一区二区三区| 欧美中文字幕一区二区三区| 日韩欧美国产三级| 最近日韩中文字幕| 麻豆久久一区二区| 91免费视频网址| 欧美一级二级在线观看| 中文字幕日本不卡| 久久国产精品72免费观看| 91片黄在线观看| 欧美va在线播放| 亚洲午夜在线视频| 国产精品自拍毛片| 欧美日韩国产欧美日美国产精品| 欧美国产亚洲另类动漫| 首页综合国产亚洲丝袜| 成人激情开心网| 欧美成人精品二区三区99精品| 国产精品国产三级国产普通话99| 日产国产高清一区二区三区| 成人av在线电影| 精品久久久久久无| 亚洲成av人在线观看| 99久久精品国产麻豆演员表| 日韩免费看的电影| 亚洲成人av电影| 91久久精品日日躁夜夜躁欧美| 久久色在线视频| 免费久久精品视频| 欧美日韩国产综合久久| 亚洲色欲色欲www| 丁香另类激情小说| 久久精品一区四区| 国产一区二区三区不卡在线观看| 欧美美女喷水视频| 亚洲专区一二三| 色先锋久久av资源部| 国产精品久久久久影院| 国产呦精品一区二区三区网站| 91精品福利在线一区二区三区 | 亚洲自拍另类综合| 一本色道久久综合亚洲aⅴ蜜桃 | 日韩无一区二区| 日韩在线一二三区| 欧美裸体一区二区三区| 亚洲国产欧美在线| 日本韩国欧美三级| 一区二区三区久久久| 91官网在线观看| 一区二区在线观看不卡| 在线国产亚洲欧美| 国产精品久99|