GCC C语言处理主要函数之c_parse_init

c_parse_init:

/* Initialization routine for this file.  */

void c_parse_init (void) {   /* The only initialization required is of the reserved word      identifiers.  */   unsigned int i;   tree id;   int mask = 0;

  /* Make sure RID_MAX hasn't grown past the 8 bits used to hold the keyword in      the c_token structure.  */   gcc_assert (RID_MAX <= 255);

  mask |= D_CXXONLY;   if (!flag_isoc99)     mask |= D_C99;   if (flag_no_asm)     {       mask |= D_ASM | D_EXT;       if (!flag_isoc99)  mask |= D_EXT89;     }   if (!c_dialect_objc ())     mask |= D_OBJC | D_CXX_OBJC;

  ridpointers = ggc_cleared_vec_alloc<tree> ((int) RID_MAX);   for (i = 0; i < num_c_common_reswords; i++)     {       /* If a keyword is disabled, do not enter it into the table   and so create a canonical spelling that isn't a keyword.  */       if (c_common_reswords[i].disable & mask)  {    if (warn_cxx_compat        && (c_common_reswords[i].disable & D_CXXWARN))      {        id = get_identifier (c_common_reswords[i].word);        C_SET_RID_CODE (id, RID_CXX_COMPAT_WARN);        C_IS_RESERVED_WORD (id) = 1;      }    continue;  }

      id = get_identifier (c_common_reswords[i].word);       C_SET_RID_CODE (id, c_common_reswords[i].rid);       C_IS_RESERVED_WORD (id) = 1;       ridpointers [(int) c_common_reswords[i].rid] = id;     }

  for (i = 0; i < NUM_INT_N_ENTS; i++)     {       /* We always create the symbols but they aren't always supported.  */       char name[50];       sprintf (name, "__int%d", int_n_data[i].bitsize);       id = get_identifier (name);       C_SET_RID_CODE (id, RID_FIRST_INT_N + i);       C_IS_RESERVED_WORD (id) = 1;     } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值