if (check_intrin && !ffe_is_90 () && !ffe_is_ugly_complex ()) {   if ((ffeexpr_stack_->previous != NULL) && ((reduced = ffeexpr_stack_->previous->exprstack->u.operand) != NULL) && (ffebld_op (reduced) == FFEBLD_opSYMTER) && (ffebld_symter_implementation (reduced) == FFEINTRIN_impREAL)) return (ffelexHandler) ffeexpr_token_intrincheck_;    if (ffebad_start (FFEBAD_INTRINSIC_CMPAMBIG)) { ffebad_string (ffeintrin_name_implementation (ffebld_symter_implementation (ffebld_left (ffeexpr_stack_->exprstack->u.operand)))); ffebad_here (0, ffelex_token_where_line (ffeexpr_stack_->exprstack->token), ffelex_token_where_column (ffeexpr_stack_->exprstack->token)); ffebad_finish (); } }
ffeexpr_token_arguments_ (ffelexToken ft, ffebld expr, ffelexToken t){  ffeexprExpr_ procedure;  ffebld reduced;  ffeinfo info;  bool is_function;  ffeexprContext ctx;  procedure = ffeexpr_stack_->exprstack;  info = ffebld_info (procedure->u.operand);  if (ffeinfo_where (info) == FFEINFO_whereCONSTANT)    {				/* Statement function (or subroutine, if				   there was such a thing). */      if ((expr == NULL)	  && ((ffe_is_pedantic ()	       && (ffeexpr_stack_->expr != NULL))	      || (ffelex_token_type (t) == FFELEX_typeCOMMA)))	{	  if (ffebad_start (FFEBAD_NULL_ARGUMENT))	    {	      ffebad_here (0, ffelex_token_where_line (ffeexpr_stack_->tokens[0]),		     ffelex_token_where_column (ffeexpr_stack_->tokens[0]));	      ffebad_here (1, ffelex_token_where_line (t),			   ffelex_token_where_column (t));	      ffebad_finish ();	    }	  if (ffeexpr_stack_->next_dummy != NULL)	    {			/* Don't bother if we're going to complain				   later! */	      expr = ffebld_new_conter		(ffebld_constant_new_integerdefault_val (0));	      ffebld_set_info (expr, ffeinfo_new_any ());	    }	}      if (expr == NULL)	;      else	{	  if (ffeexpr_stack_->next_dummy == NULL)	    {			/* Report later which was the first extra				   argument. */	      if (ffeexpr_stack_->tokens[1] == NULL)		{		  ffeexpr_stack_->tokens[1] = ffelex_token_use (ft);		  ffeexpr_stack_->num_args = 0;		}	      ++ffeexpr_stack_->num_args;	/* Count # of extra						   arguments. */	    }	  else	    {	      if (ffeinfo_rank (ffebld_info (expr)) != 0)		{		  if (ffebad_start (FFEBAD_ARRAY_AS_SFARG))		    {		      ffebad_here (0,			ffelex_token_where_line (ffeexpr_stack_->tokens[0]),		      ffelex_token_where_column (ffeexpr_stack_->tokens[0]));		      ffebad_here (1, ffelex_token_where_line (ft),				   ffelex_token_where_column (ft));		      ffebad_string (ffesymbol_text (ffesymbol_sfdummyparent						 (ffebld_symter (ffebld_head					   (ffeexpr_stack_->next_dummy)))));		      ffebad_finish ();		    }		}	      else		{		  expr = ffeexpr_convert_expr (expr, ft,				   ffebld_head (ffeexpr_stack_->next_dummy),					       ffeexpr_stack_->tokens[0],					       FFEEXPR_contextLET);		  ffebld_append_item (&ffeexpr_stack_->bottom, expr);		}	      --ffeexpr_stack_->num_args;	/* Count down # of args. */	      ffeexpr_stack_->next_dummy		= ffebld_trail (ffeexpr_stack_->next_dummy);	    }	}    }  else if ((expr != NULL) || ffe_is_ugly_comma ()	   || (ffelex_token_type (t) == FFELEX_typeCOMMA))    ffebld_append_item (&ffeexpr_stack_->bottom, expr);  switch (ffelex_token_type (t))    {    case FFELEX_typeCOMMA:      switch (ffeexpr_context_outer_ (ffeexpr_stack_))	{	case FFEEXPR_contextSFUNCDEF:	case FFEEXPR_contextSFUNCDEFACTUALARGEXPR_:	case FFEEXPR_contextSFUNCDEFINDEX_:	case FFEEXPR_contextSFUNCDEFINDEXORACTUALARGEXPR_:	  ctx = FFEEXPR_contextSFUNCDEFACTUALARG_;	  break;	case FFEEXPR_contextSFUNCDEFACTUALARG_:	case FFEEXPR_contextSFUNCDEFINDEXORACTUALARG_:	  assert ("bad context" == NULL);	  ctx = FFEEXPR_context;	  break;	default:	  ctx = FFEEXPR_contextACTUALARG_;	  break;	}      return (ffelexHandler) ffeexpr_rhs (ffeexpr_stack_->pool, ctx,					  ffeexpr_token_arguments_);    default:      break;    }  is_function = (ffeinfo_kind (info) != FFEINFO_kindSUBROUTINE);  if ((ffeinfo_where (info) == FFEINFO_whereCONSTANT)      && (ffeexpr_stack_->next_dummy != NULL))    {				/* Too few arguments. */      if (ffebad_start (FFEBAD_TOO_FEW_ARGUMENTS))	{	  char num[10];	  sprintf (num, "%" ffebldListLength_f "u", ffeexpr_stack_->num_args);	  ffebad_here (0, ffelex_token_where_line (t),		       ffelex_token_where_column (t));	  ffebad_here (1, ffelex_token_where_line (ffeexpr_stack_->tokens[0]),		     ffelex_token_where_column (ffeexpr_stack_->tokens[0]));	  ffebad_string (num);	  ffebad_string (ffesymbol_text (ffesymbol_sfdummyparent (ffebld_symter			      (ffebld_head (ffeexpr_stack_->next_dummy)))));	  ffebad_finish ();	}      for (;	   ffeexpr_stack_->next_dummy != NULL;	   ffeexpr_stack_->next_dummy	   = ffebld_trail (ffeexpr_stack_->next_dummy))	{	  expr = ffebld_new_conter (ffebld_constant_new_integerdefault_val (0));	  ffebld_set_info (expr, ffeinfo_new_any ());	  ffebld_append_item (&ffeexpr_stack_->bottom, expr);	}    }  if ((ffeinfo_where (info) == FFEINFO_whereCONSTANT)      && (ffeexpr_stack_->tokens[1] != NULL))    {				/* Too many arguments to statement function. */      if (ffebad_start (FFEBAD_TOO_MANY_ARGUMENTS))	{	  char num[10];	  sprintf (num, "%" ffebldListLength_f "u", ffeexpr_stack_->num_args);	  ffebad_here (0, ffelex_token_where_line (ffeexpr_stack_->tokens[1]),		     ffelex_token_where_column (ffeexpr_stack_->tokens[1]));	  ffebad_here (1, ffelex_token_where_line (ffeexpr_stack_->tokens[0]),		     ffelex_token_where_column (ffeexpr_stack_->tokens[0]));	  ffebad_string (num);	  ffebad_finish ();	}      ffelex_token_kill (ffeexpr_stack_->tokens[1]);    }  ffebld_end_list (&ffeexpr_stack_->bottom);  if (ffebld_op (procedure->u.operand) == FFEBLD_opANY)    {      reduced = ffebld_new_any ();      ffebld_set_info (reduced, ffeinfo_new_any ());    }  else    {      if (is_function)	reduced = ffebld_new_funcref (procedure->u.operand,				      ffeexpr_stack_->expr);      else	reduced = ffebld_new_subrref (procedure->u.operand,				      ffeexpr_stack_->expr);      if (ffebld_symter_generic (procedure->u.operand) != FFEINTRIN_genNONE)	ffeintrin_fulfill_generic (&reduced, &info, ffeexpr_stack_->tokens[0]);      else if (ffebld_symter_specific (procedure->u.operand)	       != FFEINTRIN_specNONE)	ffeintrin_fulfill_specific (&reduced, &info,				    ffeexpr_stack_->tokens[0]);      ffebld_set_info (reduced,		       ffeinfo_new (ffeinfo_basictype (info),				    ffeinfo_kindtype (info),				    0,				    FFEINFO_kindENTITY,				    FFEINFO_whereFLEETING,				    ffeinfo_size (info)));    }  if (ffebld_op (reduced) == FFEBLD_opFUNCREF)    reduced = ffeexpr_collapse_funcref (reduced, ffeexpr_stack_->tokens[0]);  ffeexpr_stack_->exprstack = procedure->previous;	/* Pops							   not-quite-operand off							   stack. */  procedure->u.operand = reduced;	/* Save the line/column ffewhere					   info. */  ffeexpr_exprstack_push_operand_ (procedure);	/* Push it back on stack. */  if (ffelex_token_type (t) == FFELEX_typeCLOSE_PAREN)    {      ffelex_token_kill (ffeexpr_stack_->tokens[0]);      ffeexpr_is_substr_ok_ = FALSE;	/* Nobody likes "FUNC(3)(1:1)".... */      return (ffelexHandler) ffeexpr_token_substrp_;    }  if (ffest_ffebad_start (FFEBAD_INVALID_TOKEN_IN_EXPRESSION))    {      ffebad_here (0, ffelex_token_where_line (t),		   ffelex_token_where_column (t));      ffebad_here (1, ffelex_token_where_line (ffeexpr_stack_->tokens[0]),		   ffelex_token_where_column (ffeexpr_stack_->tokens[0]));      ffebad_finish ();    }  ffelex_token_kill (ffeexpr_stack_->tokens[0]);  ffeexpr_is_substr_ok_ = FALSE;/* Nobody likes "FUNC(3)(1:1)".... */  return    (ffelexHandler) ffeexpr_find_close_paren_ (t,					       (ffelexHandler)					       ffeexpr_token_substrp_);}