diff --git a/src/parser3.h b/src/parser3.h index 570399f..9d55868 100644 --- a/src/parser3.h +++ b/src/parser3.h @@ -345,6 +345,9 @@ inline Status n_string2(Parser3 *self) { if (uint8_t(*self->buf) < 0x20) { return S_REJECT; } + if (*self->buf != '"') { + self->callbacks->on_string_data(self->data, self->buf, 1); + } if (int8_t(*self->buf) > 0) { // one byte utf-8 encoding switch (*self->buf) { @@ -399,6 +402,7 @@ inline Status n_string_following_escape(Parser3 *self) { if (self->len() == 0) { return S_REJECT; } + self->callbacks->on_string_data(self->data, self->buf, 1); switch (*self->buf) { case '"': case '\\': @@ -431,6 +435,7 @@ inline Status t_utf8_continuation_byte(Parser3 *self) { return S_REJECT; } if ((*self->buf & 0b11000000) == 0b10000000) { + self->callbacks->on_string_data(self->data, self->buf, 1); ++self->buf; self->pop(); MUSTTAIL return Parser3::keepGoing(self); @@ -469,6 +474,7 @@ inline Status t_hex(Parser3 *self) { if (('0' <= *self->buf && *self->buf <= '9') || ('a' <= *self->buf && *self->buf <= 'f') || ('A' <= *self->buf && *self->buf <= 'F')) { + self->callbacks->on_string_data(self->data, self->buf, 1); ++self->buf; self->pop(); MUSTTAIL return Parser3::keepGoing(self); @@ -490,6 +496,7 @@ inline Status n_integer(Parser3 *self) { } switch (*self->buf) { case '0': + self->callbacks->on_number_data(self->data, self->buf, 1); ++self->buf; self->pop(); MUSTTAIL return Parser3::keepGoing(self); @@ -502,6 +509,7 @@ inline Status n_integer(Parser3 *self) { case '7': case '8': case '9': + self->callbacks->on_number_data(self->data, self->buf, 1); ++self->buf; self->pop(); if (auto s = self->push({N_DIGITS2})) { @@ -509,6 +517,7 @@ inline Status n_integer(Parser3 *self) { } MUSTTAIL return Parser3::keepGoing(self); case '-': + self->callbacks->on_number_data(self->data, self->buf, 1); ++self->buf; self->pop(); if (auto s = self->push({N_INTEGER2})) { @@ -526,6 +535,7 @@ inline Status n_integer2(Parser3 *self) { } switch (*self->buf) { case '0': + self->callbacks->on_number_data(self->data, self->buf, 1); ++self->buf; self->pop(); MUSTTAIL return Parser3::keepGoing(self); @@ -538,6 +548,7 @@ inline Status n_integer2(Parser3 *self) { case '7': case '8': case '9': + self->callbacks->on_number_data(self->data, self->buf, 1); ++self->buf; self->pop(); if (auto s = self->push({N_DIGITS2})) { @@ -564,6 +575,7 @@ inline Status n_digits(Parser3 *self) { case '7': case '8': case '9': + self->callbacks->on_number_data(self->data, self->buf, 1); ++self->buf; self->pop(); if (auto s = self->push({N_DIGITS2})) { @@ -591,6 +603,7 @@ inline Status n_digits2(Parser3 *self) { case '7': case '8': case '9': + self->callbacks->on_number_data(self->data, self->buf, 1); ++self->buf; MUSTTAIL return Parser3::keepGoing(self); default: @@ -606,6 +619,7 @@ inline Status n_fraction(Parser3 *self) { } switch (*self->buf) { case '.': + self->callbacks->on_number_data(self->data, self->buf, 1); ++self->buf; self->pop(); if (auto s = self->push({N_DIGITS})) { @@ -626,6 +640,7 @@ inline Status n_exponent(Parser3 *self) { switch (*self->buf) { case 'e': case 'E': + self->callbacks->on_number_data(self->data, self->buf, 1); ++self->buf; self->pop(); if (auto s = self->push({N_SIGN, N_DIGITS})) { @@ -646,6 +661,7 @@ inline Status n_sign(Parser3 *self) { switch (*self->buf) { case '+': case '-': + self->callbacks->on_number_data(self->data, self->buf, 1); ++self->buf; self->pop(); MUSTTAIL return Parser3::keepGoing(self);