Call nextToken from keepGoing
This commit is contained in:
11
src/test.cpp
11
src/test.cpp
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user