⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lex.c

📁 gcc-2.95.3 Linux下最常用的C编译器
💻 C
📖 第 1 页 / 共 5 页
字号:
#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 + -