home *** CD-ROM | disk | FTP | other *** search
- #include "y1.h"
-
- struct looksets *flset( p ) struct looksets *p;
-
- {
- /* decide if the lookahead set pointed to by p is known */
- /* return pointer to a perminent location for the set */
-
- register struct looksets *q;
- int j, *w;
- register *u, *v;
-
- for( q = &lkst[nlset]; q-- > lkst; )
- {
- u = p->lset;
- v = q->lset;
- w = & v[tbitset];
- while( v<w) if( *u++ != *v++ ) goto more;
- /* we have matched */
- return( q );
- more:
- ;
- }
- /* add a new one */
- q = &lkst[nlset++];
- if( nlset >= LSETSIZE )error("too many lookahead sets" );
- SETLOOP(j)
- {
- q->lset[j] = p->lset[j];
- }
- return( q );
- }
-