home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / program / c / yaccsrc2 / yflset.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-05-19  |  841 b   |  39 lines

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