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 );
- }
-