|
|
1.1 ! root 1: ! 2: # include <ingres.h> ! 3: # include "scanner.h" ! 4: # include <sccs.h> ! 5: # include <errors.h> ! 6: ! 7: SCCSID(@(#)s_comment.c 8.2 2/8/85) ! 8: ! 9: /* ! 10: ** COMMENT ! 11: ** scans comments (as delimited by the tokens 'Tokens.bgncmnt' ! 12: ** and 'Tokens.endcmnt') and removes them from the query text. ! 13: */ ! 14: comment() ! 15: { ! 16: register int i, l; ! 17: register struct optab *op; ! 18: register char *sp; ! 19: char buf[3]; ! 20: ! 21: /* find the end_of_comment operator */ ! 22: for (op = Optab; op->term; op++) ! 23: if (op->token == Tokens.endcmnt) ! 24: break; ! 25: if (!op->term) ! 26: syserr("no end_of_comment token"); ! 27: ! 28: /* scan for the end of the comment */ ! 29: l = length(op->term); ! 30: for (i = 0,sp = buf; i < l; sp++, i++) /* set up window on input */ ! 31: if ((*sp = get_scan(NORMAL)) <= 0) ! 32: /* non-terminated comment */ ! 33: par_error(COMMTERM, FATAL, 0); /* must end parsing */ ! 34: while (!bequal(buf, op->term, l)) ! 35: { ! 36: /* move window on input */ ! 37: for (sp = buf,i = 0; i < l-1; i++,sp++) ! 38: *sp = *(sp+1); ! 39: if (( *sp = get_scan(NORMAL)) <= 0) ! 40: /* non terminated comment */ ! 41: par_error(COMMTERM, FATAL, 0); /* must end parsing */ ! 42: } ! 43: return (0); ! 44: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.