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

Function fxArrayExpression

xs/sources/xsSyntaxical.c:2522–2565  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2520}
2521
2522void fxArrayExpression(txParser* parser)
2523{
2524 txInteger aCount = 0;
2525 int elision = 1;
2526 txInteger aLine = parser->states[0].line;
2527 txBoolean aSpreadFlag = 0;
2528 fxMatchToken(parser, XS_TOKEN_LEFT_BRACKET);
2529 while ((parser->states[0].token == XS_TOKEN_COMMA) || (parser->states[0].token == XS_TOKEN_SPREAD) || (gxTokenFlags[parser->states[0].token] & XS_TOKEN_BEGIN_EXPRESSION)) {
2530 txInteger anItemLine = parser->states[0].line;
2531 if (parser->states[0].token == XS_TOKEN_COMMA) {
2532 fxGetNextToken(parser);
2533 if (elision) {
2534 fxPushNodeStruct(parser, 0, XS_TOKEN_ELISION, anItemLine);
2535 aCount++;
2536 }
2537 else
2538 elision = 1;
2539 }
2540 else if (parser->states[0].token == XS_TOKEN_SPREAD) {
2541 fxGetNextToken(parser);
2542 if (!elision)
2543 fxReportParserError(parser, parser->states[0].line, "missing ,");
2544 fxAssignmentExpression(parser);
2545 fxPushNodeStruct(parser, 1, XS_TOKEN_SPREAD, anItemLine);
2546 aCount++;
2547 elision = 0;
2548 aSpreadFlag = 1;
2549 }
2550 else {
2551 if (!elision)
2552 fxReportParserError(parser, parser->states[0].line, "missing ,");
2553 fxAssignmentExpression(parser);
2554 aCount++;
2555 elision = 0;
2556 }
2557 }
2558 fxMatchToken(parser, XS_TOKEN_RIGHT_BRACKET);
2559 fxPushNodeList(parser, aCount);
2560 fxPushNodeStruct(parser, 1, XS_TOKEN_ARRAY, aLine);
2561 if (aCount && elision)
2562 parser->root->flags |= mxElisionFlag;
2563 if (aSpreadFlag)
2564 parser->root->flags |= mxSpreadFlag;
2565}
2566
2567void fxArrowExpression(txParser* parser, txUnsigned flag)
2568{

Callers 1

fxLiteralExpressionFunction · 0.85

Calls 6

fxMatchTokenFunction · 0.85
fxGetNextTokenFunction · 0.85
fxPushNodeStructFunction · 0.85
fxReportParserErrorFunction · 0.85
fxAssignmentExpressionFunction · 0.85
fxPushNodeListFunction · 0.85

Tested by

no test coverage detected