Avoid two peek(1) calls when lexing """multi-line strings"""

This commit is contained in:
Rangi
2021-02-17 10:36:36 -05:00
parent 7dd34f1572
commit efbfeca292

View File

@@ -1457,9 +1457,14 @@ static void readString(void)
case '"': case '"':
if (multiline) { if (multiline) {
// Only """ ends a multi-line string // Only """ ends a multi-line string
if (peek(0) != '"' || peek(1) != '"') if (peek(0) != '"')
break; break;
shiftChars(2); shiftChars(1);
if (peek(0) != '"') {
append_yylval_tzString('"');
break;
}
shiftChars(1);
} }
goto finish; goto finish;
@@ -1604,11 +1609,14 @@ static size_t appendStringLiteral(size_t i)
case '"': case '"':
if (multiline) { if (multiline) {
// Only """ ends a multi-line string // Only """ ends a multi-line string
if (peek(0) != '"' || peek(1) != '"') if (peek(0) != '"')
break; break;
append_yylval_tzString('"'); append_yylval_tzString('"');
shiftChars(1);
if (peek(0) != '"')
break;
append_yylval_tzString('"'); append_yylval_tzString('"');
shiftChars(2); shiftChars(1);
} }
append_yylval_tzString('"'); append_yylval_tzString('"');
goto finish; goto finish;