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

📄 stc.c

📁 gcc-2.95.3 Linux下最常用的C编译器
💻 C
📖 第 1 页 / 共 5 页
字号:
}/* ffestc_labeldef_useless_ -- Define label as a useless one   ffestc_labeldef_useless_();	*/static voidffestc_labeldef_useless_ (){  if ((ffesta_label_token == NULL)      || (ffestc_shriek_after1_ != NULL)      || !ffestc_labeldef_begin_ ())    return;  switch (ffelab_type (ffestc_label_))    {    case FFELAB_typeUNKNOWN:      ffelab_set_type (ffestc_label_, FFELAB_typeUSELESS);      ffestd_labeldef_useless (ffestc_label_);      break;    case FFELAB_typeLOOPEND:      ffelab_set_type (ffestc_label_, FFELAB_typeANY);      ffestd_labeldef_any (ffestc_label_);      if ((ffestw_state (ffestw_stack_top ()) != FFESTV_stateDO)	  || (ffestw_label (ffestw_stack_top ()) != ffestc_label_))	{			/* Unterminated block. */	  ffebad_start (FFEBAD_LABEL_DO_BLOCK_END);	  ffebad_here (0, ffelab_doref_line (ffestc_label_),		       ffelab_doref_column (ffestc_label_));	  ffebad_here (1, ffestw_line (ffestw_stack_top ()), ffestw_col (ffestw_stack_top ()));	  ffebad_here (2, ffelex_token_where_line (ffesta_label_token),		       ffelex_token_where_column (ffesta_label_token));	  ffebad_finish ();	  break;	}      ffebad_start (FFEBAD_LABEL_USE_DEF);      ffebad_here (0, ffelex_token_where_line (ffesta_label_token),		   ffelex_token_where_column (ffesta_label_token));      ffebad_here (1, ffelab_doref_line (ffestc_label_),		   ffelab_doref_column (ffestc_label_));      ffebad_finish ();      ffestc_labeldef_branch_end_ ();      return;    case FFELAB_typeASSIGNABLE:    case FFELAB_typeFORMAT:    case FFELAB_typeNOTLOOP:      ffelab_set_type (ffestc_label_, FFELAB_typeANY);      ffestd_labeldef_any (ffestc_label_);      ffebad_start (FFEBAD_LABEL_USE_DEF);      ffebad_here (0, ffelex_token_where_line (ffesta_label_token),		   ffelex_token_where_column (ffesta_label_token));      ffebad_here (1, ffelab_firstref_line (ffestc_label_),		   ffelab_firstref_column (ffestc_label_));      ffebad_finish ();      break;    default:      assert ("bad label" == NULL);      /* Fall through.  */    case FFELAB_typeANY:      break;    }  ffestc_try_shriek_do_ ();  ffelex_token_kill (ffesta_label_token);  ffesta_label_token = NULL;}/* ffestc_labelref_is_assignable_ -- Reference to label in ASSIGN stmt   if (ffestc_labelref_is_assignable_(label_token,&label))       // label ref is ok, label is filled in with ffelab object  */static boolffestc_labelref_is_assignable_ (ffelexToken label_token, ffelab *x_label){  ffelab label;  ffelabValue label_value;  label_value = (ffelabValue) atol (ffelex_token_text (label_token));  if ((label_value == 0) || (label_value > FFELAB_valueMAX))    {      ffebad_start (FFEBAD_LABEL_NUMBER_INVALID);      ffebad_here (0, ffelex_token_where_line (label_token),		   ffelex_token_where_column (label_token));      ffebad_finish ();      return FALSE;    }  label = ffelab_find (label_value);  if (label == NULL)    {      label = ffelab_new (label_value);      ffelab_set_firstref_line (label,		 ffewhere_line_use (ffelex_token_where_line (label_token)));      ffelab_set_firstref_column (label,	     ffewhere_column_use (ffelex_token_where_column (label_token)));    }  switch (ffelab_type (label))    {    case FFELAB_typeUNKNOWN:      ffelab_set_type (label, FFELAB_typeASSIGNABLE);      break;    case FFELAB_typeASSIGNABLE:    case FFELAB_typeLOOPEND:    case FFELAB_typeFORMAT:    case FFELAB_typeNOTLOOP:    case FFELAB_typeENDIF:      break;    case FFELAB_typeUSELESS:      ffelab_set_type (label, FFELAB_typeANY);      ffestd_labeldef_any (label);      ffebad_start (FFEBAD_LABEL_USE_DEF);      ffebad_here (0, ffelab_firstref_line (label), ffelab_firstref_column (label));      ffebad_here (1, ffelex_token_where_line (label_token),		   ffelex_token_where_column (label_token));      ffebad_finish ();      ffestc_try_shriek_do_ ();      return FALSE;    default:      assert ("bad label" == NULL);      /* Fall through.  */    case FFELAB_typeANY:      break;    }  *x_label = label;  return TRUE;}/* ffestc_labelref_is_branch_ -- Reference to label in branch stmt   if (ffestc_labelref_is_branch_(label_token,&label))       // label ref is ok, label is filled in with ffelab object  */static boolffestc_labelref_is_branch_ (ffelexToken label_token, ffelab *x_label){  ffelab label;  ffelabValue label_value;  ffestw block;  unsigned long blocknum;  label_value = (ffelabValue) atol (ffelex_token_text (label_token));  if ((label_value == 0) || (label_value > FFELAB_valueMAX))    {      ffebad_start (FFEBAD_LABEL_NUMBER_INVALID);      ffebad_here (0, ffelex_token_where_line (label_token),		   ffelex_token_where_column (label_token));      ffebad_finish ();      return FALSE;    }  label = ffelab_find (label_value);  if (label == NULL)    {      label = ffelab_new (label_value);      ffelab_set_firstref_line (label,		 ffewhere_line_use (ffelex_token_where_line (label_token)));      ffelab_set_firstref_column (label,	     ffewhere_column_use (ffelex_token_where_column (label_token)));    }  switch (ffelab_type (label))    {    case FFELAB_typeUNKNOWN:    case FFELAB_typeASSIGNABLE:      ffelab_set_type (label, FFELAB_typeNOTLOOP);      ffelab_set_blocknum (label, ffestw_blocknum (ffestw_stack_top ()));      break;    case FFELAB_typeLOOPEND:      if (ffelab_blocknum (label) != 0)	break;			/* Already taken care of. */      for (block = ffestw_top_do (ffestw_stack_top ());	   (block != NULL) && (ffestw_label (block) != label);	   block = ffestw_top_do (ffestw_previous (block)))	;			/* Find most recent DO <label> ancestor. */      if (block == NULL)	{			/* Reference to within a (dead) block. */	  ffebad_start (FFEBAD_LABEL_BLOCK);	  ffebad_here (0, ffelab_definition_line (label),		       ffelab_definition_column (label));	  ffebad_here (1, ffelex_token_where_line (label_token),		       ffelex_token_where_column (label_token));	  ffebad_finish ();	  break;	}      ffelab_set_blocknum (label, ffestw_blocknum (block));      ffelab_set_firstref_line (label,		 ffewhere_line_use (ffelex_token_where_line (label_token)));      ffelab_set_firstref_column (label,	     ffewhere_column_use (ffelex_token_where_column (label_token)));      break;    case FFELAB_typeNOTLOOP:    case FFELAB_typeENDIF:      if (ffelab_blocknum (label) == ffestw_blocknum (ffestw_stack_top ()))	break;      blocknum = ffelab_blocknum (label);      for (block = ffestw_stack_top ();	   ffestw_blocknum (block) > blocknum;	   block = ffestw_previous (block))	;			/* Find most recent common ancestor. */      if (ffelab_blocknum (label) == ffestw_blocknum (block))	break;			/* Check again. */      if (!ffewhere_line_is_unknown (ffelab_definition_line (label)))	{			/* Reference to within a (dead) block. */	  ffebad_start (FFEBAD_LABEL_BLOCK);	  ffebad_here (0, ffelab_definition_line (label),		       ffelab_definition_column (label));	  ffebad_here (1, ffelex_token_where_line (label_token),		       ffelex_token_where_column (label_token));	  ffebad_finish ();	  break;	}      ffelab_set_blocknum (label, ffestw_blocknum (block));      break;    case FFELAB_typeFORMAT:      if (ffewhere_line_is_unknown (ffelab_definition_line (label)))	{	  ffelab_set_type (label, FFELAB_typeANY);	  ffestd_labeldef_any (label);	  ffebad_start (FFEBAD_LABEL_USE_USE);	  ffebad_here (0, ffelab_firstref_line (label), ffelab_firstref_column (label));	  ffebad_here (1, ffelex_token_where_line (label_token),		       ffelex_token_where_column (label_token));	  ffebad_finish ();	  ffestc_try_shriek_do_ ();	  return FALSE;	}      /* Fall through. */    case FFELAB_typeUSELESS:      ffelab_set_type (label, FFELAB_typeANY);      ffestd_labeldef_any (label);      ffebad_start (FFEBAD_LABEL_USE_DEF);      ffebad_here (0, ffelab_definition_line (label), ffelab_definition_column (label));      ffebad_here (1, ffelex_token_where_line (label_token),		   ffelex_token_where_column (label_token));      ffebad_finish ();      ffestc_try_shriek_do_ ();      return FALSE;    default:      assert ("bad label" == NULL);      /* Fall through.  */    case FFELAB_typeANY:      break;    }  *x_label = label;  return TRUE;}/* ffestc_labelref_is_format_ -- Reference to label in [FMT=] specification   if (ffestc_labelref_is_format_(label_token,&label))       // label ref is ok, label is filled in with ffelab object  */static boolffestc_labelref_is_format_ (ffelexToken label_token, ffelab *x_label){  ffelab label;  ffelabValue label_value;  label_value = (ffelabValue) atol (ffelex_token_text (label_token));  if ((label_value == 0) || (label_value > FFELAB_valueMAX))    {      ffebad_start (FFEBAD_LABEL_NUMBER_INVALID);      ffebad_here (0, ffelex_token_where_line (label_token),		   ffelex_token_where_column (label_token));      ffebad_finish ();      return FALSE;    }  label = ffelab_find (label_value);  if (label == NULL)    {      label = ffelab_new (label_value);      ffelab_set_firstref_line (label,		 ffewhere_line_use (ffelex_token_where_line (label_token)));      ffelab_set_firstref_column (label,	     ffewhere_column_use (ffelex_token_where_column (label_token)));    }  switch (ffelab_type (label))    {    case FFELAB_typeUNKNOWN:    case FFELAB_typeASSIGNABLE:      ffelab_set_type (label, FFELAB_typeFORMAT);      break;    case FFELAB_typeFORMAT:      break;    case FFELAB_typeLOOPEND:    case FFELAB_typeNOTLOOP:      if (ffewhere_line_is_unknown (ffelab_definition_line (label)))	{	  ffelab_set_type (label, FFELAB_typeANY);	  ffestd_labeldef_any (label);	  ffebad_start (FFEBAD_LABEL_USE_USE);	  ffebad_here (0, ffelab_firstref_line (label), ffelab_firstref_column (label));	  ffebad_here (1, ffelex_token_where_line (label_token),		       ffelex_token_where_column (label_token));	  ffebad_finish ();	  ffestc_try_shriek_do_ ();	  return FALSE;	}      /* Fall through. */    case FFELAB_typeUSELESS:    case FFELAB_typeENDIF:      ffelab_set_type (label, FFELAB_typeANY);      ffestd_labeldef_any (label);      ffebad_start (FFEBAD_LABEL_USE_DEF);      ffebad_here (0, ffelab_definition_line (label), ffelab_definition_column (label));      ffebad_here (1, ffelex_token_where_line (label_token),		   ffelex_token_where_column (label_token));      ffebad_finish ();      ffestc_try_shriek_do_ ();      return FALSE;    default:      assert ("bad label" == NULL);      /* Fall through.  */    case FFELAB_typeANY:      break;    }  ffestc_try_shriek_do_ ();  *x_label = label;  return TRUE;}/* ffestc_labelref_is_loopend_ -- Reference to label in DO stmt   if (ffestc_labelref_is_loopend_(label_token,&label))       // label ref is ok, label is filled in with ffelab object  */static boolffestc_labelref_is_loopend_ (ffelexToken label_token, ffelab *x_label){  ffelab label;  ffelabValue label_value;  label_value = (ffelabValue) atol (ffelex_token_text (label_token));  if ((label_value == 0) || (label_value > FFELAB_valueMAX))    {      ffebad_start (FFEBAD_LABEL_NUMBER_INVALID);      ffebad_here (0, ffelex_token_where_line (label_token),		   ffelex_token_where_column (label_token));      ffebad_finish ();      return FALSE;    }  label = ffelab_find (label_value);  if (label == NULL)    {      label = ffelab_new (label_value);      ffelab_set_doref_line (label,		 ffewhere_line_use (ffelex_token_where_line (label_token)));      ffelab_set_doref_column (label,	     ffewhere_column_use (ffelex_token_where_column (label_token)));    }  switch (ffelab_type (label))    {    case FFELAB_typeASSIGNABLE:      ffelab_set_doref_line (label,		 ffewhere_line_use (ffelex_token_where_line (label_token)));      ffelab_set_doref_column (label,	     ffewhere_column_use (ffelex_token_where_column (label_token)));      ffewhere_line_kill (ffelab_firstref_line (label));      ffelab_set_firstref_line (label, ffewhere_line_unknown ());      ffewhere_column_kill (ffelab_firstref_column (label));      ffelab_set_firstref_column (label, ffewhere_column_unknown ());      /* Fall through. */    case FFELAB_typeUNKNOWN:      ffelab_set_type (label, FFELAB_typeLOOPEND);      ffelab_set_blocknum (label, 0);      break;    case FFELAB_typeLOOPEND:      if (!ffewhere_line_is_unknown (ffelab_definition_line (label)))	{			/* Def must follow all refs. */	  ffelab_set_type (label, FFELAB_typeANY);	  ffestd_labeldef_any (label);	  ffebad_start (FFEBAD_LABEL_DEF_DO);	  ffebad_here (0, ffelab_definition_line (label),		       ffelab_definition_column (label));	  ffebad_here (1, ffelex_token_where_line (label_token),		       ffelex_token_where_column (label_token));	  ffebad_finish ();	  ffestc_try_shriek_do_ ();	  return FALSE;	}      if (ffelab_blocknum (label) != 0)	{			/* Had a branch ref earlier, can't go inside				   this new block! */	  ffelab_set_type (label, FFELAB_typeANY);	  ffestd_labeldef_any (label);	  ffebad_start (FFEBAD_LABEL_USE_USE);	  ffebad_here (0, ffelab_firstref_line (label),		       ffelab_firstref_column (label));	  ffebad_here (1, ffelex_token_where_line (label_token),		       ffelex_token_where_column (label_token));	  ffebad_finish ();	  ffestc_try_shriek_do_ ();	  return FALSE;	}      if ((ffestw_state (ffestw_stack_top ()) != FFESTV_stateDO)

⌨️ 快捷键说明

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