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

📄 libi77

📁 把fortran语言编的程序转为c语言编的程序, 运行环境linux
💻
📖 第 1 页 / 共 5 页
字号:
-		}-		else x=T;-		s=gt_num(s+1,&n);-		s--;-		(void) op_gen(x,n,0,0);-		break;-	case 'X':-	case 'x': (void) op_gen(X,1,0,0); break;-	case 'P':-	case 'p': (void) op_gen(P,1,0,0); break;-	}-	s++;-	*p=s;-	return(1);-}-#ifdef KR_headers-e_d(s,p) char *s,**p;-#else-e_d(char *s, char **p)-#endif-{	int i,im,n,w,d,e,found=0,x=0;-	char *sv=s;-	s=gt_num(s,&n);-	(void) op_gen(STACK,n,0,0);-	switch(*s++)-	{-	default: break;-	case 'E':-	case 'e':	x=1;-	case 'G':-	case 'g':-		found=1;-		s=gt_num(s,&w);-		if(w==0) break;-		if(*s=='.')-		{	s++;-			s=gt_num(s,&d);-		}-		else d=0;-		if(*s!='E' && *s != 'e')-			(void) op_gen(x==1?E:G,w,d,0);	/* default is Ew.dE2 */-		else-		{	s++;-			s=gt_num(s,&e);-			(void) op_gen(x==1?EE:GE,w,d,e);-		}-		break;-	case 'O':-	case 'o':-		i = O;-		im = OM;-		goto finish_I;-	case 'Z':-	case 'z':-		i = Z;-		im = ZM;-		goto finish_I;-	case 'L':-	case 'l':-		found=1;-		s=gt_num(s,&w);-		if(w==0) break;-		(void) op_gen(L,w,0,0);-		break;-	case 'A':-	case 'a':-		found=1;-		skip(s);-		if(*s>='0' && *s<='9')-		{	s=gt_num(s,&w);-			if(w==0) break;-			(void) op_gen(AW,w,0,0);-			break;-		}-		(void) op_gen(A,0,0,0);-		break;-	case 'F':-	case 'f':-		found=1;-		s=gt_num(s,&w);-		if(w==0) break;-		if(*s=='.')-		{	s++;-			s=gt_num(s,&d);-		}-		else d=0;-		(void) op_gen(F,w,d,0);-		break;-	case 'D':-	case 'd':-		found=1;-		s=gt_num(s,&w);-		if(w==0) break;-		if(*s=='.')-		{	s++;-			s=gt_num(s,&d);-		}-		else d=0;-		(void) op_gen(D,w,d,0);-		break;-	case 'I':-	case 'i':-		i = I;-		im = IM;- finish_I:-		found=1;-		s=gt_num(s,&w);-		if(w==0) break;-		if(*s!='.')-		{	(void) op_gen(i,w,0,0);-			break;-		}-		s++;-		s=gt_num(s,&d);-		(void) op_gen(im,w,d,0);-		break;-	}-	if(found==0)-	{	f__pc--; /*unSTACK*/-		*p=sv;-		return(0);-	}-	*p=s;-	return(1);-}-#ifdef KR_headers-char *i_tem(s) char *s;-#else-char *i_tem(char *s)-#endif-{	char *t;-	int n,curloc;-	if(*s==')') return(s);-	if(ne_d(s,&t)) return(t);-	if(e_d(s,&t)) return(t);-	s=gt_num(s,&n);-	if((curloc=op_gen(STACK,n,0,0))<0) return(NULL);-	return(f_s(s,curloc));-}-#ifdef KR_headers-char *f_list(s) char *s;-#else-char *f_list(char *s)-#endif-{-	for(;*s!=0;)-	{	skip(s);-		if((s=i_tem(s))==NULL) return(NULL);-		skip(s);-		if(*s==',') s++;-		else if(*s==')')-		{	if(--f__parenlvl==0)-			{-				(void) op_gen(REVERT,f__revloc,0,0);-				return(++s);-			}-			(void) op_gen(GOTO,0,0,0);-			return(++s);-		}-	}-	return(NULL);-}--#ifdef KR_headers-pars_f(s) char *s;-#else-pars_f(char *s)-#endif-{-	f__parenlvl=f__revloc=f__pc=0;-	if(f_s(s,0) == NULL)-	{-		return(-1);-	}-	return(0);-}-#define STKSZ 10-int f__cnt[STKSZ],f__ret[STKSZ],f__cp,f__rp;-flag f__workdone, f__nonl;--#ifdef KR_headers-type_f(n)-#else-type_f(int n)-#endif-{-	switch(n)-	{-	default:-		return(n);-	case RET1:-		return(RET1);-	case REVERT: return(REVERT);-	case GOTO: return(GOTO);-	case STACK: return(STACK);-	case X:-	case SLASH:-	case APOS: case H:-	case T: case TL: case TR:-		return(NED);-	case F:-	case I:-	case IM:-	case A: case AW:-	case O: case OM:-	case L:-	case E: case EE: case D:-	case G: case GE:-	case Z: case ZM:-		return(ED);-	}-}-#ifdef KR_headers-integer do_fio(number,ptr,len) ftnint *number; ftnlen len; char *ptr;-#else-integer do_fio(ftnint *number, char *ptr, ftnlen len)-#endif-{	struct syl *p;-	int n,i;-	for(i=0;i<*number;i++,ptr+=len)-	{-loop:	switch(type_f((p= &f__syl[f__pc])->op))-	{-	default:-		fprintf(stderr,"unknown code in do_fio: %d\n%s\n",-			p->op,f__fmtbuf);-		err(f__elist->cierr,100,"do_fio");-	case NED:-		if((*f__doned)(p))-		{	f__pc++;-			goto loop;-		}-		f__pc++;-		continue;-	case ED:-		if(f__cnt[f__cp]<=0)-		{	f__cp--;-			f__pc++;-			goto loop;-		}-		if(ptr==NULL)-			return((*f__doend)());-		f__cnt[f__cp]--;-		f__workdone=1;-		if((n=(*f__doed)(p,ptr,len))>0)-			errfl(f__elist->cierr,errno,"fmt");-		if(n<0)-			err(f__elist->ciend,(EOF),"fmt");-		continue;-	case STACK:-		f__cnt[++f__cp]=p->p1;-		f__pc++;-		goto loop;-	case RET1:-		f__ret[++f__rp]=p->p1;-		f__pc++;-		goto loop;-	case GOTO:-		if(--f__cnt[f__cp]<=0)-		{	f__cp--;-			f__rp--;-			f__pc++;-			goto loop;-		}-		f__pc=1+f__ret[f__rp--];-		goto loop;-	case REVERT:-		f__rp=f__cp=0;-		f__pc = p->p1;-		if(ptr==NULL)-			return((*f__doend)());-		if(!f__workdone) return(0);-		if((n=(*f__dorevert)()) != 0) return(n);-		goto loop;-	case COLON:-		if(ptr==NULL)-			return((*f__doend)());-		f__pc++;-		goto loop;-	case NONL:-		f__nonl = 1;-		f__pc++;-		goto loop;-	case S:-	case SS:-		f__cplus=0;-		f__pc++;-		goto loop;-	case SP:-		f__cplus = 1;-		f__pc++;-		goto loop;-	case P:	f__scale=p->p1;-		f__pc++;-		goto loop;-	case BN:-		f__cblank=0;-		f__pc++;-		goto loop;-	case BZ:-		f__cblank=1;-		f__pc++;-		goto loop;-	}-	}-	return(0);-}-en_fio(Void)-{	ftnint one=1;-	return(do_fio(&one,(char *)NULL,(ftnint)0));-}- VOID-fmt_bg(Void)-{-	f__workdone=f__cp=f__rp=f__pc=f__cursor=0;-	f__cnt[0]=f__ret[0]=0;-}//GO.SYSIN DD libI77/fmt.cecho libI77/fmt.h 1>&2sed >libI77/fmt.h <<'//GO.SYSIN DD libI77/fmt.h' 's/^-//'-struct syl-{	int op,p1,p2,p3;-};-#define RET1 1-#define REVERT 2-#define GOTO 3-#define X 4-#define SLASH 5-#define STACK 6-#define I 7-#define ED 8-#define NED 9-#define IM 10-#define APOS 11-#define H 12-#define TL 13-#define TR 14-#define T 15-#define COLON 16-#define S 17-#define SP 18-#define SS 19-#define P 20-#define BN 21-#define BZ 22-#define F 23-#define E 24-#define EE 25-#define D 26-#define G 27-#define GE 28-#define L 29-#define A 30-#define AW 31-#define O 32-#define NONL 33-#define OM 34-#define Z 35-#define ZM 36-extern struct syl f__syl[];-extern int f__pc,f__parenlvl,f__revloc;-typedef union-{	real pf;-	doublereal pd;-} ufloat;-typedef union-{	short is;-	char ic;-	integer il;-#ifdef Allow_TYQUAD-	longint ili;-#endif-} Uint;-#ifdef KR_headers-extern int (*f__doed)(),(*f__doned)();-extern int (*f__dorevert)();-extern int rd_ed(),rd_ned();-extern int w_ed(),w_ned();-#else-#ifdef __cplusplus-extern "C" {-#endif-extern int (*f__doed)(struct syl*, char*, ftnlen),(*f__doned)(struct syl*);-extern int (*f__dorevert)(void);-extern void fmt_bg(void);-extern int pars_f(char*);-extern int rd_ed(struct syl*, char*, ftnlen),rd_ned(struct syl*);-extern int w_ed(struct syl*, char*, ftnlen),w_ned(struct syl*);-extern int wrt_E(ufloat*, int, int, int, ftnlen);-extern int wrt_F(ufloat*, int, int, ftnlen);-extern int wrt_L(Uint*, int, ftnlen);-#ifdef __cplusplus-	}-#endif-#endif-extern flag f__cblank,f__cplus,f__workdone, f__nonl;-extern char *f__fmtbuf;-extern int f__scale;-#define GET(x) if((x=(*f__getn)())<0) return(x)-#define VAL(x) (x!='\n'?x:' ')-#define PUT(x) (*f__putn)(x)-extern int f__cursor;//GO.SYSIN DD libI77/fmt.hecho libI77/fmtlib.c 1>&2sed >libI77/fmtlib.c <<'//GO.SYSIN DD libI77/fmtlib.c' 's/^-//'-/*	@(#)fmtlib.c	1.2	*/-#define MAXINTLENGTH 23-#ifdef KR_headers-char *f__icvt(value,ndigit,sign, base) long value; int *ndigit,*sign;- register int base;-#else-char *f__icvt(long value, int *ndigit, int *sign, int base)-#endif-{	static char buf[MAXINTLENGTH+1];-	register int i;-	if(value>0) *sign=0;-	else if(value<0)-	{	value = -value;-		*sign= 1;-	}-	else-	{	*sign=0;-		*ndigit=1;-		buf[MAXINTLENGTH]='0';-		return(&buf[MAXINTLENGTH]);-	}-	for(i=MAXINTLENGTH-1;value>0;i--)-	{	*(buf+i)=(int)(value%base)+'0';-		value /= base;-	}-	*ndigit=MAXINTLENGTH-1-i;-	return(&buf[i+1]);-}//GO.SYSIN DD libI77/fmtlib.cecho libI77/fp.h 1>&2sed >libI77/fp.h <<'//GO.SYSIN DD libI77/fp.h' 's/^-//'-#define FMAX 40-#define EXPMAXDIGS 8-#define EXPMAX 99999999-/* FMAX = max number of nonzero digits passed to atof() */-/* EXPMAX = 10^EXPMAXDIGS - 1 = largest allowed exponent absolute value */--#ifdef V10 /* Research Tenth-Edition Unix */-#include "local.h"-#endif--/* MAXFRACDIGS and MAXINTDIGS are for wrt_F -- bounds (not necessarily-   tight) on the maximum number of digits to the right and left of- * the decimal point.- */--#ifdef VAX-#define MAXFRACDIGS 56-#define MAXINTDIGS 38-#else-#ifdef CRAY-#define MAXFRACDIGS 9880-#define MAXINTDIGS 9864-#else-/* values that suffice for IEEE double */-#define MAXFRACDIGS 344-#define MAXINTDIGS 308-#endif-#endif//GO.SYSIN DD libI77/fp.hecho libI77/iio.c 1>&2sed >libI77/iio.c <<'//GO.SYSIN DD libI77/iio.c' 's/^-//'-#include "f2c.h"-#include "fio.h"-#include "fmt.h"-extern char *f__icptr;-char *f__icend;-extern icilist *f__svic;-int f__icnum;-extern int f__hiwater;-z_getc(Void)-{-	if(f__recpos++ < f__svic->icirlen) {-		if(f__icptr >= f__icend) err(f__svic->iciend,(EOF),"endfile");-		return(*f__icptr++);-		}-	return '\n';-}-#ifdef KR_headers-z_putc(c)-#else-z_putc(int c)-#endif-{-	if(f__icptr >= f__icend) err(f__svic->icierr,110,"inwrite");-	if(f__recpos++ < f__svic->icirlen)-		*f__icptr++ = c;-	else	err(f__svic->icierr,110,"recend");-	return 0;-}-z_rnew(Void)-{-	f__icptr = f__svic->iciunit + (++f__icnum)*f__svic->icirlen;-	f__recpos = 0;-	f__cursor = 0;-	f__hiwater = 0;-	return 1;-}-- static int-z_endp(Void)-{-	(*f__donewrec)();-	return 0;-	}--#ifdef KR_headers-c_si(a) icilist *a;-#else-c_si(icilist *a)-#endif-{-	f__elist = (cilist *)a;-	f__fmtbuf=a->icifmt;-	if(pars_f(f__fmtbuf)<0)-		err(a->icierr,100,"startint");-	fmt_bg();-	f__sequential=f__formatted=1;-	f__external=0;-	f__cblank=f__cplus=f__scale=0;-	f__svic=a;-	f__icnum=f__recpos=0;-	f__cursor = 0;-	f__hiwater = 0;-	f__icptr = a->iciunit;-	f__icend = f__icptr + a->icirlen*a->icirnum;-	f__curunit = 0;-	f__cf = 0;-	return(0);-}-- int-iw_rev(Void)-{-	if(f__workdone)

⌨️ 快捷键说明

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