Fuse N_WHITESPACE into N_VALUE
This commit is contained in:
@@ -65,7 +65,7 @@ enum Symbol : uint8_t {
|
||||
struct Parser3 {
|
||||
Parser3(const WeaselJsonCallbacks *callbacks, void *data)
|
||||
: callbacks(callbacks), data(data) {
|
||||
std::ignore = push({N_WHITESPACE, N_VALUE, N_WHITESPACE, T_EOF});
|
||||
std::ignore = push({N_VALUE, N_WHITESPACE, T_EOF});
|
||||
}
|
||||
|
||||
[[nodiscard]] WeaselJsonStatus parse(char *buf, int len) {
|
||||
@@ -137,7 +137,31 @@ struct Parser3 {
|
||||
uint32_t minCodepoint;
|
||||
};
|
||||
|
||||
inline WeaselJsonStatus n_whitespace(Parser3 *self) {
|
||||
if (self->len() == 0) {
|
||||
self->pop();
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
}
|
||||
while (tables.whitespace[uint8_t(*self->buf)]) {
|
||||
++self->buf;
|
||||
if (self->buf == self->bufEnd) {
|
||||
return WeaselJson_AGAIN;
|
||||
}
|
||||
}
|
||||
self->pop();
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
}
|
||||
|
||||
inline WeaselJsonStatus n_value(Parser3 *self) {
|
||||
if (self->len() == 0) {
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
}
|
||||
while (tables.whitespace[uint8_t(*self->buf)]) {
|
||||
++self->buf;
|
||||
if (self->buf == self->bufEnd) {
|
||||
return WeaselJson_AGAIN;
|
||||
}
|
||||
}
|
||||
switch (*self->buf) {
|
||||
case '{':
|
||||
self->pop();
|
||||
@@ -223,8 +247,8 @@ inline WeaselJsonStatus n_object2(Parser3 *self) {
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
case '"':
|
||||
self->pop();
|
||||
if (auto s = self->push({N_STRING, N_WHITESPACE, T_COLON, N_WHITESPACE,
|
||||
N_VALUE, N_WHITESPACE, N_OBJECT3})) {
|
||||
if (auto s = self->push({N_STRING, N_WHITESPACE, T_COLON, N_VALUE,
|
||||
N_WHITESPACE, N_OBJECT3})) {
|
||||
return s;
|
||||
}
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
@@ -244,7 +268,7 @@ inline WeaselJsonStatus n_object3(Parser3 *self) {
|
||||
++self->buf;
|
||||
self->pop();
|
||||
if (auto s = self->push({N_WHITESPACE, N_STRING, N_WHITESPACE, T_COLON,
|
||||
N_WHITESPACE, N_VALUE, N_WHITESPACE, N_OBJECT3})) {
|
||||
N_VALUE, N_WHITESPACE, N_OBJECT3})) {
|
||||
return s;
|
||||
}
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
@@ -292,7 +316,7 @@ inline WeaselJsonStatus n_array3(Parser3 *self) {
|
||||
case ',':
|
||||
++self->buf;
|
||||
self->pop();
|
||||
if (auto s = self->push({N_WHITESPACE, N_VALUE, N_WHITESPACE, N_ARRAY3})) {
|
||||
if (auto s = self->push({N_VALUE, N_WHITESPACE, N_ARRAY3})) {
|
||||
return s;
|
||||
}
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
@@ -762,21 +786,6 @@ inline WeaselJsonStatus n_sign(Parser3 *self) {
|
||||
}
|
||||
}
|
||||
|
||||
inline WeaselJsonStatus n_whitespace(Parser3 *self) {
|
||||
if (self->len() == 0) {
|
||||
self->pop();
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
}
|
||||
while (tables.whitespace[uint8_t(*self->buf)]) {
|
||||
++self->buf;
|
||||
if (self->buf == self->bufEnd) {
|
||||
return WeaselJson_AGAIN;
|
||||
}
|
||||
}
|
||||
self->pop();
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
}
|
||||
|
||||
inline WeaselJsonStatus n_true(Parser3 *self) {
|
||||
if (*self->buf == 'e') {
|
||||
++self->buf;
|
||||
|
||||
Reference in New Issue
Block a user