USG_PG3/usr/source/lexgen2/nofree.c

# include "../lexgen1/ldefs.c"
nofree()
{
int i,k,l,lt,c, *p, *q;
int sbuff[NRULES], *bp, *tp;
for(i=1; i<=nstate; i++)
	{
	tp = unpack(slide(i,1,0), bp= sbuff);
	while (bp <tp)
		{
		k = *bp++;
		if (q= slide(k,1,0))
		while (l = *++q)
			tp = smore(sbuff, tp, l);
		for (c=0; c<NCH; c++)
			{
			if (q=move(k,c,1,0))
			while (l = *++q)
				addmove(i,c,l);
			}
		ngo[i] =+ ngo[k];
		if (q= stops(k,1))
		while (l = *q++)
			addstop(i,l);
		}
	slide(i, -1, 0);
	}
}
unpack(p,q)
	int *p, *q;
{
if (p==0) return(q);
while (*q++ = *++p);
return(q-1);
}
smore(b, t, l)
	int *b, *t;
{
while (b<t)
	if (*b++ ==l)
		return (t);
*t++ = l;
return(t);
}