| 1060 | } |
| 1061 | |
| 1062 | void* fxCharSetParseList(txPatternParser* parser) |
| 1063 | { |
| 1064 | txBoolean not = 0; |
| 1065 | void* former = NULL; |
| 1066 | void* result = NULL; |
| 1067 | if (parser->character == '^') { |
| 1068 | fxPatternParserNext(parser); |
| 1069 | not = 1; |
| 1070 | } |
| 1071 | while (parser->character != C_EOF) { |
| 1072 | result = fxCharSetParseItem(parser); |
| 1073 | if (parser->character == '-') { |
| 1074 | fxPatternParserNext(parser); |
| 1075 | if (parser->character == ']') { |
| 1076 | result = fxCharSetCanonicalizeSingle(parser, result); |
| 1077 | result = fxCharSetCombine(parser, result, fxCharSetSingle(parser, '-'), mxCharSetUnionOp); |
| 1078 | } |
| 1079 | else { |
| 1080 | result = fxCharSetRange(parser, result, fxCharSetParseItem(parser)); |
| 1081 | } |
| 1082 | } |
| 1083 | else |
| 1084 | result = fxCharSetCanonicalizeSingle(parser, result); |
| 1085 | if (former) |
| 1086 | result = fxCharSetCombine(parser, former, result, mxCharSetUnionOp); |
| 1087 | former = result; |
| 1088 | if (parser->character == ']') |
| 1089 | break; |
| 1090 | } |
| 1091 | if (not && result) |
| 1092 | result = fxCharSetNot(parser, result); |
| 1093 | return result; |
| 1094 | } |
| 1095 | |
| 1096 | void* fxCharSetRange(txPatternParser* parser, txCharSet* set1, txCharSet* set2) |
| 1097 | { |
no test coverage detected