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

📄 stu.c

📁 gcc-2.95.3 Linux下最常用的C编译器
💻 C
📖 第 1 页 / 共 3 页
字号:
ffesymbolffestu_sym_exec_transition (ffesymbol s){  ffeinfoKind skd;  ffeinfoWhere swh;  ffeinfoKind nkd;  ffeinfoWhere nwh;  ffesymbolAttrs sa;  ffesymbolAttrs na;  ffesymbolState ss;  ffesymbolState ns;  ffeintrinGen gen;  ffeintrinSpec spec;  ffeintrinImp imp;  bool needs_type = TRUE;	/* Implicit type assignment might be				   necessary. */  bool resolve_intrin = TRUE;	/* Might need to resolve intrinsic. */  assert (s != NULL);  sa = ffesymbol_attrs (s);  skd = ffesymbol_kind (s);  swh = ffesymbol_where (s);  ss = ffesymbol_state (s);  switch (ss)    {    case FFESYMBOL_stateNONE:      return s;			/* Assume caller will handle it. */    case FFESYMBOL_stateSEEN:      break;    case FFESYMBOL_stateUNCERTAIN:      ffestorag_exec_layout (s);      return s;			/* Already processed this one, or not				   necessary. */    case FFESYMBOL_stateUNDERSTOOD:      if (skd == FFEINFO_kindNAMELIST)	{	  ffebld_end_list (ffesymbol_ptr_to_listbottom (s));	  ffestu_list_exec_transition_ (ffesymbol_namelist (s));	}      else if ((swh == FFEINFO_whereLOCAL)	       && ((skd == FFEINFO_kindFUNCTION)		   || (skd == FFEINFO_kindSUBROUTINE)))	{	  ffestu_dummies_transition_ (ffecom_sym_exec_transition,				      ffesymbol_dummyargs (s));	  if ((skd == FFEINFO_kindFUNCTION)	      && !ffeimplic_establish_symbol (s))	    ffesymbol_error (s, ffesta_tokens[0]);	}      ffesymbol_reference (s, NULL, FALSE);      ffestorag_exec_layout (s);      ffesymbol_signal_unreported (s);	/* For debugging purposes. */      return s;    default:      assert ("bad status" == NULL);      return s;    }  ns = FFESYMBOL_stateUNDERSTOOD;	/* Only a few UNCERTAIN exceptions. */  na = sa;  nkd = skd;  nwh = swh;  assert (!(sa & FFESYMBOL_attrsANY));  if (sa & FFESYMBOL_attrsCOMMON)    {      assert (!(sa & ~(FFESYMBOL_attrsADJUSTS		       | FFESYMBOL_attrsARRAY		       | FFESYMBOL_attrsCOMMON		       | FFESYMBOL_attrsEQUIV		       | FFESYMBOL_attrsINIT		       | FFESYMBOL_attrsNAMELIST		       | FFESYMBOL_attrsSFARG		       | FFESYMBOL_attrsTYPE)));      nkd = FFEINFO_kindENTITY;      nwh = FFEINFO_whereCOMMON;    }  else if (sa & FFESYMBOL_attrsRESULT)    {				/* Result variable for function. */      assert (!(sa & ~(FFESYMBOL_attrsANYLEN		       | FFESYMBOL_attrsRESULT		       | FFESYMBOL_attrsSFARG		       | FFESYMBOL_attrsTYPE)));      nkd = FFEINFO_kindENTITY;      nwh = FFEINFO_whereRESULT;    }  else if (sa & FFESYMBOL_attrsSFUNC)    {				/* Statement function. */      assert (!(sa & ~(FFESYMBOL_attrsSFUNC		       | FFESYMBOL_attrsTYPE)));      nkd = FFEINFO_kindFUNCTION;      nwh = FFEINFO_whereCONSTANT;    }  else if (sa & FFESYMBOL_attrsEXTERNAL)    {      assert (!(sa & ~(FFESYMBOL_attrsDUMMY		       | FFESYMBOL_attrsEXTERNAL		       | FFESYMBOL_attrsTYPE)));      if (sa & FFESYMBOL_attrsTYPE)	{	  nkd = FFEINFO_kindFUNCTION;	  if (sa & FFESYMBOL_attrsDUMMY)	    nwh = FFEINFO_whereDUMMY;	  else	    {	      if (ffesta_is_entry_valid)		{		  nwh = FFEINFO_whereNONE;	/* DUMMY, GLOBAL. */		  ns = FFESYMBOL_stateUNCERTAIN;		}	      else		nwh = FFEINFO_whereGLOBAL;	    }	}      else	/* No TYPE. */	{	  nkd = FFEINFO_kindNONE;	/* FUNCTION, SUBROUTINE, BLOCKDATA. */	  needs_type = FALSE;	/* Only gets type if FUNCTION. */	  ns = FFESYMBOL_stateUNCERTAIN;	  if (sa & FFESYMBOL_attrsDUMMY)	    nwh = FFEINFO_whereDUMMY;	/* Not BLOCKDATA. */	  else	    {	      if (ffesta_is_entry_valid)		nwh = FFEINFO_whereNONE;	/* DUMMY, GLOBAL. */	      else		nwh = FFEINFO_whereGLOBAL;	    }	}    }  else if (sa & FFESYMBOL_attrsDUMMY)    {      assert (!(sa & FFESYMBOL_attrsEXTERNAL));	/* Handled above. */      assert (!(sa & ~(FFESYMBOL_attrsADJUSTABLE	/* Possible. */		       | FFESYMBOL_attrsADJUSTS	/* Possible. */		       | FFESYMBOL_attrsANYLEN	/* Possible. */		       | FFESYMBOL_attrsANYSIZE	/* Possible. */		       | FFESYMBOL_attrsARRAY	/* Possible. */		       | FFESYMBOL_attrsDUMMY	/* Have it. */		       | FFESYMBOL_attrsEXTERNAL		       | FFESYMBOL_attrsSFARG	/* Possible. */		       | FFESYMBOL_attrsTYPE)));	/* Possible. */      nwh = FFEINFO_whereDUMMY;      if (ffestu_symter_exec_transition_ (ffesymbol_dims (s)))	na = FFESYMBOL_attrsetNONE;      if (sa & (FFESYMBOL_attrsADJUSTS		| FFESYMBOL_attrsARRAY		| FFESYMBOL_attrsANYLEN		| FFESYMBOL_attrsNAMELIST		| FFESYMBOL_attrsSFARG))	nkd = FFEINFO_kindENTITY;      else if (sa & FFESYMBOL_attrsDUMMY)	/* Still okay. */	{	  if (!(sa & FFESYMBOL_attrsTYPE))	    needs_type = FALSE;	/* Don't assign type to SUBROUTINE! */	  nkd = FFEINFO_kindNONE;	/* ENTITY, FUNCTION, SUBROUTINE. */	  ns = FFESYMBOL_stateUNCERTAIN;	}    }  else if (sa & FFESYMBOL_attrsADJUSTS)    {				/* Must be DUMMY or COMMON at some point. */      assert (!(sa & (FFESYMBOL_attrsCOMMON		      | FFESYMBOL_attrsDUMMY)));	/* Handled above. */      assert (!(sa & ~(FFESYMBOL_attrsADJUSTS	/* Have it. */		       | FFESYMBOL_attrsCOMMON		       | FFESYMBOL_attrsDUMMY		       | FFESYMBOL_attrsEQUIV	/* Possible. */		       | FFESYMBOL_attrsINIT	/* Possible. */		       | FFESYMBOL_attrsNAMELIST	/* Possible. */		       | FFESYMBOL_attrsSFARG	/* Possible. */		       | FFESYMBOL_attrsTYPE)));	/* Possible. */      nkd = FFEINFO_kindENTITY;      if (sa & FFESYMBOL_attrsEQUIV)	{	  if ((ffesymbol_equiv (s) == NULL)	      || (ffeequiv_common (ffesymbol_equiv (s)) == NULL))	    na = FFESYMBOL_attrsetNONE;	/* Not equiv'd into COMMON. */	  else	    nwh = FFEINFO_whereCOMMON;	}      else if (!ffesta_is_entry_valid	       || (sa & (FFESYMBOL_attrsINIT			 | FFESYMBOL_attrsNAMELIST)))	na = FFESYMBOL_attrsetNONE;      else	nwh = FFEINFO_whereDUMMY;    }  else if (sa & FFESYMBOL_attrsSAVE)    {      assert (!(sa & ~(FFESYMBOL_attrsARRAY		       | FFESYMBOL_attrsEQUIV		       | FFESYMBOL_attrsINIT		       | FFESYMBOL_attrsNAMELIST		       | FFESYMBOL_attrsSAVE		       | FFESYMBOL_attrsSFARG		       | FFESYMBOL_attrsTYPE)));      nkd = FFEINFO_kindENTITY;      nwh = FFEINFO_whereLOCAL;    }  else if (sa & FFESYMBOL_attrsEQUIV)    {      assert (!(sa & FFESYMBOL_attrsCOMMON));	/* Handled above. */      assert (!(sa & ~(FFESYMBOL_attrsADJUSTS	/* Possible. */		       | FFESYMBOL_attrsARRAY	/* Possible. */		       | FFESYMBOL_attrsCOMMON		       | FFESYMBOL_attrsEQUIV	/* Have it. */		       | FFESYMBOL_attrsINIT	/* Possible. */		       | FFESYMBOL_attrsNAMELIST	/* Possible. */		       | FFESYMBOL_attrsSAVE	/* Possible. */		       | FFESYMBOL_attrsSFARG	/* Possible. */		       | FFESYMBOL_attrsTYPE)));	/* Possible. */      nkd = FFEINFO_kindENTITY;      nwh = ffestu_equiv_ (s);    }  else if (sa & FFESYMBOL_attrsNAMELIST)    {      assert (!(sa & (FFESYMBOL_attrsADJUSTS		      | FFESYMBOL_attrsCOMMON		      | FFESYMBOL_attrsEQUIV		      | FFESYMBOL_attrsSAVE)));	/* Handled above. */      assert (!(sa & ~(FFESYMBOL_attrsADJUSTS		       | FFESYMBOL_attrsARRAY	/* Possible. */		       | FFESYMBOL_attrsCOMMON		       | FFESYMBOL_attrsEQUIV		       | FFESYMBOL_attrsINIT	/* Possible. */		       | FFESYMBOL_attrsNAMELIST	/* Have it. */		       | FFESYMBOL_attrsSAVE		       | FFESYMBOL_attrsSFARG	/* Possible. */		       | FFESYMBOL_attrsTYPE)));	/* Possible. */      nkd = FFEINFO_kindENTITY;      nwh = FFEINFO_whereLOCAL;    }  else if (sa & FFESYMBOL_attrsINIT)    {      assert (!(sa & (FFESYMBOL_attrsADJUSTS		      | FFESYMBOL_attrsCOMMON		      | FFESYMBOL_attrsEQUIV		      | FFESYMBOL_attrsNAMELIST		      | FFESYMBOL_attrsSAVE)));	/* Handled above. */      assert (!(sa & ~(FFESYMBOL_attrsADJUSTS		       | FFESYMBOL_attrsARRAY	/* Possible. */		       | FFESYMBOL_attrsCOMMON		       | FFESYMBOL_attrsEQUIV		       | FFESYMBOL_attrsINIT	/* Have it. */		       | FFESYMBOL_attrsNAMELIST		       | FFESYMBOL_attrsSAVE		       | FFESYMBOL_attrsSFARG	/* Possible. */		       | FFESYMBOL_attrsTYPE)));	/* Possible. */      nkd = FFEINFO_kindENTITY;      nwh = FFEINFO_whereLOCAL;    }  else if (sa & FFESYMBOL_attrsSFARG)    {      assert (!(sa & (FFESYMBOL_attrsADJUSTS		      | FFESYMBOL_attrsCOMMON		      | FFESYMBOL_attrsDUMMY		      | FFESYMBOL_attrsEQUIV		      | FFESYMBOL_attrsINIT		      | FFESYMBOL_attrsNAMELIST		      | FFESYMBOL_attrsRESULT		      | FFESYMBOL_attrsSAVE)));	/* Handled above. */      assert (!(sa & ~(FFESYMBOL_attrsADJUSTS		       | FFESYMBOL_attrsCOMMON		       | FFESYMBOL_attrsDUMMY		       | FFESYMBOL_attrsEQUIV		       | FFESYMBOL_attrsINIT		       | FFESYMBOL_attrsNAMELIST		       | FFESYMBOL_attrsRESULT		       | FFESYMBOL_attrsSAVE		       | FFESYMBOL_attrsSFARG	/* Have it. */		       | FFESYMBOL_attrsTYPE)));	/* Possible. */      nkd = FFEINFO_kindENTITY;      if (ffesta_is_entry_valid)	{	  nwh = FFEINFO_whereNONE;	/* DUMMY, LOCAL. */	  ns = FFESYMBOL_stateUNCERTAIN;	}      else	nwh = FFEINFO_whereLOCAL;    }  else if (sa & (FFESYMBOL_attrsADJUSTABLE | FFESYMBOL_attrsANYSIZE))    {      assert (!(sa & ~(FFESYMBOL_attrsADJUSTABLE		       | FFESYMBOL_attrsANYLEN		       | FFESYMBOL_attrsANYSIZE		       | FFESYMBOL_attrsARRAY		       | FFESYMBOL_attrsTYPE)));      nkd = FFEINFO_kindENTITY;      if (ffestu_symter_exec_transition_ (ffesymbol_dims (s)))	na = FFESYMBOL_attrsetNONE;      if (sa & (FFESYMBOL_attrsANYLEN | FFESYMBOL_attrsANYSIZE))	nwh = FFEINFO_whereDUMMY;      else if (sa & (FFESYMBOL_attrsADJUSTABLE | FFESYMBOL_attrsANYSIZE))	/* Still okay.  */	{	  nwh = FFEINFO_whereNONE;	/* DUMMY, LOCAL. */	  ns = FFESYMBOL_stateUNCERTAIN;	}    }  else if (sa & FFESYMBOL_attrsARRAY)    {      assert (!(sa & (FFESYMBOL_attrsADJUSTABLE		      | FFESYMBOL_attrsANYSIZE		      | FFESYMBOL_attrsCOMMON		      | FFESYMBOL_attrsDUMMY		      | FFESYMBOL_attrsEQUIV		      | FFESYMBOL_attrsINIT		      | FFESYMBOL_attrsNAMELIST		      | FFESYMBOL_attrsSAVE)));	/* Handled above. */      assert (!(sa & ~(FFESYMBOL_attrsADJUSTABLE		       | FFESYMBOL_attrsANYLEN	/* Possible. */		       | FFESYMBOL_attrsANYSIZE		       | FFESYMBOL_attrsARRAY	/* Have it. */		       | FFESYMBOL_attrsCOMMON		       | FFESYMBOL_attrsDUMMY		       | FFESYMBOL_attrsEQUIV		       | FFESYMBOL_attrsINIT		       | FFESYMBOL_attrsNAMELIST		       | FFESYMBOL_attrsSAVE		       | FFESYMBOL_attrsTYPE)));	/* Possible. */      nkd = FFEINFO_kindENTITY;      if (sa & FFESYMBOL_attrsANYLEN)	{	  assert (ffesta_is_entry_valid);	/* Already diagnosed. */	  nwh = FFEINFO_whereDUMMY;	}      else	{	  if (ffesta_is_entry_valid)	    {	      nwh = FFEINFO_whereNONE;	/* DUMMY, LOCAL. */	      ns = FFESYMBOL_stateUNCERTAIN;	    }	  else	    nwh = FFEINFO_whereLOCAL;	}    }  else if (sa & FFESYMBOL_attrsANYLEN)    {      assert (!(sa & (FFESYMBOL_attrsADJUSTABLE		      | FFESYMBOL_attrsANYSIZE		      | FFESYMBOL_attrsARRAY		      | FFESYMBOL_attrsDUMMY		      | FFESYMBOL_attrsRESULT)));	/* Handled above. */      assert (!(sa & ~(FFESYMBOL_attrsADJUSTABLE		       | FFESYMBOL_attrsANYLEN	/* Have it. */		       | FFESYMBOL_attrsANYSIZE		       | FFESYMBOL_attrsARRAY		       | FFESYMBOL_attrsDUMMY		       | FFESYMBOL_attrsRESULT		       | FFESYMBOL_attrsTYPE)));	/* Have it too. */      if (ffesta_is_entry_valid)	{	  nkd = FFEINFO_kindNONE;	/* ENTITY, FUNCTION. */

⌨️ 快捷键说明

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