Call nextToken from keepGoing

This commit is contained in:
2025-05-13 11:23:24 -04:00
parent b6adb2885f
commit 30c9ad8690

View File

@@ -431,7 +431,6 @@ struct Parser2 {
if (!push({N_VALUE})) { if (!push({N_VALUE})) {
return false; return false;
} }
nextToken();
return keepGoing(this); return keepGoing(this);
} }
@@ -511,7 +510,6 @@ private:
PRESERVE_NONE static bool tokenMatch(Parser2 *self) { PRESERVE_NONE static bool tokenMatch(Parser2 *self) {
self->pop(); self->pop();
self->nextToken();
MUSTTAIL return keepGoing(self); MUSTTAIL return keepGoing(self);
} }
@@ -521,6 +519,7 @@ private:
assert(self->currentToken == T_EOF); assert(self->currentToken == T_EOF);
return true; return true;
} }
self->nextToken();
MUSTTAIL return table[*(self->stackPtr - 1)][self->currentToken](self); MUSTTAIL return table[*(self->stackPtr - 1)][self->currentToken](self);
} }
@@ -532,7 +531,6 @@ private:
self->pop(); self->pop();
assert(self->currentToken == T_LBRACE); assert(self->currentToken == T_LBRACE);
self->callbacks->on_begin_object(self->data); self->callbacks->on_begin_object(self->data);
self->nextToken();
if (!self->push({T_STRING, T_COLON, N_VALUE, N_OBJECT_MAYBE_CONTINUE})) { if (!self->push({T_STRING, T_COLON, N_VALUE, N_OBJECT_MAYBE_CONTINUE})) {
return false; return false;
} }
@@ -552,20 +550,17 @@ private:
self->buf - self->bufBefore - 2); self->buf - self->bufBefore - 2);
self->callbacks->on_end_number(self->data); self->callbacks->on_end_number(self->data);
} }
self->nextToken();
MUSTTAIL return keepGoing(self); MUSTTAIL return keepGoing(self);
} }
PRESERVE_NONE static bool string(Parser2 *self) { PRESERVE_NONE static bool string(Parser2 *self) {
self->pop(); self->pop();
assert(self->currentToken == T_STRING); assert(self->currentToken == T_STRING);
self->nextToken();
MUSTTAIL return keepGoing(self); MUSTTAIL return keepGoing(self);
} }
PRESERVE_NONE static bool array(Parser2 *self) { PRESERVE_NONE static bool array(Parser2 *self) {
self->pop(); self->pop();
assert(self->currentToken == T_LBRACKET); assert(self->currentToken == T_LBRACKET);
self->callbacks->on_begin_array(self->data); self->callbacks->on_begin_array(self->data);
self->nextToken();
if (!self->push({N_VALUE, N_ARRAY_MAYBE_CONTINUE})) { if (!self->push({N_VALUE, N_ARRAY_MAYBE_CONTINUE})) {
return false; return false;
} }
@@ -574,7 +569,6 @@ private:
PRESERVE_NONE static bool continueArray(Parser2 *self) { PRESERVE_NONE static bool continueArray(Parser2 *self) {
self->pop(); self->pop();
assert(self->currentToken == T_COMMA); assert(self->currentToken == T_COMMA);
self->nextToken();
if (!self->push({N_VALUE, N_ARRAY_MAYBE_CONTINUE})) { if (!self->push({N_VALUE, N_ARRAY_MAYBE_CONTINUE})) {
return false; return false;
} }
@@ -583,7 +577,6 @@ private:
PRESERVE_NONE static bool continueObject(Parser2 *self) { PRESERVE_NONE static bool continueObject(Parser2 *self) {
self->pop(); self->pop();
assert(self->currentToken == T_COMMA); assert(self->currentToken == T_COMMA);
self->nextToken();
if (!self->push({T_STRING, T_COLON, N_VALUE, N_OBJECT_MAYBE_CONTINUE})) { if (!self->push({T_STRING, T_COLON, N_VALUE, N_OBJECT_MAYBE_CONTINUE})) {
return false; return false;
} }
@@ -593,14 +586,12 @@ private:
self->pop(); self->pop();
assert(self->currentToken == T_RBRACKET); assert(self->currentToken == T_RBRACKET);
self->callbacks->on_end_array(self->data); self->callbacks->on_end_array(self->data);
self->nextToken();
MUSTTAIL return keepGoing(self); MUSTTAIL return keepGoing(self);
} }
PRESERVE_NONE static bool finishObject(Parser2 *self) { PRESERVE_NONE static bool finishObject(Parser2 *self) {
self->pop(); self->pop();
assert(self->currentToken == T_RBRACE); assert(self->currentToken == T_RBRACE);
self->callbacks->on_end_object(self->data); self->callbacks->on_end_object(self->data);
self->nextToken();
MUSTTAIL return keepGoing(self); MUSTTAIL return keepGoing(self);
} }