tok == tSYMBOL && *str == PUBLIC_CHAR)
(tok == tSYMBOL && *str == PUBLIC_CHAR))
funcstub(int native){   int                 tok, tag;   char               *str;   cell                val;   char                symbolname[sNAMEMAX + 1];   symbol             *sym;   int                 opertok;   opertok = 0;   lastst = 0;   litidx = 0;			/* clear the literal pool */   tag = sc_addtag(NULL);   tok = lex(&val, &str);   if (native)     {	if (tok == tPUBLIC || tok == tSTOCK || tok == tSTATIC ||	    tok == tSYMBOL && *str == PUBLIC_CHAR)	   error(42);		/* invalid combination of class specifiers */     }   else     {	if (tok == tPUBLIC || tok == tSTATIC)	   tok = lex(&val, &str);     }				/* if */   if (tok == tOPERATOR)     {	opertok = operatorname(symbolname);	if (opertok == 0)	   return;		/* error message already given */	check_operatortag(opertok, tag, symbolname);     }   else     {	if (tok != tSYMBOL && freading)	  {	     error(10);		/* illegal function or declaration */	     return;	  }			/* if */	strcpy(symbolname, str);     }				/* if */   needtoken('(');		/* only functions may be native/forward */   sym = fetchfunc(symbolname, tag);	/* get a pointer to the					 * function entry */   if (sym == NULL)      return;   if (native)     {	sym->usage = uNATIVE | uRETVALUE | uDEFINE;	sym->x.lib = curlibrary;     }				/* if */   declargs(sym);   /* "declargs()" found the ")" */   if (!operatoradjust(opertok, sym, symbolname, tag))      sym->usage &= ~uDEFINE;   /* for a native operator, also need to specify an "exported"     * function name; for a native function, this is optional    */   if (native)     {	if (opertok != 0)	  {	     needtoken('=');	     lexpush();		/* push back, for matchtoken() to retrieve again */	  }			/* if */	if (matchtoken('='))	  {	     /* allow number or symbol */	     if (matchtoken(tSYMBOL))	       {		  tokeninfo(&val, &str);		  if (strlen(str) > sEXPMAX)		    {		       error(220, str, sEXPMAX);		       str[sEXPMAX] = '\0';		    }		/* if */		  insert_alias(sym->name, str);	       }	     else	       {		  constexpr(&val, NULL);		  sym->addr = val;		  /*		   * ?? Must mark this address, so that it won't be generated again		   * and it won't be written to the output file. At the moment,		   * I have assumed that this syntax is only valid if val < 0.		   * To properly mix "normal" native functions and indexed native		   * functions, one should use negative indices anyway.		   * Special code for a negative index in sym->addr exists in		   * SC4.C (ffcall()) and in SC6.C (the loops for counting the		   * number of native variables and for writing them).		   */	       }		/* if */	  }			/* if */     }				/* if */   needtoken(tTERM);   litidx = 0;			/* clear the literal pool */   /* clear local variables queue */   delete_symbols(&loctab, 0, TRUE, TRUE);}