X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=dfa%2Fdfa.c;h=e1e1c4568e0b05df9e10aaac78f99f23aca6e2ad;hp=072c39700919854db1a1cb7c641894c785ff1a8b;hb=55a5cde7eb23fb9aa5a8386d34bb1b6e131c19d8;hpb=5d51844baabbb37b83afdd9b10db0a6c53cd1905 diff --git a/dfa/dfa.c b/dfa/dfa.c index 072c397..e1e1c45 100644 --- a/dfa/dfa.c +++ b/dfa/dfa.c @@ -4,7 +4,11 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: dfa.c,v $ - * Revision 1.21 1998-06-22 11:33:39 adam + * Revision 1.22 1998-06-24 12:16:10 adam + * Support for relations on text operands. Open range support in + * DFA module (i.e. [-j], [g-]). + * + * Revision 1.21 1998/06/22 11:33:39 adam * Added two type casts. * * Revision 1.20 1998/06/08 14:40:44 adam @@ -423,18 +427,28 @@ static int read_charset (struct DFA_parse *parse_info) { if (!esc0 && ch0 == ']') break; - if (parse_info->cmap) - { - const char **mapto; - char mapfrom[2]; - const char *mcp = mapfrom; - mapfrom[0] = ch0; - mapto = (*parse_info->cmap)(parse_info->cmap_data, &mcp, 1); - assert (mapto); - ch0 = mapto[0][0]; - } - add_BSet (parse_info->charset, parse_info->look_chars, ch0); - ch1 = nextchar_set (parse_info, &esc1); + if (!esc0 && ch0 == '-') + { + ch1 = ch0; + esc1 = esc0; + ch0 = 1; + add_BSet (parse_info->charset, parse_info->look_chars, ch0); + } + else + { + if (parse_info->cmap) + { + const char **mapto; + char mapfrom[2]; + const char *mcp = mapfrom; + mapfrom[0] = ch0; + mapto = (*parse_info->cmap)(parse_info->cmap_data, &mcp, 1); + assert (mapto); + ch0 = mapto[0][0]; + } + add_BSet (parse_info->charset, parse_info->look_chars, ch0); + ch1 = nextchar_set (parse_info, &esc1); + } if (!esc1 && ch1 == '-') { int open_range = 0;