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

Function fxCharSetOperand

xs/sources/xsre.c:936–976  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

934}
935
936void* fxCharSetOperand(txPatternParser* parser, txInteger* kind)
937{
938 void* result = NULL;
939 if (parser->character == C_EOF) {
940 fxPatternParserError(parser, gxErrors[mxInvalidRange]);
941 }
942 else if (parser->character == '[') {
943 fxPatternParserNext(parser);
944 result = fxCharSetExpression(parser);
945 *kind = 1;
946 if (parser->character != ']')
947 fxPatternParserError(parser, gxErrors[mxInvalidRange]);
948 fxPatternParserNext(parser);
949 }
950 else if (parser->character == '\\') {
951 fxPatternParserNext(parser);
952 if (parser->character == 'q') {
953 result = fxCharSetStrings(parser);
954 *kind = 1;
955 }
956 else
957 result = fxCharSetParseEscape(parser, 1, kind);
958 }
959 else if (c_strchr("&!#$%*+,.:;<=>?@^`~", parser->character)) {
960 txInteger character = parser->character;
961 fxPatternParserNext(parser);
962 if (character == parser->character)
963 fxPatternParserError(parser, gxErrors[mxInvalidRange]);
964 result = fxCharSetSingle(parser, character);
965 *kind = 0;
966 }
967 else if (c_strchr("()[]{}/-\\|", parser->character)) {
968 fxPatternParserError(parser, gxErrors[mxInvalidRange]);
969 }
970 else {
971 result = fxCharSetSingle(parser, parser->character);
972 fxPatternParserNext(parser);
973 *kind = 0;
974 }
975 return result;
976}
977
978void* fxCharSetParseEscape(txPatternParser* parser, txBoolean punctuator, txInteger* kind)
979{

Callers 1

fxCharSetExpressionFunction · 0.85

Calls 6

fxPatternParserErrorFunction · 0.85
fxPatternParserNextFunction · 0.85
fxCharSetExpressionFunction · 0.85
fxCharSetStringsFunction · 0.85
fxCharSetParseEscapeFunction · 0.85
fxCharSetSingleFunction · 0.85

Tested by

no test coverage detected