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

Function fxGetNextString

xs/sources/xsLexical.c:613–809  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

611}
612
613void fxGetNextString(txParser* parser, int c)
614{
615 txString p = parser->buffer;
616 txString q = p + parser->bufferSize - 1;
617 for (;;) {
618 if (parser->character == (txU4)C_EOF) {
619 fxReportParserError(parser, parser->states[2].line, "end of file in string");
620 break;
621 }
622 else if (parser->character == 10) {
623 parser->states[2].line++;
624 if (c == '`') {
625 p = fxUTF8Buffer(parser, parser->character, p, q);
626 fxGetNextCharacter(parser);
627 }
628 else {
629 fxReportParserError(parser, parser->states[2].line, "end of line in string");
630 break;
631 }
632 }
633 else if (parser->character == 13) {
634 parser->states[2].line++;
635 if (c == '`') {
636 p = fxUTF8Buffer(parser, 10, p, q);
637 fxGetNextCharacter(parser);
638 if (parser->character == 10)
639 fxGetNextCharacter(parser);
640 }
641 else {
642 fxReportParserError(parser, parser->states[2].line, "end of line in string");
643 break;
644 }
645 }
646 else if ((parser->character == 0x2028) || (parser->character == 0x2029)) {
647 parser->states[2].line++;
648 p = fxUTF8Buffer(parser, parser->character, p, q);
649 fxGetNextCharacter(parser);
650 }
651 else if (parser->character == (txU4)c) {
652 break;
653 }
654 else if (parser->character == '$') {
655 fxGetNextCharacter(parser);
656 if ((c == '`') && (parser->character == '{'))
657 break;
658 p = fxUTF8Buffer(parser, '$', p, q);
659 }
660 else if (parser->character == '\\') {
661 parser->states[2].escaped = 1;
662 p = fxUTF8Buffer(parser, '\\', p, q);
663 fxGetNextCharacter(parser);
664 switch (parser->character) {
665 case 10:
666 case 0x2028:
667 case 0x2029:
668 parser->states[2].line++;
669 p = fxUTF8Buffer(parser, parser->character, p, q);
670 fxGetNextCharacter(parser);

Callers 3

fxGetNextTokenAuxFunction · 0.85
fxGetNextTokenTemplateFunction · 0.85
fxGetNextTokenJSONFunction · 0.85

Calls 7

fxReportParserErrorFunction · 0.85
fxUTF8BufferFunction · 0.85
fxGetNextCharacterFunction · 0.85
fxReportMemoryErrorFunction · 0.85
fxNewParserStringFunction · 0.85
fxParseHexEscapeFunction · 0.85
fxParseUnicodeEscapeFunction · 0.85

Tested by

no test coverage detected