home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / C / YACCUNX.ZIP / YFLSET.1C < prev    next >
Encoding:
Text File  |  1983-12-23  |  713 b   |  33 lines

  1. #include "y1.h"
  2.  
  3. struct looksets *flset( p )   struct looksets *p; 
  4.  
  5.    {
  6.    /* decide if the lookahead set pointed to by p is known */
  7.    /* return pointer to a perminent location for the set */
  8.  
  9.    register struct looksets *q;
  10.    int j, *w;
  11.    register *u, *v;
  12.  
  13.    for( q = &lkst[nlset]; q-- > lkst; )
  14.       {
  15.       u = p->lset;
  16.       v = q->lset;
  17.       w = & v[tbitset];
  18.       while( v<w) if( *u++ != *v++ ) goto more;
  19.       /* we have matched */
  20.       return( q );
  21. more: 
  22.       ;
  23.       }
  24.    /* add a new one */
  25.    q = &lkst[nlset++];
  26.    if( nlset >= LSETSIZE )error("too many lookahead sets" );
  27.    SETLOOP(j)
  28.       {
  29.       q->lset[j] = p->lset[j];
  30.       }
  31.    return( q );
  32.    }
  33.