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