📄 lex.c
字号:
#endif return token_count;}char *init_parse (filename) char *filename;{ extern int flag_no_gnu_keywords; extern int flag_operator_names; int i;#ifdef MULTIBYTE_CHARS /* Change to the native locale for multibyte conversions. */ setlocale (LC_CTYPE, ""); literal_codeset = getenv ("LANG");#endif#if USE_CPPLIB parse_in.show_column = 1; if (! cpp_start_read (&parse_in, filename)) abort (); /* cpp_start_read always puts at least one line directive into the token buffer. We must arrange to read it out here. */ yy_cur = parse_in.token_buffer; yy_lim = CPP_PWRITTEN (&parse_in);#else /* Open input file. */ if (filename == 0 || !strcmp (filename, "-")) { finput = stdin; filename = "stdin"; } else finput = fopen (filename, "r"); if (finput == 0) pfatal_with_name (filename);#ifdef IO_BUFFER_SIZE setvbuf (finput, (char *) xmalloc (IO_BUFFER_SIZE), _IOFBF, IO_BUFFER_SIZE);#endif#endif /* !USE_CPPLIB */ /* 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 (); bcopy (cplus_tree_code_type, tree_code_type + (int) LAST_AND_UNUSED_TREE_CODE, (int)LAST_CPLUS_TREE_CODE - (int)LAST_AND_UNUSED_TREE_CODE); 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 (OPERATOR_TYPENAME_FORMAT); 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) SIZEOF_EXPR] = get_identifier ("__sz"); IDENTIFIER_OPNAME_P (ansi_opname[(int) SIZEOF_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"); ridpointers[(int) RID_BOOL] = get_identifier ("bool"); ridpointers[(int) RID_CHAR] = get_identifier ("char"); ridpointers[(int) RID_VOID] = get_identifier ("void"); ridpointers[(int) RID_FLOAT] = get_identifier ("float"); ridpointers[(int) RID_DOUBLE] = get_identifier ("double"); ridpointers[(int) RID_SHORT] = get_identifier ("short"); ridpointers[(int) RID_LONG] = get_identifier ("long"); ridpointers[(int) RID_UNSIGNED] = get_identifier ("unsigned"); ridpointers[(int) RID_SIGNED] = get_identifier ("signed"); ridpointers[(int) RID_INLINE] = get_identifier ("inline"); ridpointers[(int) RID_CONST] = get_identifier ("const"); ridpointers[(int) RID_VOLATILE] = get_identifier ("volatile"); ridpointers[(int) RID_RESTRICT] = get_identifier ("__restrict"); ridpointers[(int) RID_AUTO] = get_identifier ("auto"); ridpointers[(int) RID_STATIC] = get_identifier ("static"); ridpointers[(int) RID_EXTERN] = get_identifier ("extern"); ridpointers[(int) RID_TYPEDEF] = get_identifier ("typedef"); ridpointers[(int) RID_REGISTER] = get_identifier ("register"); ridpointers[(int) RID_COMPLEX] = get_identifier ("__complex"); /* C++ extensions. These are probably not correctly named. */ ridpointers[(int) RID_WCHAR] = get_identifier ("__wchar_t"); 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"); ridpointers[(int) RID_EXPLICIT] = get_identifier ("explicit"); ridpointers[(int) RID_EXPORT] = get_identifier ("export"); ridpointers[(int) RID_FRIEND] = get_identifier ("friend"); ridpointers[(int) RID_PUBLIC] = get_identifier ("public"); ridpointers[(int) RID_PRIVATE] = get_identifier ("private"); ridpointers[(int) RID_PROTECTED] = get_identifier ("protected"); ridpointers[(int) RID_TEMPLATE] = get_identifier ("template"); /* This is for ANSI C++. */ ridpointers[(int) RID_MUTABLE] = get_identifier ("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; /* Create the built-in __null node. Note that we can't yet call for type_for_size here because integer_type_node and so forth are not set up. Therefore, we don't set the type of these nodes until init_decl_processing. */ 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) 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_cpp_parse (); interface_unknown = 1; return filename;}voidfinish_parse (){#if USE_CPPLIB cpp_finish (&parse_in);#else fclose (finput);#endif}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: case SCSPEC: case PRE_PARSED_CLASS_DECL: t = yylval.ttype; if (TREE_CODE (t) == TYPE_DECL || TREE_CODE (t) == TEMPLATE_DECL) { fprintf (file, " `%s'", IDENTIFIER_POINTER (DECL_NAME (t))); break; } my_friendly_assert (TREE_CODE (t) == IDENTIFIER_NODE, 224); if (IDENTIFIER_POINTER (t)) fprintf (file, " `%s'", IDENTIFIER_POINTER (t)); break; case AGGR: if (yylval.ttype == class_type_node) fprintf (file, " `class'"); else if (yylval.ttype == record_type_node) fprintf (file, " `struct'"); else if (yylval.ttype == union_type_node) fprintf (file, " `union'"); else if (yylval.ttype == enum_type_node) fprintf (file, " `enum'"); else if (yylval.ttype == signature_type_node) fprintf (file, " `signature'"); else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -