home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 March / VPR9703A.ISO / VPR_DATA / DOGA / SOURCES / REND.LZH / PIC1600 / TOKEN.C < prev    next >
C/C++ Source or Header  |  1996-04-22  |  901b  |  54 lines

  1. #include    <stdio.h>
  2. #include    <string.h>
  3. #include    "piclib.h"
  4.  
  5. static char    IndependentSet[] = "{}()";
  6.  
  7. #ifdef DEBUG
  8.     #define TRACER    printf("%s\n", buffer);
  9. #endif
  10. #ifndef TRACER
  11.     #define TRACER
  12. #endif
  13.  
  14. char    *GetToken(char *buf, FILE *fp)
  15. {
  16.     char *buffer = buf;
  17.     int c;
  18.     while (c = fgetc(fp), c<= ' ' ) {
  19.         if (c == EOF) {
  20.             return NULL;
  21.         } else if (c == EOFCODE) {
  22.             *buf++ = c;
  23.             *buf   = '\0';
  24. TRACER
  25.             return buffer;
  26.         }
  27.     }
  28.     *buf++ = c;
  29.     if (strchr(IndependentSet, c) ) {
  30.         *buf = '\0';
  31.         return buffer ;
  32.     }
  33.     while (c = fgetc(fp), c != EOF) {
  34.         if (c == EOFCODE) {
  35.             ungetc(c, fp);
  36.             *buf = '\0';
  37. TRACER
  38.             return buffer ;
  39.         } else if (c <= ' ') {
  40.             *buf = '\0';
  41. TRACER
  42.             return buffer ;
  43.         } else if (strchr(IndependentSet, c) ) {
  44.             *buf = '\0';
  45.             ungetc(c, fp);
  46. TRACER
  47.             return buffer;
  48.         } else {
  49.             *buf++ = c;
  50.         }
  51.     }
  52.     return NULL;
  53. }
  54.