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

Function fxDisjunctionParse

xs/sources/xsre.c:1508–1533  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1506}
1507
1508void* fxDisjunctionParse(txPatternParser* parser, txInteger character)
1509{
1510 txDisjunction* result = NULL;
1511 txTerm* left = NULL;
1512 txTerm* right = NULL;
1513 txCapture** leftNamedCaptureAddress = (parser->lastNamedCapture) ? &(parser->lastNamedCapture->nextNamedCapture) : &(parser->firstNamedCapture);
1514 result = fxSequenceParse(parser, character);
1515 if (parser->character == '|') {
1516 txCapture** rightNamedCaptureAddress = (parser->lastNamedCapture) ? &(parser->lastNamedCapture->nextNamedCapture) : &(parser->firstNamedCapture);
1517 txCapture* leftNamedCapture = *leftNamedCaptureAddress;
1518 *leftNamedCaptureAddress = C_NULL;
1519
1520 fxPatternParserNext(parser);
1521 left = (txTerm*)result;
1522 right = fxDisjunctionParse(parser, character);
1523 result = fxPatternParserCreateTerm(parser, sizeof(txDisjunction), fxDisjunctionMeasure);
1524 result->left = left;
1525 result->right = right;
1526
1527 *rightNamedCaptureAddress = *leftNamedCaptureAddress;
1528 *leftNamedCaptureAddress = leftNamedCapture;
1529 }
1530 if (parser->character != character)
1531 fxPatternParserError(parser, gxErrors[mxInvalidSequence]);
1532 return result;
1533}
1534
1535void* fxModifiersParse(txPatternParser* parser)
1536{

Callers 3

fxModifiersParseFunction · 0.85
fxSequenceParseFunction · 0.85
fxCompileRegExpFunction · 0.85

Calls 4

fxSequenceParseFunction · 0.85
fxPatternParserNextFunction · 0.85
fxPatternParserErrorFunction · 0.85

Tested by

no test coverage detected