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

📄 cp-lex.c

📁 早期freebsd实现
💻 C
📖 第 1 页 / 共 5 页
字号:
  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];  ansi_opname[(int) PLUS_EXPR] = get_identifier ("__pl");  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) 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 ();  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;  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_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]));  /* 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_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]));  /* Exception handling extensions.  */  exception_type_node = build_int_2 (exception_type, 0);  TREE_TYPE (exception_type_node) = exception_type_node;  ridpointers[(int) RID_EXCEPTION] = exception_type_node;  opname_tab[(int) COMPONENT_REF] = "->";  opname_tab[(int) MEMBER_REF] = "->*";  opname_tab[(int) METHOD_CALL_EXPR] = "->()";  opname_tab[(int) INDIRECT_REF] = "(unary *)";  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) 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) SET_LE_EXPR] = "subset";  opname_tab[(int) CARD_EXPR] = "#";  opname_tab[(int) RANGE_EXPR] = "..";  opname_tab[(int) CONVERT_EXPR] = "(unary +)";  opname_tab[(int) ADDR_EXPR] = "(unary &)";  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 ();#define UNSET_RESERVED_WORD(STRING) \  do { is_reserved_word (STRING, sizeof (STRING) - 1)->name = ""; } while (0)  if (flag_ansi_exceptions)      flag_handle_exceptions = 2;  if (!flag_ansi_exceptions)    {      UNSET_RESERVED_WORD ("catch");    }  if (! flag_handle_exceptions)    {      /* Easiest way to not recognize exception	 handling extensions...  */      UNSET_RESERVED_WORD ("all");      UNSET_RESERVED_WORD ("except");      UNSET_RESERVED_WORD ("exception");      UNSET_RESERVED_WORD ("raise");      UNSET_RESERVED_WORD ("raises");      UNSET_RESERVED_WORD ("reraise");      UNSET_RESERVED_WORD ("try");      UNSET_RESERVED_WORD ("throw");    }  else if (flag_ansi_exceptions)    {      /* Easiest way to not recognize exception	 handling extensions...  */      UNSET_RESERVED_WORD ("exception");      UNSET_RESERVED_WORD ("all");      UNSET_RESERVED_WORD ("except");      UNSET_RESERVED_WORD ("raise");      UNSET_RESERVED_WORD ("raises");      UNSET_RESERVED_WORD ("reraise");      is_reserved_word ("try", sizeof ("try") - 1)->token = ANSI_TRY;      is_reserved_word ("throw", sizeof ("throw") - 1)->token = ANSI_THROW;    }  if (! (flag_gc || flag_dossier))    {      UNSET_RESERVED_WORD ("classof");      UNSET_RESERVED_WORD ("headof");    }  if (flag_no_asm)    UNSET_RESERVED_WORD ("asm");  if (flag_no_asm || flag_traditional)    UNSET_RESERVED_WORD ("typeof");#ifndef SOS  UNSET_RESERVED_WORD ("dynamic");#endif  token_count = init_parse ();  interface_unknown = 1;}voidreinit_parse_for_function (){  current_base_init_list = NULL_TREE;  current_member_init_list = NULL_TREE;}static#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 TYPENAME_COLON:    case TYPENAME_ELLIPSIS:    case SCOPED_TYPENAME:    case SCSPEC:      t = yylval.ttype;    print_id:      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	my_friendly_abort (80);      break;    case PRE_PARSED_CLASS_DECL:      t = yylval.ttype;      my_friendly_assert (TREE_CODE (t) == TREE_LIST, 225);      t = TREE_VALUE (t);      goto print_id;    }}static int *reduce_count;int *token_count;#define REDUCE_LENGTH (sizeof (yyr2) / sizeof (yyr2[0]))#define TOKEN_LENGTH (256 + sizeof (yytname) / sizeof (yytname[0]))int *init_parse (){#ifdef GATHER_STATISTICS  reduce_count = (int *)malloc (sizeof (int) * (REDUCE_LENGTH + 1));  bzero (reduce_count, sizeof (int) * (REDUCE_LENGTH + 1));  reduce_count += 1;  token_count = (int *)malloc (sizeof (int) * (TOKEN_LENGTH + 1));  bzero (token_count, sizeof (int) * (TOKEN_LENGTH + 1));  token_count += 1;#endif  return token_count;}#ifdef GATHER_STATISTICSvoidyyhook (yyn)     int yyn;{  reduce_count[yyn] += 1;}#endifstatic intreduce_cmp (p, q)     int *p, *q;{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -