USG_PG3/usr/source/lexgen2/usrtab.c
# include "../lexgen1/ldefs.c"
usrtab()
{
char line[100], *s;
int i, c, n;
gets(s);
lineno--;
for(i=0; i<NCH; i++)
ctable[i]=0;
while (gets(s=line) && !scomp(s, "%T") && !scomp(s, "%t"))
{
while (space(*s)) s++;
n=0;
while (digit(*s))
n = n*10+ *s++ - '0';
if (n<=0 || n>= NCH)
{
warning("character value %d out of range",n);
continue;
}
while (space(*s))
s++;
while (*s)
{
c = ctrans(&s);
if (ctable[c])
if (printable(c))
error("character '%c' used twice",c);
else
error("character %o used twice",c);
ctable[c] = n;
s++;
}
}
lineno++;
}