Lines Matching refs:parser

31 static jsmntok_t *jsmn_alloc_token(jsmn_parser *parser,
36 if ((unsigned)parser->toknext >= num_tokens)
38 tok = &tokens[parser->toknext++];
59 static jsmnerr_t jsmn_parse_primitive(jsmn_parser *parser, const char *js,
66 start = parser->pos;
68 for (; parser->pos < len; parser->pos++) {
69 switch (js[parser->pos]) {
88 if (js[parser->pos] < 32 || js[parser->pos] >= 127) {
89 parser->pos = start;
98 parser->pos = start;
103 token = jsmn_alloc_token(parser, tokens, num_tokens);
105 parser->pos = start;
108 jsmn_fill_token(token, JSMN_PRIMITIVE, start, parser->pos);
109 parser->pos--; /* parent sees closing brackets */
116 static jsmnerr_t jsmn_parse_string(jsmn_parser *parser, const char *js,
121 int start = parser->pos;
124 parser->pos++;
126 for (; parser->pos < len; parser->pos++) {
127 char c = js[parser->pos];
131 token = jsmn_alloc_token(parser, tokens, num_tokens);
133 parser->pos = start;
137 parser->pos);
143 parser->pos++;
144 switch (js[parser->pos]) {
161 parser->pos = start;
166 parser->pos = start;
173 jsmnerr_t jsmn_parse(jsmn_parser *parser, const char *js, size_t len,
180 for (; parser->pos < len; parser->pos++) {
184 c = js[parser->pos];
188 token = jsmn_alloc_token(parser, tokens, num_tokens);
191 if (parser->toksuper != -1)
192 tokens[parser->toksuper].size++;
194 token->start = parser->pos;
195 parser->toksuper = parser->toknext - 1;
200 for (i = parser->toknext - 1; i >= 0; i--) {
205 parser->toksuper = -1;
206 token->end = parser->pos + 1;
216 parser->toksuper = i;
222 r = jsmn_parse_string(parser, js, len, tokens,
226 if (parser->toksuper != -1)
227 tokens[parser->toksuper].size++;
263 r = jsmn_parse_primitive(parser, js, len, tokens,
267 if (parser->toksuper != -1)
268 tokens[parser->toksuper].size++;
279 for (i = parser->toknext - 1; i >= 0; i--) {
289 * Creates a new parser based over a given buffer with an array of tokens
292 void jsmn_init(jsmn_parser *parser)
294 parser->pos = 0;
295 parser->toknext = 0;
296 parser->toksuper = -1;