Lines Matching refs:cs

85 static void p_b_term(struct parse *p, cset *cs);
86 static void p_b_cclass(struct parse *p, cset *cs);
87 static void p_b_eclass(struct parse *p, cset *cs);
97 static void freeset(struct parse *p, cset *cs);
98 static int freezeset(struct parse *p, cset *cs);
99 static int firstch(struct parse *p, cset *cs);
100 static int nch(struct parse *p, cset *cs);
102 static void mcadd(struct parse *p, cset *cs, char *cp);
103 static void mcsub(cset *cs, char *cp);
104 static int mcin(cset *cs, char *cp);
105 static char *mcfind(cset *cs, char *cp);
107 static void mcinvert(struct parse *p, cset *cs);
108 static void mccase(struct parse *p, cset *cs);
683 cset *cs = allocset(p); in p_bracket() local
704 CHadd(cs, ']'); in p_bracket()
706 CHadd(cs, '-'); in p_bracket()
708 p_b_term(p, cs); in p_bracket()
710 CHadd(cs, '-'); in p_bracket()
718 if (CHIN(cs, i) && isalpha(i)) { in p_bracket()
721 CHadd(cs, ci); in p_bracket()
723 if (cs->multis != NULL) in p_bracket()
724 mccase(p, cs); in p_bracket()
730 if (CHIN(cs, i)) in p_bracket()
731 CHsub(cs, i); in p_bracket()
733 CHadd(cs, i); in p_bracket()
735 CHsub(cs, '\n'); in p_bracket()
736 if (cs->multis != NULL) in p_bracket()
737 mcinvert(p, cs); in p_bracket()
740 assert(cs->multis == NULL); /* xxx */ in p_bracket()
742 if (nch(p, cs) == 1) { /* optimize singleton sets */ in p_bracket()
743 ordinary(p, firstch(p, cs)); in p_bracket()
744 freeset(p, cs); in p_bracket()
746 EMIT(OANYOF, freezeset(p, cs)); in p_bracket()
754 p_b_term(struct parse *p, cset *cs) in p_b_term() argument
780 p_b_cclass(p, cs); in p_b_term()
789 p_b_eclass(p, cs); in p_b_term()
806 CHadd(cs, start); in p_b_term()
814 CHadd(cs, i); in p_b_term()
819 CHadd(cs, i); in p_b_term()
831 p_b_cclass(struct parse *p, cset *cs) in p_b_cclass() argument
854 CHadd(cs, c); in p_b_cclass()
859 CHadd(cs, c); in p_b_cclass()
864 CHadd(cs, c); in p_b_cclass()
869 CHadd(cs, c); in p_b_cclass()
874 CHadd(cs, c); in p_b_cclass()
879 CHadd(cs, c); in p_b_cclass()
884 CHadd(cs, c); in p_b_cclass()
889 CHadd(cs, c); in p_b_cclass()
894 CHadd(cs, c); in p_b_cclass()
899 CHadd(cs, c); in p_b_cclass()
904 CHadd(cs, c); in p_b_cclass()
909 CHadd(cs, c); in p_b_cclass()
914 MCadd(p, cs, u); in p_b_cclass()
925 p_b_eclass(struct parse *p, cset *cs) in p_b_eclass() argument
930 CHadd(cs, c); in p_b_eclass()
1165 cset *cs; in allocset() local
1176 cs = realloc(p->g->sets, nc * sizeof(cset)); in allocset()
1177 if (!cs) { in allocset()
1181 p->g->sets = cs; in allocset()
1191 cs[i].ptr = setbits + css*(i/CHAR_BIT); in allocset()
1196 cs = &p->g->sets[no]; in allocset()
1197 cs->ptr = p->g->setbits + css*((no)/CHAR_BIT); in allocset()
1198 cs->mask = 1 << ((no) % CHAR_BIT); in allocset()
1199 cs->hash = 0; in allocset()
1200 cs->smultis = 0; in allocset()
1201 cs->multis = NULL; in allocset()
1203 return(cs); in allocset()
1211 freeset(struct parse *p, cset *cs) in freeset() argument
1218 CHsub(cs, i); in freeset()
1219 if (cs == top-1) /* recover only the easy case */ in freeset()
1234 freezeset(struct parse *p, cset *cs) in freezeset() argument
1236 short h = cs->hash; in freezeset()
1244 if (cs2->hash == h && cs2 != cs) { in freezeset()
1247 if (!!CHIN(cs2, i) != !!CHIN(cs, i)) in freezeset()
1254 freeset(p, cs); in freezeset()
1255 cs = cs2; in freezeset()
1258 return((int)(cs - p->g->sets)); in freezeset()
1266 firstch(struct parse *p, cset *cs) in firstch() argument
1272 if (CHIN(cs, i)) in firstch()
1283 nch(struct parse *p, cset *cs) in nch() argument
1290 if (CHIN(cs, i)) in nch()
1302 mcadd(struct parse *p, cset *cs, char *cp) in mcadd() argument
1304 size_t oldend = cs->smultis; in mcadd()
1306 cs->smultis += strlen(cp) + 1; in mcadd()
1307 if (cs->multis == NULL) in mcadd()
1308 cs->multis = malloc(cs->smultis); in mcadd()
1310 cs->multis = reallocf(cs->multis, cs->smultis); in mcadd()
1311 if (cs->multis == NULL) { in mcadd()
1316 (void) strcpy(cs->multis + oldend - 1, cp); in mcadd()
1317 cs->multis[cs->smultis - 1] = '\0'; in mcadd()
1325 mcsub(cset *cs, char *cp) in mcsub() argument
1327 char *fp = mcfind(cs, cp); in mcsub()
1332 cs->smultis - (fp + len + 1 - cs->multis)); in mcsub()
1333 cs->smultis -= len; in mcsub()
1335 if (cs->smultis == 0) { in mcsub()
1336 free(cs->multis); in mcsub()
1337 cs->multis = NULL; in mcsub()
1341 cs->multis = reallocf(cs->multis, cs->smultis); in mcsub()
1342 assert(cs->multis != NULL); in mcsub()
1350 mcin(cset *cs, char *cp) in mcin() argument
1352 return(mcfind(cs, cp) != NULL); in mcin()
1360 mcfind(cset *cs, char *cp) in mcfind() argument
1364 if (cs->multis == NULL) in mcfind()
1366 for (p = cs->multis; *p != '\0'; p += strlen(p) + 1) in mcfind()
1381 mcinvert(struct parse *p, cset *cs) in mcinvert() argument
1384 (void) cs; in mcinvert()
1385 assert(cs->multis == NULL); /* xxx */ in mcinvert()
1396 mccase(struct parse *p, cset *cs) in mccase() argument
1399 (void) cs; in mccase()
1400 assert(cs->multis == NULL); /* xxx */ in mccase()
1624 int cs, mccs; in findmust() local
1632 for (cs = 0; cs < g->ncsets; cs++) in findmust()
1633 if (g->sets[cs].multis != NULL) in findmust()