1*17388Sedward #ifndef lint 2*17388Sedward static char sccsid[] = "@(#)parse.c 1.1 11/18/84"; 3*17388Sedward #endif 4*17388Sedward 5*17388Sedward #include "externs.h" 6*17388Sedward 7*17388Sedward wordinit() 8*17388Sedward { 9*17388Sedward register struct wlist *w; 10*17388Sedward 11*17388Sedward for (w = wlist; w->string; w++) 12*17388Sedward install(w); 13*17388Sedward } 14*17388Sedward 15*17388Sedward hash(s) 16*17388Sedward register char *s; 17*17388Sedward { 18*17388Sedward register hashval = 0; 19*17388Sedward 20*17388Sedward while (*s) { 21*17388Sedward hashval += *s++; 22*17388Sedward hashval *= HASHMUL; 23*17388Sedward hashval &= HASHMASK; 24*17388Sedward } 25*17388Sedward return hashval; 26*17388Sedward } 27*17388Sedward 28*17388Sedward struct wlist * 29*17388Sedward lookup(s) 30*17388Sedward char *s; 31*17388Sedward { 32*17388Sedward register struct wlist *wp; 33*17388Sedward 34*17388Sedward for (wp = hashtab[hash(s)]; wp != NULL; wp = wp->next) 35*17388Sedward if (*s == *wp->string && strcmp(s, wp->string) == 0) 36*17388Sedward return wp; 37*17388Sedward return NULL; 38*17388Sedward } 39*17388Sedward 40*17388Sedward install(wp) 41*17388Sedward register struct wlist *wp; 42*17388Sedward { 43*17388Sedward int hashval; 44*17388Sedward 45*17388Sedward if (lookup(wp->string) == NULL) { 46*17388Sedward hashval = hash(wp->string); 47*17388Sedward wp->next = hashtab[hashval]; 48*17388Sedward hashtab[hashval] = wp; 49*17388Sedward } else 50*17388Sedward printf("Multiply defined %s.\n", wp->string); 51*17388Sedward } 52*17388Sedward 53*17388Sedward parse() 54*17388Sedward { 55*17388Sedward register struct wlist *wp; 56*17388Sedward register n; 57*17388Sedward 58*17388Sedward wordnumber = 0; /* for cypher */ 59*17388Sedward for (n = 0; n <= wordcount; n++) { 60*17388Sedward if ((wp = lookup(words[n])) == NULL) { 61*17388Sedward wordvalue[n] = -1; 62*17388Sedward wordtype[n] = -1; 63*17388Sedward } else { 64*17388Sedward wordvalue[n] = wp -> value; 65*17388Sedward wordtype[n] = wp -> article; 66*17388Sedward } 67*17388Sedward } 68*17388Sedward } 69