#define skip(s) while(*s==' ') s++
/* special quote character for stu */
extern flag cblank
,cplus
; /*blanks in I and compulsory plus*/
char *f_s(),*f_list(),*i_tem(),*gt_num();
char *f_s(s
,curloc
) char *s
;
if(parenlvl
++ ==1) revloc
=curloc
;
if(op_gen(RET
,curloc
,0,0)<0 ||
if((s
=i_tem(s
))==NULL
) return(NULL
);
op_gen(REVERT
,revloc
,0,0);
if(ne_d(s
,&t
)) return(t
);
if((curloc
=op_gen(STACK
,n
,0,0))<0) return(NULL
);
case ':': op_gen(COLON
,0,0,0); break;
if(*++s
=='z') op_gen(BZ
,0,0,0);
case '/': op_gen(SLASH
,0,0,0); break;
case '-': sign
=1; s
++; /*OUTRAGEOUS CODING TRICK*/
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
case 'p': if(sign
) n
= -n
; op_gen(P
,n
,0,0); break;
case 'x': op_gen(X
,n
,0,0); break;
case 'h': op_gen(H
,n
,(int)(s
+1),0);
case '\'': op_gen(APOS
,(int)s
,0,0);
case 'x': op_gen(X
,1,0,0); break;
case 'p': op_gen(P
,1,0,0); break;
{ int n
,w
,d
,e
,found
=0,x
=0;
op_gen(x
==1?EE
:GE
,w
,d
,e
);
{ struct syl
*p
= &syl
[pc
];
{ fprintf(stderr
,"format too complicated:\n%s\n",
char *gt_num(s
,n
) char *s
; int *n
;
if(c
>'9' || c
<'0') break;
int cnt
[STKSZ
],ret
[STKSZ
],cp
,rp
;
return(do_fio(&one
,NULL
,0l));
do_fio(number
,ptr
,len
) ftnint
*number
; ftnlen len
; char *ptr
;
for(i
=0;i
<*number
;i
++,ptr
+=len
)
loop
: switch(type_f((p
= &syl
[pc
])->op
))
fprintf(stderr
,"unknown code in do_fio: %d\n%s\n",
err(elist
->cierr
,100,"do_fio");
if((n
=(*doed
)(p
,ptr
,len
))>0) err(elist
->cierr
,errno
,"fmt");
if(n
<0) err(elist
->ciend
,(EOF
),"fmt");
if((n
=(*dorevert
)()) != 0) return(n
);
workdone
=cp
=rp
=pc
=cursor
=0;
case REVERT
: return(REVERT
);
case STACK
: return(STACK
);
case T
: case TL
: case TR
:
{ if(*s
!=quote
) continue;
if(*++s
!=quote
) return(s
);
err(elist
->cierr
,100,"bad string");