42 void mkentry (
int*,
int,
int,
int,
int);
43 void mkprot (
int[],
int,
int);
46 int tbldiff (
int[],
int,
int[]);
84 void bldtbl(
int *state,
int statenum,
int totaltrans,
int comstate,
int comfreq)
86 int extptr, extrct[2][
CSIZE + 1];
87 int mindiff, minprot,
i, d;
118 mindiff = totaltrans;
127 mindiff =
tbldiff( state, minprot, extrct[extptr] );
145 mindiff =
tbldiff( state, minprot, extrct[extptr] );
159 d =
tbldiff( state, i, extrct[1 - extptr] );
184 mkprot( state, statenum, comstate );
199 mkprot( state, statenum, comstate );
230 int tmpstorage[
CSIZE + 1];
231 int *tmp = tmpstorage,
i, j;
232 int totaltrans, trans;
257 for ( j = 1; j <=
numecs; ++j )
310 memset( (
char *) (
chk + old_max), 0,
340 int *state_ptr, *chk_ptr;
341 int *ptr_to_last_entry_in_state;
374 if (
chk[i - 1] == 0 )
403 state_ptr = &state[1];
404 ptr_to_last_entry_in_state = &
chk[i +
numecs + 1];
406 for ( chk_ptr = &
chk[i + 1]; chk_ptr != ptr_to_last_entry_in_state;
408 if ( *(state_ptr++) != 0 && *chk_ptr != 0 )
411 if ( chk_ptr == ptr_to_last_entry_in_state )
434 memset( (
char *)
chk, 0,
450 for ( i = 2; i <=
numecs; ++
i )
482 for ( i = 1; i <=
numecs; ++
i )
517 void mkentry(
int *state,
int numchars,
int statenum,
int deflink,
int totaltrans)
519 int minec, maxec,
i, baseaddr;
520 int tblbase, tbllast;
522 if ( totaltrans == 0 )
529 def[statenum] = deflink;
533 for ( minec = 1; minec <= numchars; ++minec )
536 if ( state[minec] != 0 || deflink !=
JAMSTATE )
540 if ( totaltrans == 1 )
545 stack1( statenum, minec, state[minec], deflink );
549 for ( maxec = numchars; maxec > 0; --maxec )
552 if ( state[maxec] != 0 || deflink !=
JAMSTATE )
571 while ( baseaddr < minec )
576 for ( ++baseaddr;
chk[baseaddr] != 0; ++baseaddr )
583 for ( i = minec; i <= maxec; ++
i )
585 if ( state[i] != 0 || deflink !=
JAMSTATE )
586 if (
chk[baseaddr + i - minec] != 0 )
613 tblbase = baseaddr - minec;
614 tbllast = tblbase + maxec;
619 base[statenum] = tblbase;
620 def[statenum] = deflink;
622 for ( i = minec; i <= maxec; ++
i )
624 if ( state[i] != 0 || deflink !=
JAMSTATE )
626 nxt[tblbase +
i] = state[
i];
627 chk[tblbase +
i] = statenum;
678 void mkprot(
int *state,
int statenum,
int comstate)
680 int i, slot, tblbase;
705 tblbase =
numecs * (slot - 1);
707 for ( i = 1; i <=
numecs; ++
i )
722 int i, numdiff, tmpbase, tmp[
CSIZE + 1];
746 for ( i = 1; i <=
numecs; ++
i )
748 tnxt[tmpbase +
i] = 0;
751 transset[tsptr++] =
i;
752 tnxt[tmpbase +
i] = comstate;
786 protprev[
protnext[qelm]] = protprev[qelm];
788 protprev[qelm] =
NIL;
814 base[statenum] = position;
820 chk[position - 1] = 1;
826 state_ptr = &state[1];
828 for ( i = 1; i <=
numecs; ++
i, ++state_ptr )
829 if ( *state_ptr != 0 )
831 chk[position +
i] =
i;
832 nxt[position +
i] = *state_ptr;
851 void stack1(
int statenum,
int sym,
int nextstate,
int deflink)
854 mk1tbl( statenum, sym, nextstate, deflink );
887 int i, *sp = state, *ep = ext, *protp;
894 if ( *++protp == *++sp )
void mkprot(int[], int, int)
int cre8ecs(int fwd[], int bck[], int num)
#define INTERIOR_FIT_PERCENTAGE
#define PROTO_SIZE_PERCENTAGE
int protsave[PROT_SAVE_SIZE]
#define TEMPLATE_SAME_PERCENTAGE
int onestate[ONE_STACK_SIZE]
int find_table_space(int *state, int numtrans)
void place_state(int *state, int statenum, int transnum)
int current_max_template_xpairs
void mk1tbl(int state, int sym, int onenxt, int onedef)
int onesym[ONE_STACK_SIZE]
void mktemplate(int[], int, int)
#define reallocate_integer_array(array, size)
int onedef[ONE_STACK_SIZE]
int onenext[ONE_STACK_SIZE]
#define MAX_XTIONS_FULL_INTERIOR_FIT
#define MAX_XPAIRS_INCREMENT
#define CHECK_COM_PERCENTAGE
void increase_max_dfas(void)
#define ACCEPTABLE_DIFF_PERCENTAGE
#define FIRST_MATCH_DIFF_PERCENTAGE
void mkeccl(unsigned char ccls[], int lenccl, int fwd[], int bck[], int llsiz, int NUL_mapping)
void bldtbl(int *state, int statenum, int totaltrans, int comstate, int comfreq)
#define MAX_TEMPLATE_XPAIRS_INCREMENT
void mkentry(int *, int, int, int, int)
void stack1(int statenum, int sym, int nextstate, int deflink)
#define NEW_PROTO_DIFF_PERCENTAGE
int tbldiff(int[], int, int[])
void expand_nxt_chk(void)