X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=dfa%2Fdfa.c;h=d7ef3910e2c247db9ab9932600b568b2ad3e6b50;hb=a20e59c5087fb92c419f2330c786367f9ce8ccd2;hp=73730c80dfdd320d59fee724ea7c93c0f3df9aba;hpb=3c5f6226f97612c0d6ac40591f600587c5ffa858;p=idzebra-moved-to-github.git diff --git a/dfa/dfa.c b/dfa/dfa.c index 73730c8..d7ef391 100644 --- a/dfa/dfa.c +++ b/dfa/dfa.c @@ -4,7 +4,13 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: dfa.c,v $ - * Revision 1.25 1999-02-02 14:50:05 adam + * Revision 1.27 1999-07-15 12:05:32 adam + * Bug fix: Anyset (.) includes all 8-bit characters when charmap is defined. + * + * Revision 1.26 1999/05/26 07:49:12 adam + * C++ compilation. + * + * Revision 1.25 1999/02/02 14:50:05 adam * Updated WIN32 code specific sections. Changed header. * * Revision 1.24 1998/10/28 10:48:55 adam @@ -988,7 +994,8 @@ void dfa_parse_cmap_clean (struct DFA *d) if (!dfa->charMap) { dfa->charMapSize = 7; - dfa->charMap = imalloc (dfa->charMapSize * sizeof(*dfa->charMap)); + dfa->charMap = (int *) + imalloc (dfa->charMapSize * sizeof(*dfa->charMap)); } dfa->charMap[0] = 0; } @@ -1008,7 +1015,7 @@ void dfa_parse_cmap_new (struct DFA *d, const int *cmap) if (dfa->charMap) ifree (dfa->charMap); dfa->charMapSize = size; - dfa->charMap = imalloc (size * sizeof(*dfa->charMap)); + dfa->charMap = (int *) imalloc (size * sizeof(*dfa->charMap)); } memcpy (dfa->charMap, cmap, size * sizeof(*dfa->charMap)); } @@ -1048,7 +1055,7 @@ void dfa_parse_cmap_add (struct DFA *d, int from, int to) size = dfa->charMapSize; if (indx >= size) { - int *cn = imalloc ((size+16) * sizeof(*dfa->charMap)); + int *cn = (int *) imalloc ((size+16) * sizeof(*dfa->charMap)); memcpy (cn, dfa->charMap, indx*sizeof(*dfa->charMap)); ifree (dfa->charMap); dfa->charMap = cn; @@ -1092,7 +1099,6 @@ static struct DFA_parse *dfa_parse_init (void) parse_info->anyset = mk_BSet (&parse_info->charset); res_BSet (parse_info->charset, parse_info->anyset); - add_BSet (parse_info->charset, parse_info->anyset, '\n'); com_BSet (parse_info->charset, parse_info->anyset); parse_info->use_Tnode = parse_info->max_Tnode = 0; parse_info->start = parse_info->end = NULL; @@ -1129,7 +1135,7 @@ static struct DFA_states *mk_dfas (struct DFA_parse *dfap, int poset_chunk) if (debug_dfa_followpos) pr_followpos(parse_info); - init_DFA_states (&dfas, parse_info->poset, STATE_HASH); + init_DFA_states (&dfas, parse_info->poset, (int) (STATE_HASH)); mk_dfa_tran (parse_info, dfas); if (debug_dfa_tran) pr_tran (parse_info, dfas); @@ -1145,7 +1151,7 @@ struct DFA *dfa_init (void) { struct DFA *dfa; - dfa = imalloc (sizeof(*dfa)); + dfa = (struct DFA *) imalloc (sizeof(*dfa)); dfa->parse_info = dfa_parse_init (); dfa->state_info = NULL; dfa->states = NULL; @@ -1168,6 +1174,13 @@ int dfa_parse (struct DFA *dfa, const char **pattern) assert (dfa); assert (dfa->parse_info); parse_info = dfa->parse_info; + + if (!parse_info->cmap) + { + res_BSet (parse_info->charset, parse_info->anyset); + add_BSet (parse_info->charset, parse_info->anyset, '\n'); + com_BSet (parse_info->charset, parse_info->anyset); + } do_parse (parse_info, pattern, &top); if (parse_info->err_code) return parse_info->err_code;