📄 lex.c
字号:
extern int flag_operator_names; int i; /* Initialize the lookahead machinery. */ init_spew (); /* Make identifier nodes long enough for the language-specific slots. */ set_identifier_size (sizeof (struct lang_identifier)); decl_printable_name = lang_printable_name; init_cplus_expand (); tree_code_type = (char **) realloc (tree_code_type, sizeof (char *) * LAST_CPLUS_TREE_CODE); tree_code_length = (int *) realloc (tree_code_length, sizeof (int) * LAST_CPLUS_TREE_CODE); tree_code_name = (char **) realloc (tree_code_name, sizeof (char *) * LAST_CPLUS_TREE_CODE); bcopy ((char *)cplus_tree_code_type, (char *)(tree_code_type + (int) LAST_AND_UNUSED_TREE_CODE), (LAST_CPLUS_TREE_CODE - (int)LAST_AND_UNUSED_TREE_CODE) * sizeof (char *)); bcopy ((char *)cplus_tree_code_length, (char *)(tree_code_length + (int) LAST_AND_UNUSED_TREE_CODE), (LAST_CPLUS_TREE_CODE - (int)LAST_AND_UNUSED_TREE_CODE) * sizeof (int)); bcopy ((char *)cplus_tree_code_name, (char *)(tree_code_name + (int) LAST_AND_UNUSED_TREE_CODE), (LAST_CPLUS_TREE_CODE - (int)LAST_AND_UNUSED_TREE_CODE) * sizeof (char *)); opname_tab = (char **)oballoc ((int)LAST_CPLUS_TREE_CODE * sizeof (char *)); bzero ((char *)opname_tab, (int)LAST_CPLUS_TREE_CODE * sizeof (char *)); assignop_tab = (char **)oballoc ((int)LAST_CPLUS_TREE_CODE * sizeof (char *)); bzero ((char *)assignop_tab, (int)LAST_CPLUS_TREE_CODE * sizeof (char *)); ansi_opname[0] = get_identifier ("<invalid operator>"); for (i = 0; i < (int) LAST_CPLUS_TREE_CODE; i++) { ansi_opname[i] = ansi_opname[0]; ansi_assopname[i] = ansi_opname[0]; } ansi_opname[(int) MULT_EXPR] = get_identifier ("__ml"); IDENTIFIER_OPNAME_P (ansi_opname[(int) MULT_EXPR]) = 1; ansi_opname[(int) INDIRECT_REF] = ansi_opname[(int) MULT_EXPR]; ansi_assopname[(int) MULT_EXPR] = get_identifier ("__aml"); IDENTIFIER_OPNAME_P (ansi_assopname[(int) MULT_EXPR]) = 1; ansi_assopname[(int) INDIRECT_REF] = ansi_assopname[(int) MULT_EXPR]; ansi_opname[(int) TRUNC_MOD_EXPR] = get_identifier ("__md"); IDENTIFIER_OPNAME_P (ansi_opname[(int) TRUNC_MOD_EXPR]) = 1; ansi_assopname[(int) TRUNC_MOD_EXPR] = get_identifier ("__amd"); IDENTIFIER_OPNAME_P (ansi_assopname[(int) TRUNC_MOD_EXPR]) = 1; ansi_opname[(int) CEIL_MOD_EXPR] = ansi_opname[(int) TRUNC_MOD_EXPR]; ansi_opname[(int) FLOOR_MOD_EXPR] = ansi_opname[(int) TRUNC_MOD_EXPR]; ansi_opname[(int) ROUND_MOD_EXPR] = ansi_opname[(int) TRUNC_MOD_EXPR]; ansi_opname[(int) MINUS_EXPR] = get_identifier ("__mi"); IDENTIFIER_OPNAME_P (ansi_opname[(int) MINUS_EXPR]) = 1; ansi_opname[(int) NEGATE_EXPR] = ansi_opname[(int) MINUS_EXPR]; ansi_assopname[(int) MINUS_EXPR] = get_identifier ("__ami"); IDENTIFIER_OPNAME_P (ansi_assopname[(int) MINUS_EXPR]) = 1; ansi_assopname[(int) NEGATE_EXPR] = ansi_assopname[(int) MINUS_EXPR]; ansi_opname[(int) RSHIFT_EXPR] = get_identifier ("__rs"); IDENTIFIER_OPNAME_P (ansi_opname[(int) RSHIFT_EXPR]) = 1; ansi_assopname[(int) RSHIFT_EXPR] = get_identifier ("__ars"); IDENTIFIER_OPNAME_P (ansi_assopname[(int) RSHIFT_EXPR]) = 1; ansi_opname[(int) NE_EXPR] = get_identifier ("__ne"); IDENTIFIER_OPNAME_P (ansi_opname[(int) NE_EXPR]) = 1; ansi_opname[(int) GT_EXPR] = get_identifier ("__gt"); IDENTIFIER_OPNAME_P (ansi_opname[(int) GT_EXPR]) = 1; ansi_opname[(int) GE_EXPR] = get_identifier ("__ge"); IDENTIFIER_OPNAME_P (ansi_opname[(int) GE_EXPR]) = 1; ansi_opname[(int) BIT_IOR_EXPR] = get_identifier ("__or"); IDENTIFIER_OPNAME_P (ansi_opname[(int) BIT_IOR_EXPR]) = 1; ansi_assopname[(int) BIT_IOR_EXPR] = get_identifier ("__aor"); IDENTIFIER_OPNAME_P (ansi_assopname[(int) BIT_IOR_EXPR]) = 1; ansi_opname[(int) TRUTH_ANDIF_EXPR] = get_identifier ("__aa"); IDENTIFIER_OPNAME_P (ansi_opname[(int) TRUTH_ANDIF_EXPR]) = 1; ansi_opname[(int) TRUTH_NOT_EXPR] = get_identifier ("__nt"); IDENTIFIER_OPNAME_P (ansi_opname[(int) TRUTH_NOT_EXPR]) = 1; ansi_opname[(int) PREINCREMENT_EXPR] = get_identifier ("__pp"); IDENTIFIER_OPNAME_P (ansi_opname[(int) PREINCREMENT_EXPR]) = 1; ansi_opname[(int) POSTINCREMENT_EXPR] = ansi_opname[(int) PREINCREMENT_EXPR]; ansi_opname[(int) MODIFY_EXPR] = get_identifier ("__as"); IDENTIFIER_OPNAME_P (ansi_opname[(int) MODIFY_EXPR]) = 1; ansi_assopname[(int) NOP_EXPR] = ansi_opname[(int) MODIFY_EXPR]; ansi_opname[(int) COMPOUND_EXPR] = get_identifier ("__cm"); IDENTIFIER_OPNAME_P (ansi_opname[(int) COMPOUND_EXPR]) = 1; ansi_opname[(int) EXACT_DIV_EXPR] = get_identifier ("__dv"); IDENTIFIER_OPNAME_P (ansi_opname[(int) EXACT_DIV_EXPR]) = 1; ansi_assopname[(int) EXACT_DIV_EXPR] = get_identifier ("__adv"); IDENTIFIER_OPNAME_P (ansi_assopname[(int) EXACT_DIV_EXPR]) = 1; ansi_opname[(int) TRUNC_DIV_EXPR] = ansi_opname[(int) EXACT_DIV_EXPR]; ansi_opname[(int) CEIL_DIV_EXPR] = ansi_opname[(int) EXACT_DIV_EXPR]; ansi_opname[(int) FLOOR_DIV_EXPR] = ansi_opname[(int) EXACT_DIV_EXPR]; ansi_opname[(int) ROUND_DIV_EXPR] = ansi_opname[(int) EXACT_DIV_EXPR]; ansi_opname[(int) PLUS_EXPR] = get_identifier ("__pl"); ansi_assopname[(int) TRUNC_DIV_EXPR] = ansi_assopname[(int) EXACT_DIV_EXPR]; ansi_assopname[(int) CEIL_DIV_EXPR] = ansi_assopname[(int) EXACT_DIV_EXPR]; ansi_assopname[(int) FLOOR_DIV_EXPR] = ansi_assopname[(int) EXACT_DIV_EXPR]; ansi_assopname[(int) ROUND_DIV_EXPR] = ansi_assopname[(int) EXACT_DIV_EXPR]; IDENTIFIER_OPNAME_P (ansi_opname[(int) PLUS_EXPR]) = 1; ansi_assopname[(int) PLUS_EXPR] = get_identifier ("__apl"); IDENTIFIER_OPNAME_P (ansi_assopname[(int) PLUS_EXPR]) = 1; ansi_opname[(int) CONVERT_EXPR] = ansi_opname[(int) PLUS_EXPR]; ansi_assopname[(int) CONVERT_EXPR] = ansi_assopname[(int) PLUS_EXPR]; ansi_opname[(int) LSHIFT_EXPR] = get_identifier ("__ls"); IDENTIFIER_OPNAME_P (ansi_opname[(int) LSHIFT_EXPR]) = 1; ansi_assopname[(int) LSHIFT_EXPR] = get_identifier ("__als"); IDENTIFIER_OPNAME_P (ansi_assopname[(int) LSHIFT_EXPR]) = 1; ansi_opname[(int) EQ_EXPR] = get_identifier ("__eq"); IDENTIFIER_OPNAME_P (ansi_opname[(int) EQ_EXPR]) = 1; ansi_opname[(int) LT_EXPR] = get_identifier ("__lt"); IDENTIFIER_OPNAME_P (ansi_opname[(int) LT_EXPR]) = 1; ansi_opname[(int) LE_EXPR] = get_identifier ("__le"); IDENTIFIER_OPNAME_P (ansi_opname[(int) LE_EXPR]) = 1; ansi_opname[(int) BIT_AND_EXPR] = get_identifier ("__ad"); IDENTIFIER_OPNAME_P (ansi_opname[(int) BIT_AND_EXPR]) = 1; ansi_assopname[(int) BIT_AND_EXPR] = get_identifier ("__aad"); IDENTIFIER_OPNAME_P (ansi_assopname[(int) BIT_AND_EXPR]) = 1; ansi_opname[(int) ADDR_EXPR] = ansi_opname[(int) BIT_AND_EXPR]; ansi_assopname[(int) ADDR_EXPR] = ansi_assopname[(int) BIT_AND_EXPR]; ansi_opname[(int) BIT_XOR_EXPR] = get_identifier ("__er"); IDENTIFIER_OPNAME_P (ansi_opname[(int) BIT_XOR_EXPR]) = 1; ansi_assopname[(int) BIT_XOR_EXPR] = get_identifier ("__aer"); IDENTIFIER_OPNAME_P (ansi_assopname[(int) BIT_XOR_EXPR]) = 1; ansi_opname[(int) TRUTH_ORIF_EXPR] = get_identifier ("__oo"); IDENTIFIER_OPNAME_P (ansi_opname[(int) TRUTH_ORIF_EXPR]) = 1; ansi_opname[(int) BIT_NOT_EXPR] = get_identifier ("__co"); IDENTIFIER_OPNAME_P (ansi_opname[(int) BIT_NOT_EXPR]) = 1; ansi_opname[(int) PREDECREMENT_EXPR] = get_identifier ("__mm"); IDENTIFIER_OPNAME_P (ansi_opname[(int) PREDECREMENT_EXPR]) = 1; ansi_opname[(int) POSTDECREMENT_EXPR] = ansi_opname[(int) PREDECREMENT_EXPR]; ansi_opname[(int) COMPONENT_REF] = get_identifier ("__rf"); IDENTIFIER_OPNAME_P (ansi_opname[(int) COMPONENT_REF]) = 1; ansi_opname[(int) MEMBER_REF] = get_identifier ("__rm"); IDENTIFIER_OPNAME_P (ansi_opname[(int) MEMBER_REF]) = 1; ansi_opname[(int) CALL_EXPR] = get_identifier ("__cl"); IDENTIFIER_OPNAME_P (ansi_opname[(int) CALL_EXPR]) = 1; ansi_opname[(int) ARRAY_REF] = get_identifier ("__vc"); IDENTIFIER_OPNAME_P (ansi_opname[(int) ARRAY_REF]) = 1; ansi_opname[(int) NEW_EXPR] = get_identifier ("__nw"); IDENTIFIER_OPNAME_P (ansi_opname[(int) NEW_EXPR]) = 1; ansi_opname[(int) DELETE_EXPR] = get_identifier ("__dl"); IDENTIFIER_OPNAME_P (ansi_opname[(int) DELETE_EXPR]) = 1; ansi_opname[(int) VEC_NEW_EXPR] = get_identifier ("__vn"); IDENTIFIER_OPNAME_P (ansi_opname[(int) VEC_NEW_EXPR]) = 1; ansi_opname[(int) VEC_DELETE_EXPR] = get_identifier ("__vd"); IDENTIFIER_OPNAME_P (ansi_opname[(int) VEC_DELETE_EXPR]) = 1; ansi_opname[(int) TYPE_EXPR] = get_identifier ("__op"); IDENTIFIER_OPNAME_P (ansi_opname[(int) TYPE_EXPR]) = 1; /* This is not true: these operators are not defined in ANSI, but we need them anyway. */ ansi_opname[(int) MIN_EXPR] = get_identifier ("__mn"); IDENTIFIER_OPNAME_P (ansi_opname[(int) MIN_EXPR]) = 1; ansi_opname[(int) MAX_EXPR] = get_identifier ("__mx"); IDENTIFIER_OPNAME_P (ansi_opname[(int) MAX_EXPR]) = 1; ansi_opname[(int) COND_EXPR] = get_identifier ("__cn"); IDENTIFIER_OPNAME_P (ansi_opname[(int) COND_EXPR]) = 1; ansi_opname[(int) METHOD_CALL_EXPR] = get_identifier ("__wr"); IDENTIFIER_OPNAME_P (ansi_opname[(int) METHOD_CALL_EXPR]) = 1; init_method (); init_error (); gcc_obstack_init (&inline_text_obstack); inline_text_firstobj = (char *) obstack_alloc (&inline_text_obstack, 0); /* Start it at 0, because check_newline is called at the very beginning and will increment it to 1. */ lineno = 0; input_filename = "<internal>"; current_function_decl = NULL; maxtoken = 40; token_buffer = (char *) xmalloc (maxtoken + 2); ridpointers[(int) RID_INT] = get_identifier ("int"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_INT], build_tree_list (NULL_TREE, ridpointers[(int) RID_INT])); ridpointers[(int) RID_BOOL] = get_identifier ("bool"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_BOOL], build_tree_list (NULL_TREE, ridpointers[(int) RID_BOOL])); ridpointers[(int) RID_CHAR] = get_identifier ("char"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_CHAR], build_tree_list (NULL_TREE, ridpointers[(int) RID_CHAR])); ridpointers[(int) RID_VOID] = get_identifier ("void"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_VOID], build_tree_list (NULL_TREE, ridpointers[(int) RID_VOID])); ridpointers[(int) RID_FLOAT] = get_identifier ("float"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_FLOAT], build_tree_list (NULL_TREE, ridpointers[(int) RID_FLOAT])); ridpointers[(int) RID_DOUBLE] = get_identifier ("double"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_DOUBLE], build_tree_list (NULL_TREE, ridpointers[(int) RID_DOUBLE])); ridpointers[(int) RID_SHORT] = get_identifier ("short"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_SHORT], build_tree_list (NULL_TREE, ridpointers[(int) RID_SHORT])); ridpointers[(int) RID_LONG] = get_identifier ("long"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_LONG], build_tree_list (NULL_TREE, ridpointers[(int) RID_LONG])); ridpointers[(int) RID_UNSIGNED] = get_identifier ("unsigned"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_UNSIGNED], build_tree_list (NULL_TREE, ridpointers[(int) RID_UNSIGNED])); ridpointers[(int) RID_SIGNED] = get_identifier ("signed"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_SIGNED], build_tree_list (NULL_TREE, ridpointers[(int) RID_SIGNED])); ridpointers[(int) RID_INLINE] = get_identifier ("inline"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_INLINE], build_tree_list (NULL_TREE, ridpointers[(int) RID_INLINE])); ridpointers[(int) RID_CONST] = get_identifier ("const"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_CONST], build_tree_list (NULL_TREE, ridpointers[(int) RID_CONST])); ridpointers[(int) RID_VOLATILE] = get_identifier ("volatile"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_VOLATILE], build_tree_list (NULL_TREE, ridpointers[(int) RID_VOLATILE])); ridpointers[(int) RID_AUTO] = get_identifier ("auto"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_AUTO], build_tree_list (NULL_TREE, ridpointers[(int) RID_AUTO])); ridpointers[(int) RID_STATIC] = get_identifier ("static"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_STATIC], build_tree_list (NULL_TREE, ridpointers[(int) RID_STATIC])); ridpointers[(int) RID_EXTERN] = get_identifier ("extern"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_EXTERN], build_tree_list (NULL_TREE, ridpointers[(int) RID_EXTERN])); ridpointers[(int) RID_TYPEDEF] = get_identifier ("typedef"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_TYPEDEF], build_tree_list (NULL_TREE, ridpointers[(int) RID_TYPEDEF])); ridpointers[(int) RID_REGISTER] = get_identifier ("register"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_REGISTER], build_tree_list (NULL_TREE, ridpointers[(int) RID_REGISTER])); ridpointers[(int) RID_COMPLEX] = get_identifier ("__complex"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_COMPLEX], build_tree_list (NULL_TREE, ridpointers[(int) RID_COMPLEX])); /* C++ extensions. These are probably not correctly named. */ ridpointers[(int) RID_WCHAR] = get_identifier ("__wchar_t"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_WCHAR], build_tree_list (NULL_TREE, ridpointers[(int) RID_WCHAR])); class_type_node = build_int_2 (class_type, 0); TREE_TYPE (class_type_node) = class_type_node; ridpointers[(int) RID_CLASS] = class_type_node; record_type_node = build_int_2 (record_type, 0); TREE_TYPE (record_type_node) = record_type_node; ridpointers[(int) RID_RECORD] = record_type_node; union_type_node = build_int_2 (union_type, 0); TREE_TYPE (union_type_node) = union_type_node; ridpointers[(int) RID_UNION] = union_type_node; enum_type_node = build_int_2 (enum_type, 0); TREE_TYPE (enum_type_node) = enum_type_node; ridpointers[(int) RID_ENUM] = enum_type_node; ridpointers[(int) RID_VIRTUAL] = get_identifier ("virtual"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_VIRTUAL], build_tree_list (NULL_TREE, ridpointers[(int) RID_VIRTUAL])); ridpointers[(int) RID_EXPLICIT] = get_identifier ("explicit"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_EXPLICIT], build_tree_list (NULL_TREE, ridpointers[(int) RID_EXPLICIT])); ridpointers[(int) RID_FRIEND] = get_identifier ("friend"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_FRIEND], build_tree_list (NULL_TREE, ridpointers[(int) RID_FRIEND])); ridpointers[(int) RID_PUBLIC] = get_identifier ("public"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_PUBLIC], build_tree_list (NULL_TREE, ridpointers[(int) RID_PUBLIC])); ridpointers[(int) RID_PRIVATE] = get_identifier ("private"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_PRIVATE], build_tree_list (NULL_TREE, ridpointers[(int) RID_PRIVATE])); ridpointers[(int) RID_PROTECTED] = get_identifier ("protected"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_PROTECTED], build_tree_list (NULL_TREE, ridpointers[(int) RID_PROTECTED])); ridpointers[(int) RID_TEMPLATE] = get_identifier ("template"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_TEMPLATE], build_tree_list (NULL_TREE, ridpointers[(int) RID_TEMPLATE])); /* This is for ANSI C++. */ ridpointers[(int) RID_MUTABLE] = get_identifier ("mutable"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_MUTABLE], build_tree_list (NULL_TREE, ridpointers[(int) RID_MUTABLE])); /* Signature handling extensions. */ signature_type_node = build_int_2 (signature_type, 0); TREE_TYPE (signature_type_node) = signature_type_node; ridpointers[(int) RID_SIGNATURE] = signature_type_node; null_node = build_int_2 (0, 0); ridpointers[RID_NULL] = null_node; opname_tab[(int) COMPONENT_REF] = "->"; opname_tab[(int) MEMBER_REF] = "->*"; opname_tab[(int) METHOD_CALL_EXPR] = "->()"; opname_tab[(int) INDIRECT_REF] = "*"; opname_tab[(int) ARRAY_REF] = "[]"; opname_tab[(int) MODIFY_EXPR] = "="; opname_tab[(int) NEW_EXPR] = "new"; opname_tab[(int) DELETE_EXPR] = "delete"; opname_tab[(int) VEC_NEW_EXPR] = "new []"; opname_tab[(int) VEC_DELETE_EXPR] = "delete []"; opname_tab[(int) COND_EXPR] = "?:"; opname_tab[(int) CALL_EXPR] = "()"; opname_tab[(int) PLUS_EXPR] = "+"; opname_tab[(int) MINUS_EXPR] = "-"; opname_tab[(int) MULT_EXPR] = "*"; opname_tab[(int) TRUNC_DIV_EXPR] = "/"; opname_tab[(int) CEIL_DIV_EXPR] = "(ceiling /)"; opname_tab[(int) FLOOR_DIV_EXPR] = "(floor /)"; opname_tab[(int) ROUND_DIV_EXPR] = "(round /)"; opname_tab[(int) TRUNC_MOD_EXPR] = "%"; opname_tab[(int) CEIL_MOD_EXPR] = "(ceiling %)"; opname_tab[(int) FLOOR_MOD_EXPR] = "(floor %)"; opname_tab[(int) ROUND_MOD_EXPR] = "(round %)"; opname_tab[(int) NEGATE_EXPR] = "-"; opname_tab[(int) MIN_EXPR] = "<?"; opname_tab[(int) MAX_EXPR] = ">?"; opname_tab[(int) ABS_EXPR] = "abs"; opname_tab[(int) FFS_EXPR] = "ffs"; opname_tab[(int) LSHIFT_EXPR] = "<<"; opname_tab[(int) RSHIFT_EXPR] = ">>"; opname_tab[(int) BIT_IOR_EXPR] = "|"; opname_tab[(int) BIT_XOR_EXPR] = "^"; opname_tab[(int) BIT_AND_EXPR] = "&"; opname_tab[(int) BIT_ANDTC_EXPR] = "&~"; opname_tab[(int) BIT_NOT_EXPR] = "~"; opname_tab[(int) TRUTH_ANDIF_EXPR] = "&&"; opname_tab[(int) TRUTH_ORIF_EXPR] = "||"; opname_tab[(int) TRUTH_AND_EXPR] = "strict &&"; opname_tab[(int) TRUTH_OR_EXPR] = "strict ||"; opname_tab[(int) TRUTH_NOT_EXPR] = "!"; opname_tab[(int) LT_EXPR] = "<"; opname_tab[(int) LE_EXPR] = "<="; opname_tab[(int) GT_EXPR] = ">"; opname_tab[(int) GE_EXPR] = ">="; opname_tab[(int) EQ_EXPR] = "=="; opname_tab[(int) NE_EXPR] = "!="; opname_tab[(int) IN_EXPR] = "in"; opname_tab[(int) RANGE_EXPR] = "..."; opname_tab[(int) CONVERT_EXPR] = "+"; opname_tab[(int) ADDR_EXPR] = "&"; opname_tab[(int) PREDECREMENT_EXPR] = "--"; opname_tab[(int) PREINCREMENT_EXPR] = "++"; opname_tab[(int) POSTDECREMENT_EXPR] = "--"; opname_tab[(int) POSTINCREMENT_EXPR] = "++"; opname_tab[(int) COMPOUND_EXPR] = ","; assignop_tab[(int) NOP_EXPR] = "="; assignop_tab[(int) PLUS_EXPR] = "+="; assignop_tab[(int) CONVERT_EXPR] = "+="; assignop_tab[(int) MINUS_EXPR] = "-="; assignop_tab[(int) NEGATE_EXPR] = "-="; assignop_tab[(int) MULT_EXPR] = "*="; assignop_tab[(int) INDIRECT_REF] = "*="; assignop_tab[(int) TRUNC_DIV_EXPR] = "/="; assignop_tab[(int) EXACT_DIV_EXPR] = "(exact /=)"; assignop_tab[(int) CEIL_DIV_EXPR] = "(ceiling /=)"; assignop_tab[(int) FLOOR_DIV_EXPR] = "(floor /=)"; assignop_tab[(int) ROUND_DIV_EXPR] = "(round /=)"; assignop_tab[(int) TRUNC_MOD_EXPR] = "%="; assignop_tab[(int) CEIL_MOD_EXPR] = "(ceiling %=)"; assignop_tab[(int) FLOOR_MOD_EXPR] = "(floor %=)"; assignop_tab[(int) ROUND_MOD_EXPR] = "(round %=)"; assignop_tab[(int) MIN_EXPR] = "<?="; assignop_tab[(int) MAX_EXPR] = ">?="; assignop_tab[(int) LSHIFT_EXPR] = "<<="; assignop_tab[(int) RSHIFT_EXPR] = ">>="; assignop_tab[(int) BIT_IOR_EXPR] = "|="; assignop_tab[(int) BIT_XOR_EXPR] = "^="; assignop_tab[(int) BIT_AND_EXPR] = "&="; assignop_tab[(int) ADDR_EXPR] = "&="; init_filename_times (); /* Some options inhibit certain reserved words. Clear those words out of the hash table so they won't be recognized. */#define UNSET_RESERVED_WORD(STRING) \ do { struct resword *s = is_reserved_word (STRING, sizeof (STRING) - 1); \ if (s) s->name = ""; } while (0)#if 0 /* let's parse things, and if they use it, then give them an error. */ if (!flag_exceptions) { UNSET_RESERVED_WORD ("throw"); UNSET_RESERVED_WORD ("try"); UNSET_RESERVED_WORD ("catch"); }#endif if (!flag_rtti || flag_no_gnu_keywords) { UNSET_RESERVED_WORD ("classof"); UNSET_RESERVED_WORD ("headof"); } if (! flag_handle_signatures || flag_no_gnu_keywords) { /* Easiest way to not recognize signature handling extensions... */ UNSET_RESERVED_WORD ("signature"); UNSET_RESERVED_WORD ("sigof"); } if (flag_no_asm || flag_no_gnu_keywords) UNSET_RESERVED_WORD ("typeof"); if (! flag_operator_names) { /* These are new ANSI keywords that may break code. */ UNSET_RESERVED_WORD ("and"); UNSET_RESERVED_WORD ("and_eq"); UNSET_RESERVED_WORD ("bitand"); UNSET_RESERVED_WORD ("bitor"); UNSET_RESERVED_WORD ("compl"); UNSET_RESERVED_WORD ("not"); UNSET_RESERVED_WORD ("not_eq"); UNSET_RESERVED_WORD ("or"); UNSET_RESERVED_WORD ("or_eq"); UNSET_RESERVED_WORD ("xor"); UNSET_RESERVED_WORD ("xor_eq"); } token_count = init_parse (); interface_unknown = 1;}voidreinit_parse_for_function (){ current_base_init_list = NULL_TREE; current_member_init_list = NULL_TREE;}#ifdef __GNUC____inline#endifvoidyyprint (file, yychar, yylval) FILE *file; int yychar; YYSTYPE yylval;{ tree t; switch (yychar) { case IDENTIFIER: case TYPENAME: case TYPESPEC: case PTYPENAME: case IDENTIFIER_DEFN: case TYPENAME_DEFN: case PTYPENAME_DEFN:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -