Lines Matching refs:parser
10 static jsmntok_t *jsmn_alloc_token(jsmn_parser *parser, in jsmn_alloc_token() argument
13 if (parser->toknext >= num_tokens) { in jsmn_alloc_token()
16 tok = &tokens[parser->toknext++]; in jsmn_alloc_token()
39 static jsmnerr_t jsmn_parse_primitive(jsmn_parser *parser, const char *js, in jsmn_parse_primitive() argument
44 start = parser->pos; in jsmn_parse_primitive()
46 for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { in jsmn_parse_primitive()
47 switch (js[parser->pos]) { in jsmn_parse_primitive()
56 if (js[parser->pos] < 32 || js[parser->pos] >= 127) { in jsmn_parse_primitive()
57 parser->pos = start; in jsmn_parse_primitive()
63 parser->pos = start; in jsmn_parse_primitive()
69 parser->pos--; in jsmn_parse_primitive()
72 token = jsmn_alloc_token(parser, tokens, num_tokens); in jsmn_parse_primitive()
74 parser->pos = start; in jsmn_parse_primitive()
77 jsmn_fill_token(token, JSMN_PRIMITIVE, start, parser->pos); in jsmn_parse_primitive()
79 token->parent = parser->toksuper; in jsmn_parse_primitive()
81 parser->pos--; in jsmn_parse_primitive()
88 static jsmnerr_t jsmn_parse_string(jsmn_parser *parser, const char *js, in jsmn_parse_string() argument
92 int start = parser->pos; in jsmn_parse_string()
94 parser->pos++; in jsmn_parse_string()
97 for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { in jsmn_parse_string()
98 char c = js[parser->pos]; in jsmn_parse_string()
105 token = jsmn_alloc_token(parser, tokens, num_tokens); in jsmn_parse_string()
107 parser->pos = start; in jsmn_parse_string()
110 jsmn_fill_token(token, JSMN_STRING, start+1, parser->pos); in jsmn_parse_string()
112 token->parent = parser->toksuper; in jsmn_parse_string()
118 if (c == '\\' && parser->pos + 1 < len) { in jsmn_parse_string()
120 parser->pos++; in jsmn_parse_string()
121 switch (js[parser->pos]) { in jsmn_parse_string()
128 parser->pos++; in jsmn_parse_string()
129 for(i = 0; i < 4 && parser->pos < len && js[parser->pos] != '\0'; i++) { in jsmn_parse_string()
131 if(!((js[parser->pos] >= 48 && js[parser->pos] <= 57) || /* 0-9 */ in jsmn_parse_string()
132 (js[parser->pos] >= 65 && js[parser->pos] <= 70) || /* A-F */ in jsmn_parse_string()
133 (js[parser->pos] >= 97 && js[parser->pos] <= 102))) { /* a-f */ in jsmn_parse_string()
134 parser->pos = start; in jsmn_parse_string()
137 parser->pos++; in jsmn_parse_string()
139 parser->pos--; in jsmn_parse_string()
143 parser->pos = start; in jsmn_parse_string()
148 parser->pos = start; in jsmn_parse_string()
155 jsmnerr_t jsmn_parse(jsmn_parser *parser, const char *js, size_t len, in jsmn_parse() argument
162 for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { in jsmn_parse()
166 c = js[parser->pos]; in jsmn_parse()
173 token = jsmn_alloc_token(parser, tokens, num_tokens); in jsmn_parse()
176 if (parser->toksuper != -1) { in jsmn_parse()
177 tokens[parser->toksuper].size++; in jsmn_parse()
179 token->parent = parser->toksuper; in jsmn_parse()
183 token->start = parser->pos; in jsmn_parse()
184 parser->toksuper = parser->toknext - 1; in jsmn_parse()
191 if (parser->toknext < 1) { in jsmn_parse()
194 token = &tokens[parser->toknext - 1]; in jsmn_parse()
200 token->end = parser->pos + 1; in jsmn_parse()
201 parser->toksuper = token->parent; in jsmn_parse()
210 for (i = parser->toknext - 1; i >= 0; i--) { in jsmn_parse()
216 parser->toksuper = -1; in jsmn_parse()
217 token->end = parser->pos + 1; in jsmn_parse()
226 parser->toksuper = i; in jsmn_parse()
233 r = jsmn_parse_string(parser, js, len, tokens, num_tokens); in jsmn_parse()
236 if (parser->toksuper != -1 && tokens != NULL) in jsmn_parse()
237 tokens[parser->toksuper].size++; in jsmn_parse()
242 parser->toksuper = parser->toknext - 1; in jsmn_parse()
246 tokens[parser->toksuper].type != JSMN_ARRAY && in jsmn_parse()
247 tokens[parser->toksuper].type != JSMN_OBJECT) { in jsmn_parse()
249 parser->toksuper = tokens[parser->toksuper].parent; in jsmn_parse()
251 for (i = parser->toknext - 1; i >= 0; i--) { in jsmn_parse()
254 parser->toksuper = i; in jsmn_parse()
269 jsmntok_t *t = &tokens[parser->toksuper]; in jsmn_parse()
279 r = jsmn_parse_primitive(parser, js, len, tokens, num_tokens); in jsmn_parse()
282 if (parser->toksuper != -1 && tokens != NULL) in jsmn_parse()
283 tokens[parser->toksuper].size++; in jsmn_parse()
294 for (i = parser->toknext - 1; i >= 0; i--) { in jsmn_parse()
309 void jsmn_init(jsmn_parser *parser) { in jsmn_init() argument
310 parser->pos = 0; in jsmn_init()
311 parser->toknext = 0; in jsmn_init()
312 parser->toksuper = -1; in jsmn_init()