Implement === and !== string comparison operators (#1832)

This commit is contained in:
Rangi
2025-09-19 14:06:36 -04:00
committed by GitHub
parent 67741ab428
commit e31bcabbaa
4 changed files with 41 additions and 6 deletions

View File

@@ -1750,14 +1750,22 @@ static Token yylex_NORMAL() {
case '^': // Either ^= or XOR
return oneOrTwo('=', T_(POP_XOREQ), T_(OP_XOR));
case '=': // Either assignment or EQ
return oneOrTwo('=', T_(OP_LOGICEQU), T_(POP_EQUAL));
case '!': // Either a NEQ or negation
return oneOrTwo('=', T_(OP_LOGICNE), T_(OP_LOGICNOT));
// Handle ambiguous 1-, 2-, or 3-char tokens
case '=': // Either assignment, EQ or string EQ
if (peek() == '=') {
shiftChar();
return oneOrTwo('=', T_(OP_STREQU), T_(OP_LOGICEQU));
}
return Token(T_(POP_EQUAL));
case '!': // Either negation, NEQ, or string NEQ
if (peek() == '=') {
shiftChar();
return oneOrTwo('=', T_(OP_STRNE), T_(OP_LOGICNE));
}
return Token(T_(OP_LOGICNOT));
case '<': // Either <<=, LT, LTE, or left shift
if (peek() == '<') {
shiftChar();