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

📄 lex.c

📁 GCC编译器源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
  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 + -