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

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

?? c-parse.y

?? 早期freebsd實現
?? Y
?? 第 1 頁 / 共 4 頁
字號:
/* YACC parser for C syntax and for Objective C.  -*-c-*-   Copyright (C) 1987, 1988, 1989, 1992 Free Software Foundation, Inc.This file is part of GNU CC.GNU CC is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, or (at your option)any later version.GNU CC is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU CC; see the file COPYING.  If not, write tothe Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  *//* This file defines the grammar of C and that of Objective C.   ifobjc ... end ifobjc  conditionals contain code for Objective C only.   ifc ... end ifc  conditionals contain code for C only.   The awk script cond.awk is used to convert this file into   c-parse.y and into objc-parse.y.  *//* To whomever it may concern: I have heard that such a thing was oncewritten by AT&T, but I have never seen it.  */%expect 8/* These are the 8 conflicts you should get in parse.output;   the state numbers may vary if minor changes in the grammar are made.State 41 contains 1 shift/reduce conflict.  (Two ways to recover from error.)State 92 contains 1 shift/reduce conflict.  (Two ways to recover from error.)State 99 contains 1 shift/reduce conflict.  (Two ways to recover from error.)State 103 contains 1 shift/reduce conflict.  (Two ways to recover from error.)State 119 contains 1 shift/reduce conflict.  (See comment at component_decl.)State 183 contains 1 shift/reduce conflict.  (Two ways to recover from error.)State 193 contains 1 shift/reduce conflict.  (Two ways to recover from error.)State 199 contains 1 shift/reduce conflict.  (Two ways to recover from error.)*/%{#include <stdio.h>#include <errno.h>#include <setjmp.h>#include "config.h"#include "tree.h"#include "input.h"#include "c-lex.h"#include "c-tree.h"#include "flags.h"#ifdef MULTIBYTE_CHARS#include <stdlib.h>#include <locale.h>#endif#ifndef errnoextern int errno;#endifvoid yyerror ();/* Like YYERROR but do call yyerror.  */#define YYERROR1 { yyerror ("syntax error"); YYERROR; }/* Cause the `yydebug' variable to be defined.  */#define YYDEBUG 1%}%start program%union {long itype; tree ttype; enum tree_code code;	char *filename; int lineno; }/* All identifiers that are not reserved words   and are not declared typedefs in the current block */%token IDENTIFIER/* All identifiers that are declared typedefs in the current block.   In some contexts, they are treated just like IDENTIFIER,   but they can also serve as typespecs in declarations.  */%token TYPENAME/* Reserved words that specify storage class.   yylval contains an IDENTIFIER_NODE which indicates which one.  */%token SCSPEC/* Reserved words that specify type.   yylval contains an IDENTIFIER_NODE which indicates which one.  */%token TYPESPEC/* Reserved words that qualify type: "const" or "volatile".   yylval contains an IDENTIFIER_NODE which indicates which one.  */%token TYPE_QUAL/* Character or numeric constants.   yylval is the node for the constant.  */%token CONSTANT/* String constants in raw form.   yylval is a STRING_CST node.  */%token STRING/* "...", used for functions with variable arglists.  */%token ELLIPSIS/* the reserved words *//* SCO include files test "ASM", so use something else. */%token SIZEOF ENUM STRUCT UNION IF ELSE WHILE DO FOR SWITCH CASE DEFAULT%token BREAK CONTINUE RETURN GOTO ASM_KEYWORD TYPEOF ALIGNOF ALIGN%token ATTRIBUTE EXTENSION LABEL/* Add precedence rules to solve dangling else s/r conflict */%nonassoc IF%nonassoc ELSE/* Define the operator tokens and their precedences.   The value is an integer because, if used, it is the tree code   to use in the expression made from the operator.  */%right <code> ASSIGN '='%right <code> '?' ':'%left <code> OROR%left <code> ANDAND%left <code> '|'%left <code> '^'%left <code> '&'%left <code> EQCOMPARE%left <code> ARITHCOMPARE%left <code> LSHIFT RSHIFT%left <code> '+' '-'%left <code> '*' '/' '%'%right <code> UNARY PLUSPLUS MINUSMINUS%left HYPERUNARY%left <code> POINTSAT '.' '(' '['/* The Objective-C keywords.  These are included in C and in   Objective C, so that the token codes are the same in both.  */%token INTERFACE IMPLEMENTATION END SELECTOR DEFS ENCODE%token CLASSNAME PUBLIC%type <code> unop%type <ttype> identifier IDENTIFIER TYPENAME CONSTANT expr nonnull_exprlist exprlist%type <ttype> expr_no_commas cast_expr unary_expr primary string STRING%type <ttype> typed_declspecs reserved_declspecs%type <ttype> typed_typespecs reserved_typespecquals%type <ttype> declmods typespec typespecqual_reserved%type <ttype> SCSPEC TYPESPEC TYPE_QUAL nonempty_type_quals maybe_type_qual%type <ttype> initdecls notype_initdecls initdcl notype_initdcl%type <ttype> init initlist maybeasm%type <ttype> asm_operands nonnull_asm_operands asm_operand asm_clobbers%type <ttype> maybe_attribute attribute_list attrib%type <ttype> compstmt%type <ttype> declarator%type <ttype> notype_declarator after_type_declarator%type <ttype> parm_declarator%type <ttype> structsp component_decl_list component_decl_list2%type <ttype> component_decl components component_declarator%type <ttype> enumlist enumerator%type <ttype> typename absdcl absdcl1 type_quals%type <ttype> xexpr parms parm identifiers%type <ttype> parmlist parmlist_1 parmlist_2%type <ttype> parmlist_or_identifiers parmlist_or_identifiers_1%type <ttype> identifiers_or_typenames%type <itype> setspecs%type <filename> save_filename%type <lineno> save_lineno%{/* Number of statements (loosely speaking) seen so far.  */static int stmt_count;/* Input file and line number of the end of the body of last simple_if;   used by the stmt-rule immediately after simple_if returns.  */static char *if_stmt_file;static int if_stmt_line;/* List of types and structure classes of the current declaration.  */static tree current_declspecs;/* Stack of saved values of current_declspecs.  */static tree declspec_stack;/* 1 if we explained undeclared var errors.  */static int undeclared_variable_notice;/* Tell yyparse how to print a token's value, if yydebug is set.  */#define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL)extern void yyprint ();%}%%program: /* empty */		{ if (pedantic)		    pedwarn ("ANSI C forbids an empty source file");		}	| extdefs		{		}	;/* the reason for the strange actions in this rule is so that notype_initdecls when reached via datadef can find a valid list of type and sc specs in $0. */extdefs:	{$<ttype>$ = NULL_TREE; } extdef	| extdefs {$<ttype>$ = NULL_TREE; } extdef	;extdef:	fndef	| datadef	| ASM_KEYWORD '(' expr ')' ';'		{ STRIP_NOPS ($3);		  if ((TREE_CODE ($3) == ADDR_EXPR		       && TREE_CODE (TREE_OPERAND ($3, 0)) == STRING_CST)		      || TREE_CODE ($3) == STRING_CST)		    assemble_asm ($3);		  else		    error ("argument of `asm' is not a constant string"); }	;datadef:	  setspecs notype_initdecls ';'		{ if (pedantic)		    error ("ANSI C forbids data definition with no type or storage class");		  else if (!flag_traditional)		    warning ("data definition has no type or storage class"); }        | declmods setspecs notype_initdecls ';'	  {}	| typed_declspecs setspecs initdecls ';'	  {}        | declmods ';'	  { pedwarn ("empty declaration"); }	| typed_declspecs ';'	  { shadow_tag ($1); }	| error ';'	| error '}'	| ';'		{ if (pedantic)		    pedwarn ("ANSI C does not allow extra `;' outside of a function"); }	;fndef:	  typed_declspecs setspecs declarator		{ if (! start_function ($1, $3, 0))		    YYERROR1;		  reinit_parse_for_function (); }	  xdecls		{ store_parm_decls (); }	  compstmt_or_error		{ finish_function (0); }	| typed_declspecs setspecs declarator error		{ }	| declmods setspecs notype_declarator		{ if (! start_function ($1, $3, 0))		    YYERROR1;		  reinit_parse_for_function (); }	  xdecls		{ store_parm_decls (); }	  compstmt_or_error		{ finish_function (0); }	| declmods setspecs notype_declarator error		{ }	| setspecs notype_declarator		{ if (! start_function (NULL_TREE, $2, 0))		    YYERROR1;		  reinit_parse_for_function (); }	  xdecls		{ store_parm_decls (); }	  compstmt_or_error		{ finish_function (0); }	| setspecs notype_declarator error		{ }	;identifier:	IDENTIFIER	| TYPENAME	;unop:     '&'		{ $$ = ADDR_EXPR; }	| '-'		{ $$ = NEGATE_EXPR; }	| '+'		{ $$ = CONVERT_EXPR; }	| PLUSPLUS		{ $$ = PREINCREMENT_EXPR; }	| MINUSMINUS		{ $$ = PREDECREMENT_EXPR; }	| '~'		{ $$ = BIT_NOT_EXPR; }	| '!'		{ $$ = TRUTH_NOT_EXPR; }	;expr:	nonnull_exprlist		{ $$ = build_compound_expr ($1); }	;exprlist:	  /* empty */		{ $$ = NULL_TREE; }	| nonnull_exprlist	;nonnull_exprlist:	expr_no_commas		{ $$ = build_tree_list (NULL_TREE, $1); }	| nonnull_exprlist ',' expr_no_commas		{ chainon ($1, build_tree_list (NULL_TREE, $3)); }	;unary_expr:	primary	| '*' cast_expr   %prec UNARY		{ $$ = build_indirect_ref ($2, "unary *"); }	/* __extension__ turns off -pedantic for following primary.  */	| EXTENSION		{ $<itype>1 = pedantic;		  pedantic = 0; }	  cast_expr	  %prec UNARY		{ $$ = $3;		  pedantic = $<itype>1; }	| unop cast_expr  %prec UNARY		{ $$ = build_unary_op ($1, $2, 0); }	/* Refer to the address of a label as a pointer.  */	| ANDAND identifier		{ tree label = lookup_label ($2);		  TREE_USED (label) = 1;		  $$ = build1 (ADDR_EXPR, ptr_type_node, label);		  TREE_CONSTANT ($$) = 1; }/* This seems to be impossible on some machines, so let's turn it off.   You can use __builtin_next_arg to find the anonymous stack args.	| '&' ELLIPSIS		{ tree types = TYPE_ARG_TYPES (TREE_TYPE (current_function_decl));		  $$ = error_mark_node;		  if (TREE_VALUE (tree_last (types)) == void_type_node)		    error ("`&...' used in function with fixed number of arguments");		  else		    {		      if (pedantic)			pedwarn ("ANSI C forbids `&...'");		      $$ = tree_last (DECL_ARGUMENTS (current_function_decl));		      $$ = build_unary_op (ADDR_EXPR, $$, 0);		    } }*/	| SIZEOF unary_expr  %prec UNARY		{ if (TREE_CODE ($2) == COMPONENT_REF		      && DECL_BIT_FIELD (TREE_OPERAND ($2, 1)))		    error ("`sizeof' applied to a bit-field");		  $$ = c_sizeof (TREE_TYPE ($2)); }	| SIZEOF '(' typename ')'  %prec HYPERUNARY		{ $$ = c_sizeof (groktypename ($3)); }	| ALIGNOF unary_expr  %prec UNARY		{ $$ = c_alignof_expr ($2); }	| ALIGNOF '(' typename ')'  %prec HYPERUNARY		{ $$ = c_alignof (groktypename ($3)); }	;cast_expr:	unary_expr	| '(' typename ')' cast_expr  %prec UNARY		{ tree type = groktypename ($2);		  $$ = build_c_cast (type, $4); }	| '(' typename ')' '{' initlist maybecomma '}'  %prec UNARY		{ tree type = groktypename ($2);		  char *name;		  if (pedantic)		    pedwarn ("ANSI C forbids constructor expressions");		  if (TYPE_NAME (type) != 0)		    {		      if (TREE_CODE (TYPE_NAME (type)) == IDENTIFIER_NODE)			name = IDENTIFIER_POINTER (TYPE_NAME (type));		      else			name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type)));		    }		  else		    name = "";		  $$ = digest_init (type, build_nt (CONSTRUCTOR, NULL_TREE, nreverse ($5)),				    NULL_PTR, 0, 0, name);		  if (TREE_CODE (type) == ARRAY_TYPE && TYPE_SIZE (type) == 0)		    {		      int failure = complete_array_type (type, $$, 1);		      if (failure)			abort ();		    }		}	;expr_no_commas:	  cast_expr	| expr_no_commas '+' expr_no_commas		{ $$ = parser_build_binary_op ($2, $1, $3); }	| expr_no_commas '-' expr_no_commas		{ $$ = parser_build_binary_op ($2, $1, $3); }	| expr_no_commas '*' expr_no_commas		{ $$ = parser_build_binary_op ($2, $1, $3); }	| expr_no_commas '/' expr_no_commas		{ $$ = parser_build_binary_op ($2, $1, $3); }	| expr_no_commas '%' expr_no_commas		{ $$ = parser_build_binary_op ($2, $1, $3); }	| expr_no_commas LSHIFT expr_no_commas		{ $$ = parser_build_binary_op ($2, $1, $3); }	| expr_no_commas RSHIFT expr_no_commas		{ $$ = parser_build_binary_op ($2, $1, $3); }	| expr_no_commas ARITHCOMPARE expr_no_commas		{ $$ = parser_build_binary_op ($2, $1, $3); }	| expr_no_commas EQCOMPARE expr_no_commas		{ $$ = parser_build_binary_op ($2, $1, $3); }	| expr_no_commas '&' expr_no_commas		{ $$ = parser_build_binary_op ($2, $1, $3); }	| expr_no_commas '|' expr_no_commas		{ $$ = parser_build_binary_op ($2, $1, $3); }	| expr_no_commas '^' expr_no_commas		{ $$ = parser_build_binary_op ($2, $1, $3); }	| expr_no_commas ANDAND expr_no_commas		{ $$ = parser_build_binary_op (TRUTH_ANDIF_EXPR, $1, $3); }	| expr_no_commas OROR expr_no_commas		{ $$ = parser_build_binary_op (TRUTH_ORIF_EXPR, $1, $3); }	| expr_no_commas '?' xexpr ':' expr_no_commas		{ $$ = build_conditional_expr ($1, $3, $5); }	| expr_no_commas '=' expr_no_commas		{ $$ = build_modify_expr ($1, NOP_EXPR, $3);		  C_SET_EXP_ORIGINAL_CODE ($$, MODIFY_EXPR); }	| expr_no_commas ASSIGN expr_no_commas		{ $$ = build_modify_expr ($1, $2, $3);		  C_SET_EXP_ORIGINAL_CODE ($$, MODIFY_EXPR); }	;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区视频免费在线观看| 欧美大片免费久久精品三p| 国产成人午夜99999| 久久精品国产**网站演员| 久久国产生活片100| 蜜桃视频一区二区三区| 久久99热这里只有精品| 久久成人精品无人区| 国产一区二区三区四区在线观看| 青青草一区二区三区| 久久99精品久久久久久| 国产精品亚洲午夜一区二区三区| 国产精华液一区二区三区| 成人午夜在线播放| 91在线一区二区三区| 欧美日韩国产影片| 日韩一级免费观看| 亚洲国产高清不卡| 亚洲自拍欧美精品| 日韩成人免费电影| 国产99久久久国产精品潘金网站| 国产精品123区| 欧美日韩欧美一区二区| 久久久精品综合| 亚洲国产裸拍裸体视频在线观看乱了 | 久久精品国产99国产精品| 国内不卡的二区三区中文字幕| 看片网站欧美日韩| 91免费观看视频| 91精品国产综合久久久久久 | 最新中文字幕一区二区三区| 亚洲bt欧美bt精品777| 国产剧情一区在线| 欧美日韩在线一区二区| 国产欧美一区二区三区沐欲| 亚洲一区欧美一区| www.亚洲激情.com| 欧美va天堂va视频va在线| 亚洲少妇屁股交4| 韩国在线一区二区| 欧美日韩国产一二三| 国产精品国产三级国产aⅴ入口 | 成人国产精品免费观看视频| 欧美在线视频全部完| 国产亚洲午夜高清国产拍精品| 一区二区三区美女视频| 成人小视频免费在线观看| 日韩区在线观看| 午夜一区二区三区视频| 91婷婷韩国欧美一区二区| 国产午夜精品美女毛片视频| 天堂成人免费av电影一区| 99久久精品免费| 中文在线资源观看网站视频免费不卡 | 欧美白人最猛性xxxxx69交| 26uuu久久天堂性欧美| 国产成人精品午夜视频免费| 综合av第一页| 在线播放国产精品二区一二区四区| 美女诱惑一区二区| 国产精品国产成人国产三级| 欧美日韩一区不卡| 国产激情91久久精品导航| 亚洲天堂精品在线观看| 日韩一区二区三区在线观看| 风间由美一区二区av101 | 亚洲人成精品久久久久| 欧美日韩国产高清一区二区| 国产精品自拍网站| 亚洲成av人片在线| 国产午夜精品久久久久久久| 欧美制服丝袜第一页| 极品瑜伽女神91| 怡红院av一区二区三区| 欧美精品一区二区久久婷婷| 在线精品视频一区二区| 国产乱国产乱300精品| 亚洲高清免费在线| 日本一二三不卡| 日韩欧美视频在线| 91蝌蚪porny| 国产精品456露脸| 日韩av一级片| 亚洲一区二区高清| 中文字幕在线免费不卡| 日韩三级视频中文字幕| 欧美在线色视频| 91在线视频18| 高清av一区二区| 国产剧情一区二区| 免费观看91视频大全| 亚洲国产成人tv| 依依成人精品视频| 国产精品乱人伦| 日韩三级视频中文字幕| 欧美另类久久久品| 欧美性高清videossexo| 91精品国产综合久久久久| 91久久精品国产91性色tv| 成人中文字幕在线| 国产精品99久久久久久久女警| 久久精品国产免费| 久久精品免费看| 老司机免费视频一区二区三区| 午夜精品一区在线观看| 亚洲高清在线视频| 午夜不卡av免费| 舔着乳尖日韩一区| 亚洲成人综合网站| 婷婷久久综合九色国产成人| 首页国产丝袜综合| 免费观看日韩电影| 美国十次综合导航| 激情成人午夜视频| 国产中文字幕精品| 国产精品一区二区久久精品爱涩| 国模冰冰炮一区二区| 国产综合久久久久久鬼色 | 精品福利在线导航| 亚洲精品一区二区三区香蕉| 久久亚洲私人国产精品va媚药| 精品美女在线观看| 国产欧美日韩另类视频免费观看 | 91在线免费播放| 色婷婷亚洲精品| 欧美日本乱大交xxxxx| 欧美精选一区二区| 精品国产网站在线观看| www激情久久| 国产精品美女久久久久久久久 | 91丨九色丨蝌蚪富婆spa| 色噜噜狠狠成人中文综合| 欧美亚洲高清一区二区三区不卡| 欧美日韩免费观看一区二区三区| 国产亚洲女人久久久久毛片| 精品久久久久99| 亚洲欧洲美洲综合色网| 一区二区三区在线观看网站| 五月婷婷综合在线| 黄一区二区三区| 色综合久久中文综合久久97| 欧美精品一级二级| 国产喷白浆一区二区三区| 一区二区三区四区五区视频在线观看| 亚洲一级二级三级在线免费观看| 捆绑调教一区二区三区| 成人av午夜电影| 7777精品久久久大香线蕉| 2021中文字幕一区亚洲| 伊人开心综合网| 九九国产精品视频| 在线免费观看不卡av| 久久理论电影网| 亚洲韩国精品一区| 国产黄人亚洲片| 欧美日韩国产一级二级| 国产精品免费视频一区| 午夜精品久久久久久不卡8050| 国产精品亚洲а∨天堂免在线| 欧美午夜理伦三级在线观看| 久久久国际精品| 三级久久三级久久久| 99这里只有精品| 久久久久久久综合色一本| 亚洲二区视频在线| 成人av在线网| 国产性色一区二区| 日日夜夜免费精品| 欧洲在线/亚洲| 国产欧美日韩视频在线观看| 免费观看在线色综合| 色噜噜夜夜夜综合网| 欧美经典一区二区| 精品一区二区三区免费毛片爱 | 五月婷婷另类国产| 99精品久久只有精品| 欧美精品一区二区三区久久久| 亚洲一区二区黄色| 99久久精品免费看国产| 国产亚洲1区2区3区| 国产一区中文字幕| 日韩一区二区三区av| 亚洲国产欧美日韩另类综合| 91丝袜美腿高跟国产极品老师 | 天天影视涩香欲综合网| 91成人在线观看喷潮| 中文字幕在线观看一区二区| 国产91精品在线观看| 久久综合久久综合亚洲| 国产资源精品在线观看| 日韩欧美高清在线| 久久激情五月婷婷| 精品国产免费久久| 国产一区高清在线| 久久免费看少妇高潮| 国产乱码精品1区2区3区| 国产亚洲欧美色| 成人免费毛片嘿嘿连载视频| 国产清纯在线一区二区www| 国产99久久久国产精品|