aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetri Lehtinen <petri@digip.org>2009-07-11 11:16:14 +0300
committerPetri Lehtinen <petri@digip.org>2009-07-13 21:45:16 +0300
commit1b67edb54df7d82e5aa75e92732a1ed809422dbf (patch)
tree72a5d48da549151218f58e5bb57d88de52e045ba
parent287ec3f9daf1ce9ddfe8330d957d242634a039eb (diff)
downloadjansson-1b67edb54df7d82e5aa75e92732a1ed809422dbf.zip
jansson-1b67edb54df7d82e5aa75e92732a1ed809422dbf.tar.gz
jansson-1b67edb54df7d82e5aa75e92732a1ed809422dbf.tar.bz2
Little clean-up in parser
Before, json_loads checked for '[' or '{' at the beginning. Now there's a dedicated function for that: parse_json(). Also rename parse() to parse_value().
-rw-r--r--src/load.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/load.c b/src/load.c
index 2062790..d0671bf 100644
--- a/src/load.c
+++ b/src/load.c
@@ -304,7 +304,7 @@ static void lex_close(lex_t *lex)
/*** parser ***/
-static json_t *parse(lex_t *lex, json_error_t *error);
+static json_t *parse_value(lex_t *lex, json_error_t *error);
static json_t *parse_object(lex_t *lex, json_error_t *error)
{
@@ -338,7 +338,7 @@ static json_t *parse_object(lex_t *lex, json_error_t *error)
lex_scan(lex);
- value = parse(lex, error);
+ value = parse_value(lex, error);
if(!value) {
free(key);
goto error;
@@ -382,7 +382,7 @@ static json_t *parse_array(lex_t *lex, json_error_t *error)
return array;
while(lex->token) {
- json_t *elem = parse(lex, error);
+ json_t *elem = parse_value(lex, error);
if(!elem)
goto error;
@@ -411,7 +411,7 @@ error:
return NULL;
}
-static json_t *parse(lex_t *lex, json_error_t *error)
+static json_t *parse_value(lex_t *lex, json_error_t *error)
{
json_t *json;
@@ -467,6 +467,16 @@ static json_t *parse(lex_t *lex, json_error_t *error)
return json;
}
+json_t *parse_json(lex_t *lex, json_error_t *error)
+{
+ if(lex->token != '[' && lex->token != '{') {
+ error_set(error, lex, "'[' or '{' expected");
+ return NULL;
+ }
+
+ return parse_value(lex, error);
+}
+
json_t *json_load(const char *path, json_error_t *error)
{
json_t *result;
@@ -494,12 +504,7 @@ json_t *json_loads(const char *string, json_error_t *error)
if(lex_init(&lex, string))
return NULL;
- if(lex.token != '[' && lex.token != '{') {
- error_set(error, &lex, "'[' or '{' expected");
- goto out;
- }
-
- result = parse(&lex, error);
+ result = parse_json(&lex, error);
if(!result)
goto out;