ffeintrin_fulfill_specific (&expr, &info, e->token);
ffeintrin_fulfill_specific (&expr, &info, NULL, e->token);
ffeexpr_token_name_lhs_ (ffelexToken t){  ffeexprExpr_ e;  ffeexprParenType_ paren_type;  ffesymbol s;  ffebld expr;  ffeinfo info;  switch (ffelex_token_type (t))    {    case FFELEX_typeOPEN_PAREN:      switch (ffeexpr_stack_->context)	{	case FFEEXPR_contextASSIGN:	case FFEEXPR_contextAGOTO:	case FFEEXPR_contextFILEUNIT_DF:	  goto just_name;	/* :::::::::::::::::::: */	default:	  break;	}      e = ffeexpr_expr_new_ ();      e->type = FFEEXPR_exprtypeOPERAND_;      e->token = ffelex_token_use (ffeexpr_tokens_[0]);      s = ffeexpr_declare_parenthesized_ (ffeexpr_tokens_[0], FALSE,					  &paren_type);      switch (ffesymbol_where (s))	{	case FFEINFO_whereLOCAL:	  if (ffeexpr_stack_->context == FFEEXPR_contextSUBROUTINEREF)	    ffesymbol_error (s, ffeexpr_tokens_[0]);	/* Recursion. */	  break;	case FFEINFO_whereINTRINSIC:	case FFEINFO_whereGLOBAL:	  if (ffeexpr_stack_->context != FFEEXPR_contextSUBROUTINEREF)	    ffesymbol_error (s, ffeexpr_tokens_[0]);	/* Can call intrin. */	  break;	case FFEINFO_whereCOMMON:	case FFEINFO_whereDUMMY:	case FFEINFO_whereRESULT:	  break;	case FFEINFO_whereNONE:	  break;	default:	  ffesymbol_error (s, ffeexpr_tokens_[0]);	  break;	}      if (ffesymbol_attrs (s) & FFESYMBOL_attrsANY)	{	  e->u.operand = ffebld_new_any ();	  ffebld_set_info (e->u.operand, ffeinfo_new_any ());	}      else	{	  e->u.operand = ffebld_new_symter (s,					    ffesymbol_generic (s),					    ffesymbol_specific (s),					    ffesymbol_implementation (s));	  ffebld_set_info (e->u.operand, ffesymbol_info (s));	}      ffeexpr_exprstack_push_ (e);	/* Not a complete operand yet. */      ffeexpr_stack_->tokens[0] = ffeexpr_tokens_[0];      switch (paren_type)	{	case FFEEXPR_parentypeSUBROUTINE_:	  ffebld_init_list (&ffeexpr_stack_->expr, &ffeexpr_stack_->bottom);	  return	    (ffelexHandler)	    ffeexpr_rhs (ffeexpr_stack_->pool,			 FFEEXPR_contextACTUALARG_,			 ffeexpr_token_arguments_);	case FFEEXPR_parentypeARRAY_:	  ffebld_init_list (&ffeexpr_stack_->expr, &ffeexpr_stack_->bottom);	  ffeexpr_stack_->bound_list = ffesymbol_dims (s);	  ffeexpr_stack_->rank = 0;	  ffeexpr_stack_->constant = TRUE;	  ffeexpr_stack_->immediate = TRUE;	  switch (ffeexpr_stack_->context)	    {	    case FFEEXPR_contextDATAIMPDOITEM_:	      return		(ffelexHandler)		ffeexpr_rhs (ffeexpr_stack_->pool,			     FFEEXPR_contextDATAIMPDOINDEX_,			     ffeexpr_token_elements_);	    case FFEEXPR_contextEQUIVALENCE:	      return		(ffelexHandler)		ffeexpr_rhs (ffeexpr_stack_->pool,			     FFEEXPR_contextEQVINDEX_,			     ffeexpr_token_elements_);	    default:	      return		(ffelexHandler)		ffeexpr_rhs (ffeexpr_stack_->pool,			     FFEEXPR_contextINDEX_,			     ffeexpr_token_elements_);	    }	case FFEEXPR_parentypeSUBSTRING_:	  e->u.operand = ffeexpr_collapse_symter (e->u.operand,						  ffeexpr_tokens_[0]);	  return	    (ffelexHandler)	    ffeexpr_rhs (ffeexpr_stack_->pool,			 FFEEXPR_contextINDEX_,			 ffeexpr_token_substring_);	case FFEEXPR_parentypeEQUIVALENCE_:	  ffebld_init_list (&ffeexpr_stack_->expr, &ffeexpr_stack_->bottom);	  ffeexpr_stack_->bound_list = ffesymbol_dims (s);	  ffeexpr_stack_->rank = 0;	  ffeexpr_stack_->constant = TRUE;	  ffeexpr_stack_->immediate = TRUE;	  return	    (ffelexHandler)	    ffeexpr_rhs (ffeexpr_stack_->pool,			 FFEEXPR_contextEQVINDEX_,			 ffeexpr_token_equivalence_);	case FFEEXPR_parentypeFUNCTION_:	/* Invalid case. */	case FFEEXPR_parentypeFUNSUBSTR_:	/* Invalid case. */	  ffesymbol_error (s, ffeexpr_tokens_[0]);	  /* Fall through. */	case FFEEXPR_parentypeANY_:	  e->u.operand = ffebld_new_any ();	  ffebld_set_info (e->u.operand, ffeinfo_new_any ());	  return	    (ffelexHandler)	    ffeexpr_rhs (ffeexpr_stack_->pool,			 FFEEXPR_contextACTUALARG_,			 ffeexpr_token_anything_);	default:	  assert ("bad paren type" == NULL);	  break;	}    case FFELEX_typeEQUALS:	/* As in "VAR=". */      switch (ffeexpr_stack_->context)	{	case FFEEXPR_contextIMPDOITEM_:	/* within						   "(,VAR=start,end[,incr])". */	case FFEEXPR_contextIMPDOITEMDF_:	  ffeexpr_stack_->context = FFEEXPR_contextIMPDOCTRL_;	  break;	case FFEEXPR_contextDATAIMPDOITEM_:	  ffeexpr_stack_->context = FFEEXPR_contextDATAIMPDOCTRL_;	  break;	default:	  break;	}      break;#if 0    case FFELEX_typePERIOD:    case FFELEX_typePERCENT:      assert ("FOO%, FOO. not yet supported!~~" == NULL);      break;#endif    default:      break;    }just_name:			/* :::::::::::::::::::: */  e = ffeexpr_expr_new_ ();  e->type = FFEEXPR_exprtypeOPERAND_;  e->token = ffeexpr_tokens_[0];  s = ffeexpr_declare_unadorned_ (ffeexpr_tokens_[0],				  (ffeexpr_stack_->context				   == FFEEXPR_contextSUBROUTINEREF));  switch (ffesymbol_where (s))    {    case FFEINFO_whereCONSTANT:      if ((ffeexpr_stack_->context != FFEEXPR_contextPARAMETER)	  || (ffesymbol_kind (s) != FFEINFO_kindENTITY))	ffesymbol_error (s, ffeexpr_tokens_[0]);      break;    case FFEINFO_whereIMMEDIATE:      if ((ffeexpr_stack_->context != FFEEXPR_contextDATAIMPDOCTRL_)	  && (ffeexpr_stack_->context != FFEEXPR_contextDATAIMPDOINDEX_))	ffesymbol_error (s, ffeexpr_tokens_[0]);      break;    case FFEINFO_whereLOCAL:      if (ffeexpr_stack_->context == FFEEXPR_contextSUBROUTINEREF)	ffesymbol_error (s, ffeexpr_tokens_[0]);	/* Recurse!. */      break;    case FFEINFO_whereINTRINSIC:      if (ffeexpr_stack_->context != FFEEXPR_contextSUBROUTINEREF)	ffesymbol_error (s, ffeexpr_tokens_[0]);	/* Can call intrin. */      break;    default:      break;    }  if (ffesymbol_attrs (s) & FFESYMBOL_attrsANY)    {      expr = ffebld_new_any ();      info = ffeinfo_new_any ();      ffebld_set_info (expr, info);    }  else    {      expr = ffebld_new_symter (s,				ffesymbol_generic (s),				ffesymbol_specific (s),				ffesymbol_implementation (s));      info = ffesymbol_info (s);      ffebld_set_info (expr, info);      if (ffesymbol_is_doiter (s))	{	  ffebad_start (FFEBAD_DOITER);	  ffebad_here (0, ffelex_token_where_line (ffeexpr_tokens_[0]),		       ffelex_token_where_column (ffeexpr_tokens_[0]));	  ffest_ffebad_here_doiter (1, s);	  ffebad_string (ffesymbol_text (s));	  ffebad_finish ();	}      expr = ffeexpr_collapse_symter (expr, ffeexpr_tokens_[0]);    }  if (ffeexpr_stack_->context == FFEEXPR_contextSUBROUTINEREF)    {      if (ffebld_op (expr) == FFEBLD_opANY)	{	  expr = ffebld_new_any ();	  ffebld_set_info (expr, ffeinfo_new_any ());	}      else	{	  expr = ffebld_new_subrref (expr, NULL);	/* No argument list. */	  if (ffesymbol_generic (s) != FFEINTRIN_genNONE)	    ffeintrin_fulfill_generic (&expr, &info, e->token);	  else if (ffesymbol_specific (s) != FFEINTRIN_specNONE)	    ffeintrin_fulfill_specific (&expr, &info, e->token);	  ffebld_set_info (expr,			   ffeinfo_new (ffeinfo_basictype (info),					ffeinfo_kindtype (info),					0,					FFEINFO_kindENTITY,					FFEINFO_whereFLEETING,					ffeinfo_size (info)));	}    }  e->u.operand = expr;  ffeexpr_exprstack_push_operand_ (e);  return (ffelexHandler) ffeexpr_finished_ (t);}