int ne_d (unit *ftnunit, char *s, char **p) { int n, x, sign = 0; switch (*s) { default: return (0); case ':': (void) op_gen (ftnunit, COLON, 0, 0, 0); break; case '$': if (ftnunit->uwrt & WR_OP) (void) op_gen (ftnunit, NONL, 0, 0, 0); break; case 'B': case 'b': if (*++s == 'z' || *s == 'Z') (void) op_gen (ftnunit, BZ, 0, 0, 0); #ifdef I90 else if (*s == 'n' || *s == 'N') (void) op_gen (ftnunit, BN, 0, 0, 0); else { s--; /* get back to the initial 'B' */ return(0); } #else else (void) op_gen (ftnunit, BN, 0, 0, 0); #endif break; case 'S': case 's': if (*(s + 1) == 's' || *(s + 1) == 'S') { x = SS; s++; } else if (*(s + 1) == 'p' || *(s + 1) == 'P') { x = SP; s++; } else x = S; (void) op_gen (ftnunit, x, 0, 0, 0); break; case '/': #ifdef I90 (void) op_gen (ftnunit, SLASH, 1, 0, 0); #else (void) op_gen (ftnunit, SLASH, 0, 0, 0); #endif break; case '-': sign = 1; /* OUTRAGEOUS CODING TRICK */ case '+': 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 MYESC: s = gt_num (ftnunit, s, &n); switch (*s) { default: return (0); case 'P': case 'p': if (sign) n = -n; (void) op_gen (ftnunit, P, n, 0, 0); break; case 'X': case 'x': if (sign) return (0); (void) op_gen (ftnunit, X, n, 0, 0); break; case 'H': case 'h': if (sign) return (0); (void) op_gen (ftnunit, H, n, (long) (s + 1), 0); s += n; break; #ifdef I90 case '/': if (sign) return (0); (void) op_gen (ftnunit, SLASH, n, 0, 0); break; #endif } break; case MYQUOTE: case MYHOLL: case '"': case '\'': (void) op_gen (ftnunit, APOS, (long) s, 0, 0); if ((*p = ap_end (ftnunit, s)) == NULL) return (0); return (1); case 'T': case 't': if (*(s + 1) == 'l' || *(s + 1) == 'L') { x = TL; s++; } else if (*(s + 1) == 'r' || *(s + 1) == 'R') { x = TR; s++; } else x = T; s = gt_num (ftnunit, s + 1, &n); s--; (void) op_gen (ftnunit, x, n, 0, 0); break; case 'X': case 'x': (void) op_gen (ftnunit, X, 1, 0, 0); break; case 'P': case 'p': (void) op_gen (ftnunit, P, 1, 0, 0); break; }
ne_d(char *s, char **p) #endif { int n,x,sign=0; struct syl *sp; switch(*s) { default: return(0); case ':': (void) op_gen(COLON,0,0,0); break; case '$': (void) op_gen(NONL, 0, 0, 0); break; case 'B': case 'b': if(*++s=='z' || *s == 'Z') (void) op_gen(BZ,0,0,0); else (void) op_gen(BN,0,0,0); break; case 'S': case 's': if(*(s+1)=='s' || *(s+1) == 'S') { x=SS; s++; } else if(*(s+1)=='p' || *(s+1) == 'P') { x=SP; s++; } else x=S; (void) op_gen(x,0,0,0); break; case '/': (void) op_gen(SLASH,0,0,0); break; case '-': sign=1; case '+': s++; /*OUTRAGEOUS CODING TRICK*/ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (!(s=gt_num(s,&n,0))) { bad: *p = 0; return 1; } switch(*s) { default: return(0); case 'P': case 'p': if(sign) n= -n; (void) op_gen(P,n,0,0); break; case 'X': case 'x': (void) op_gen(X,n,0,0); break; case 'H': case 'h': sp = &f__syl[op_gen(H,n,0,0)]; sp->p2.s = s + 1; s+=n; break; } break; case GLITCH: case '"': case '\'': sp = &f__syl[op_gen(APOS,0,0,0)]; sp->p2.s = s; if((*p = ap_end(s)) == NULL) return(0); return(1); case 'T': case 't': if(*(s+1)=='l' || *(s+1) == 'L') { x=TL; s++; } else if(*(s+1)=='r'|| *(s+1) == 'R') { x=TR; s++; } else x=T; if (!(s=gt_num(s+1,&n,0))) goto bad; 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); }
int ne_d(const char *s, const char **p) { int n; int x; int sign = 0; struct syl *sp; switch (*s) { default: return 0; case ':': (void) op_gen(COLON, 0, 0, 0); break; case '$': (void) op_gen(NONL, 0, 0, 0); break; case 'B': case 'b': if ((*++s=='z') || (*s == 'Z')) (void) op_gen(BZ, 0, 0, 0); else (void) op_gen(BN, 0, 0, 0); break; case 'S': case 's': if ((*(s + 1) == 's') || (*(s + 1) == 'S')) { x = SS; s++; } else if ((*(s + 1) == 'p') || (*(s + 1) == 'P')) { x = SP; s++; } else x = S; (void) op_gen(x, 0, 0, 0); break; case '/': (void) op_gen(SLASH, 0, 0, 0); break; case '-': sign = 1; case '+': s++; /*OUTRAGEOUS CODING TRICK*/ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': s = gt_num(s, &n); switch (*s) { default: return 0; case 'P': case 'p': if (sign) n= -n; (void) op_gen(P, n, 0, 0); break; case 'X': case 'x': (void) op_gen(X, n, 0, 0); break; case 'H': case 'h': sp = &f__syl[op_gen(H, n, 0, 0)]; *(const char **)&sp->p2 = s + 1; s += n; break; } break; case GLITCH: case '"': case '\'': sp = &f__syl[op_gen(APOS, 0, 0, 0)]; *(const char **)&sp->p2 = s; if ((*p = ap_end(s)) == NULL) return 0; return 1; case 'T': case 't': if ((*(s + 1) == 'l') || (*(s + 1) == 'L')) { x=TL; s++; } else if ((*(s + 1) == 'r') || (*(s + 1) == 'R')) { x=TR; s++; } 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; }