MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / fxCharSetParseList

Function fxCharSetParseList

xs/sources/xsre.c:1062–1094  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1060}
1061
1062void* 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
1096void* fxCharSetRange(txPatternParser* parser, txCharSet* set1, txCharSet* set2)
1097{

Callers 1

fxSequenceParseFunction · 0.85

Calls 7

fxPatternParserNextFunction · 0.85
fxCharSetParseItemFunction · 0.85
fxCharSetCombineFunction · 0.85
fxCharSetSingleFunction · 0.85
fxCharSetRangeFunction · 0.85
fxCharSetNotFunction · 0.85

Tested by

no test coverage detected