📄 simple-c.y
字号:
%start program%token IDENTIFIER%token TYPENAME%token SCSPEC %token STATIC %token TYPESPEC%token TYPE_QUAL%token OBJC_TYPE_QUAL%token CONSTANT%token STRING%token ELLIPSIS%token SIZEOF ENUM STRUCT UNION IF ELSE WHILE DO FOR SWITCH CASE DEFAULT%token BREAK CONTINUE RETURN GOTO ASM_KEYWORD TYPEOF ALIGNOF%token ATTRIBUTE EXTENSION LABEL%token REALPART IMAGPART VA_ARG CHOOSE_EXPR TYPES_COMPATIBLE_P%token FUNC_NAME OFFSETOF%nonassoc IF%nonassoc ELSE%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 '.' '(' '['%token AT_INTERFACE AT_IMPLEMENTATION AT_END AT_SELECTOR AT_DEFS AT_ENCODE%token CLASSNAME AT_PUBLIC AT_PRIVATE AT_PROTECTED AT_PROTOCOL%token AT_CLASS AT_ALIAS%token AT_THROW AT_TRY AT_CATCH AT_FINALLY AT_SYNCHRONIZED%token OBJC_STRING%type <code> unop%type <ttype> ENUM STRUCT UNION IF ELSE WHILE DO FOR SWITCH CASE DEFAULT%type <ttype> BREAK CONTINUE RETURN GOTO ASM_KEYWORD SIZEOF TYPEOF ALIGNOF%type <ttype> identifier IDENTIFIER TYPENAME CONSTANT STRING FUNC_NAME%type <ttype> nonnull_exprlist exprlist%type <exprtype> expr expr_no_commas cast_expr unary_expr primary%type <dsptype> declspecs_nosc_nots_nosa_noea declspecs_nosc_nots_nosa_ea%type <dsptype> declspecs_nosc_nots_sa_noea declspecs_nosc_nots_sa_ea%type <dsptype> declspecs_nosc_ts_nosa_noea declspecs_nosc_ts_nosa_ea%type <dsptype> declspecs_nosc_ts_sa_noea declspecs_nosc_ts_sa_ea%type <dsptype> declspecs_sc_nots_nosa_noea declspecs_sc_nots_nosa_ea%type <dsptype> declspecs_sc_nots_sa_noea declspecs_sc_nots_sa_ea%type <dsptype> declspecs_sc_ts_nosa_noea declspecs_sc_ts_nosa_ea%type <dsptype> declspecs_sc_ts_sa_noea declspecs_sc_ts_sa_ea%type <dsptype> declspecs_ts declspecs_nots%type <dsptype> declspecs_ts_nosa declspecs_nots_nosa%type <dsptype> declspecs_nosc_ts declspecs_nosc_nots declspecs_nosc declspecs%type <dsptype> maybe_type_quals_attrs%type <tstype> typespec_nonattr typespec_attr%type <tstype> typespec_reserved_nonattr typespec_reserved_attr%type <tstype> typespec_nonreserved_nonattr%type <ttype> offsetof_member_designator%type <ttype> scspec SCSPEC STATIC TYPESPEC TYPE_QUAL maybe_volatile%type <ttype> initdecls notype_initdecls initdcl notype_initdcl%type <exprtype> init%type <ttype> simple_asm_expr maybeasm asm_stmt asm_argument asm_string%type <ttype> asm_operands nonnull_asm_operands asm_operand asm_clobbers%type <ttype> maybe_attribute attributes attribute attribute_list attrib%type <ttype> any_word%type <ttype> compstmt compstmt_start compstmt_primary_start%type <ttype> stmt label stmt_nocomp start_break start_continue%type <ttype> c99_block_start c99_block_lineno_labeled_stmt%type <ttype> if_statement_1 if_statement_2%type <dtrtype> declarator%type <dtrtype> notype_declarator after_type_declarator%type <dtrtype> parm_declarator%type <dtrtype> parm_declarator_starttypename parm_declarator_nostarttypename%type <dtrtype> array_declarator%type <tstype> structsp_attr structsp_nonattr%type <ttype> component_decl_list component_decl_list2%type <ttype> component_decl components components_notype component_declarator%type <ttype> component_notype_declarator%type <ttype> enumlist enumerator%type <ttype> struct_head union_head enum_head%type <typenametype> typename%type <dtrtype> absdcl absdcl1 absdcl1_ea absdcl1_noea direct_absdcl1%type <parmtype> absdcl_maybe_attribute%type <ttype> condition xexpr for_cond_expr for_incr_expr%type <parmtype> parm firstparm%type <ttype> identifiers%type <arginfotype> parms parmlist parmlist_1 parmlist_2%type <arginfotype> parmlist_or_identifiers parmlist_or_identifiers_1%type <ttype> identifiers_or_typenames%type <itype> setspecs setspecs_fp extension%type <location> save_location%type <otype> save_obstack_position%%program :| extdefs ;extdefs : save_obstack_position | extdefs save_obstack_position ;extdef : fndef | datadef | asmdef | extension extdef ;save_obstack_position : ;datadef : setspecs notype_initdecls ';' | declspecs_nots setspecs notype_initdecls ';' | declspecs_ts setspecs initdecls ';' | declspecs ';' | error ';' | error '}' | ';' ;fndef : declspecs_ts setspecs declarator old_style_parm_decls save_location compstmt_or_error | declspecs_ts setspecs declarator error | declspecs_nots setspecs notype_declarator old_style_parm_decls save_location compstmt_or_error | declspecs_nots setspecs notype_declarator error | setspecs notype_declarator old_style_parm_decls save_location compstmt_or_error | setspecs notype_declarator error ;identifier : IDENTIFIER | TYPENAME ;unop : | '-' | '+' | PLUSPLUS | MINUSMINUS | '~' | '!' ;expr : | expr ',' expr_no_commas ;exprlist : | nonnull_exprlist ;nonnull_exprlist : expr_no_commas | nonnull_exprlist ',' expr_no_commas ;unary_expr : primary | '*' cast_expr %prec UNARY | extension cast_expr %prec UNARY | unop cast_expr %prec UNARY | ANDAND identifier | sizeof unary_expr %prec UNARY | sizeof '(' typename ')' %prec HYPERUNARY | alignof unary_expr %prec UNARY | alignof '(' typename ')' %prec HYPERUNARY | REALPART cast_expr %prec UNARY | IMAGPART cast_expr %prec UNARY ;sizeof : SIZEOF ;alignof : ALIGNOF ;typeof : TYPEOF ;cast_expr : unary_expr | '(' typename ')' cast_expr %prec UNARY ;expr_no_commas : cast_expr | expr_no_commas '+' expr_no_commas | expr_no_commas '-' expr_no_commas | expr_no_commas '*' expr_no_commas | expr_no_commas '/' expr_no_commas | expr_no_commas '%' expr_no_commas | expr_no_commas LSHIFT expr_no_commas | expr_no_commas RSHIFT expr_no_commas | expr_no_commas ARITHCOMPARE expr_no_commas | expr_no_commas EQCOMPARE expr_no_commas | expr_no_commas '&' expr_no_commas | expr_no_commas '|' expr_no_commas | expr_no_commas '^' expr_no_commas | expr_no_commas ANDAND expr_no_commas | expr_no_commas OROR expr_no_commas | expr_no_commas '?' expr ':' expr_no_commas | expr_no_commas '?' ':' expr_no_commas | expr_no_commas '=' expr_no_commas | expr_no_commas ASSIGN expr_no_commas ;primary : IDENTIFIER | CONSTANT | STRING | FUNC_NAME | '(' typename ')' '{' initlist_maybe_comma '}' %prec UNARY | '(' expr ')' | '(' error ')' | compstmt_primary_start compstmt_nostart ')' | compstmt_primary_start error ')' | primary '(' exprlist ')' %prec '.' | VA_ARG '(' expr_no_commas ',' typename ')' | OFFSETOF '(' typename ',' offsetof_member_designator ')' | OFFSETOF '(' error ')' | CHOOSE_EXPR '(' expr_no_commas ',' expr_no_commas ',' expr_no_commas ')' | CHOOSE_EXPR '(' error ')' | TYPES_COMPATIBLE_P '(' typename ',' typename ')' | TYPES_COMPATIBLE_P '(' error ')' | primary '[' expr ']' %prec '.' | primary '.' identifier | primary POINTSAT identifier | primary PLUSPLUS | primary MINUSMINUS ;offsetof_member_designator : identifier | offsetof_member_designator '.' identifier | offsetof_member_designator '[' expr ']' ;old_style_parm_decls : | datadecls ;lineno_datadecl : save_location datadecl ;datadecls : lineno_datadecl | errstmt | datadecls lineno_datadecl | lineno_datadecl errstmt ;datadecl : declspecs_ts_nosa setspecs initdecls ';' | declspecs_nots_nosa setspecs notype_initdecls ';' | declspecs_ts_nosa ';' | declspecs_nots_nosa ';' ;lineno_decl : save_location decl ;setspecs : ;maybe_resetattrs : maybe_attribute ;decl : declspecs_ts setspecs initdecls ';' | declspecs_nots setspecs notype_initdecls ';' | declspecs_ts setspecs nested_function | declspecs_nots setspecs notype_nested_function | declspecs ';' | extension decl ;declspecs_nosc_nots_nosa_noea : TYPE_QUAL | declspecs_nosc_nots_nosa_noea TYPE_QUAL | declspecs_nosc_nots_nosa_ea TYPE_QUAL ;declspecs_nosc_nots_nosa_ea : declspecs_nosc_nots_nosa_noea attributes ;declspecs_nosc_nots_sa_noea : declspecs_nosc_nots_sa_noea TYPE_QUAL | declspecs_nosc_nots_sa_ea TYPE_QUAL ;declspecs_nosc_nots_sa_ea : attributes | declspecs_nosc_nots_sa_noea attributes ;declspecs_nosc_ts_nosa_noea : typespec_nonattr | declspecs_nosc_ts_nosa_noea TYPE_QUAL | declspecs_nosc_ts_nosa_ea TYPE_QUAL | declspecs_nosc_ts_nosa_noea typespec_reserved_nonattr | declspecs_nosc_ts_nosa_ea typespec_reserved_nonattr | declspecs_nosc_nots_nosa_noea typespec_nonattr | declspecs_nosc_nots_nosa_ea typespec_nonattr ;declspecs_nosc_ts_nosa_ea : typespec_attr | declspecs_nosc_ts_nosa_noea attributes | declspecs_nosc_ts_nosa_noea typespec_reserved_attr | declspecs_nosc_ts_nosa_ea typespec_reserved_attr | declspecs_nosc_nots_nosa_noea typespec_attr | declspecs_nosc_nots_nosa_ea typespec_attr ;declspecs_nosc_ts_sa_noea : declspecs_nosc_ts_sa_noea TYPE_QUAL | declspecs_nosc_ts_sa_ea TYPE_QUAL | declspecs_nosc_ts_sa_noea typespec_reserved_nonattr | declspecs_nosc_ts_sa_ea typespec_reserved_nonattr | declspecs_nosc_nots_sa_noea typespec_nonattr | declspecs_nosc_nots_sa_ea typespec_nonattr ;declspecs_nosc_ts_sa_ea : declspecs_nosc_ts_sa_noea attributes | declspecs_nosc_ts_sa_noea typespec_reserved_attr | declspecs_nosc_ts_sa_ea typespec_reserved_attr | declspecs_nosc_nots_sa_noea typespec_attr | declspecs_nosc_nots_sa_ea typespec_attr ;declspecs_sc_nots_nosa_noea : scspec | declspecs_sc_nots_nosa_noea TYPE_QUAL | declspecs_sc_nots_nosa_ea TYPE_QUAL | declspecs_nosc_nots_nosa_noea scspec | declspecs_nosc_nots_nosa_ea scspec | declspecs_sc_nots_nosa_noea scspec | declspecs_sc_nots_nosa_ea scspec ;declspecs_sc_nots_nosa_ea : declspecs_sc_nots_nosa_noea attributes ;declspecs_sc_nots_sa_noea : declspecs_sc_nots_sa_noea TYPE_QUAL | declspecs_sc_nots_sa_ea TYPE_QUAL | declspecs_nosc_nots_sa_noea scspec | declspecs_nosc_nots_sa_ea scspec | declspecs_sc_nots_sa_noea scspec | declspecs_sc_nots_sa_ea scspec ;declspecs_sc_nots_sa_ea : declspecs_sc_nots_sa_noea attributes ;declspecs_sc_ts_nosa_noea : declspecs_sc_ts_nosa_noea TYPE_QUAL | declspecs_sc_ts_nosa_ea TYPE_QUAL | declspecs_sc_ts_nosa_noea typespec_reserved_nonattr | declspecs_sc_ts_nosa_ea typespec_reserved_nonattr | declspecs_sc_nots_nosa_noea typespec_nonattr | declspecs_sc_nots_nosa_ea typespec_nonattr | declspecs_nosc_ts_nosa_noea scspec | declspecs_nosc_ts_nosa_ea scspec | declspecs_sc_ts_nosa_noea scspec | declspecs_sc_ts_nosa_ea scspec ;declspecs_sc_ts_nosa_ea : declspecs_sc_ts_nosa_noea attributes | declspecs_sc_ts_nosa_noea typespec_reserved_attr | declspecs_sc_ts_nosa_ea typespec_reserved_attr | declspecs_sc_nots_nosa_noea typespec_attr | declspecs_sc_nots_nosa_ea typespec_attr ;declspecs_sc_ts_sa_noea : declspecs_sc_ts_sa_noea TYPE_QUAL | declspecs_sc_ts_sa_ea TYPE_QUAL | declspecs_sc_ts_sa_noea typespec_reserved_nonattr | declspecs_sc_ts_sa_ea typespec_reserved_nonattr | declspecs_sc_nots_sa_noea typespec_nonattr | declspecs_sc_nots_sa_ea typespec_nonattr | declspecs_nosc_ts_sa_noea scspec | declspecs_nosc_ts_sa_ea scspec | declspecs_sc_ts_sa_noea scspec | declspecs_sc_ts_sa_ea scspec ;declspecs_sc_ts_sa_ea : declspecs_sc_ts_sa_noea attributes | declspecs_sc_ts_sa_noea typespec_reserved_attr | declspecs_sc_ts_sa_ea typespec_reserved_attr | declspecs_sc_nots_sa_noea typespec_attr | declspecs_sc_nots_sa_ea typespec_attr ;declspecs_ts : declspecs_nosc_ts_nosa_noea | declspecs_nosc_ts_nosa_ea | declspecs_nosc_ts_sa_noea | declspecs_nosc_ts_sa_ea | declspecs_sc_ts_nosa_noea | declspecs_sc_ts_nosa_ea | declspecs_sc_ts_sa_noea | declspecs_sc_ts_sa_ea ;declspecs_nots : declspecs_nosc_nots_nosa_noea | declspecs_nosc_nots_nosa_ea | declspecs_nosc_nots_sa_noea | declspecs_nosc_nots_sa_ea | declspecs_sc_nots_nosa_noea | declspecs_sc_nots_nosa_ea | declspecs_sc_nots_sa_noea | declspecs_sc_nots_sa_ea ;declspecs_ts_nosa : declspecs_nosc_ts_nosa_noea | declspecs_nosc_ts_nosa_ea | declspecs_sc_ts_nosa_noea | declspecs_sc_ts_nosa_ea ;declspecs_nots_nosa : declspecs_nosc_nots_nosa_noea | declspecs_nosc_nots_nosa_ea | declspecs_sc_nots_nosa_noea | declspecs_sc_nots_nosa_ea ;declspecs_nosc_ts : declspecs_nosc_ts_nosa_noea | declspecs_nosc_ts_nosa_ea | declspecs_nosc_ts_sa_noea | declspecs_nosc_ts_sa_ea ;declspecs_nosc_nots : declspecs_nosc_nots_nosa_noea | declspecs_nosc_nots_nosa_ea | declspecs_nosc_nots_sa_noea | declspecs_nosc_nots_sa_ea ;declspecs_nosc : declspecs_nosc_ts_nosa_noea | declspecs_nosc_ts_nosa_ea | declspecs_nosc_ts_sa_noea | declspecs_nosc_ts_sa_ea | declspecs_nosc_nots_nosa_noea | declspecs_nosc_nots_nosa_ea | declspecs_nosc_nots_sa_noea | declspecs_nosc_nots_sa_ea ;declspecs : declspecs_nosc_nots_nosa_noea | declspecs_nosc_nots_nosa_ea | declspecs_nosc_nots_sa_noea | declspecs_nosc_nots_sa_ea | declspecs_nosc_ts_nosa_noea | declspecs_nosc_ts_nosa_ea | declspecs_nosc_ts_sa_noea | declspecs_nosc_ts_sa_ea | declspecs_sc_nots_nosa_noea | declspecs_sc_nots_nosa_ea | declspecs_sc_nots_sa_noea | declspecs_sc_nots_sa_ea | declspecs_sc_ts_nosa_noea | declspecs_sc_ts_nosa_ea | declspecs_sc_ts_sa_noea | declspecs_sc_ts_sa_ea ;maybe_type_quals_attrs : | declspecs_nosc_nots ;typespec_nonattr : typespec_reserved_nonattr | typespec_nonreserved_nonattr ;typespec_attr : typespec_reserved_attr ;typespec_reserved_nonattr : TYPESPEC | structsp_nonattr ;typespec_reserved_attr : structsp_attr ;typespec_nonreserved_nonattr : TYPENAME | typeof '(' expr ')' | typeof '(' typename ')' ;initdecls : initdcl | initdecls ',' maybe_resetattrs initdcl ;notype_initdecls : notype_initdcl | notype_initdecls ',' maybe_resetattrs notype_initdcl ;initdcl : declarator maybeasm maybe_attribute '=' init } | declarator maybeasm maybe_attribute ;notype_initdcl : notype_declarator maybeasm maybe_attribute '=' init } | notype_declarator maybeasm maybe_attribute ;maybe_attribute : | attributes ;attributes : attribute | attributes attribute ;attribute : ATTRIBUTE stop_string_translation '(' '(' attribute_list ')' ')' start_string_translation | ATTRIBUTE error start_string_translation ;attribute_list : attrib | attribute_list ',' attrib ;attrib : | any_word | any_word '(' IDENTIFIER ')' | any_word '(' IDENTIFIER ',' nonnull_exprlist ')' | any_word '(' exprlist ')' ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -