summaryrefslogtreecommitdiffstats
path: root/parser.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-07-29 08:05:46 -0700
committerKaz Kylheku <kaz@kylheku.com>2021-07-29 08:05:46 -0700
commitd0923800e0b2b2476ff39d8144549172b5c668cb (patch)
tree5f660647eee1ad1e469c168f07ec5353673dcf9c /parser.h
parent53872969cc7c6a52ff2d92b9da1bba8000c45522 (diff)
downloadtxr-d0923800e0b2b2476ff39d8144549172b5c668cb.tar.gz
txr-d0923800e0b2b2476ff39d8144549172b5c668cb.tar.bz2
txr-d0923800e0b2b2476ff39d8144549172b5c668cb.zip
parser: allow trailing commas in json, via opt-in flag.
* parser.c (read_bad_json_s): New symbol variable. (parser_common_init): Propagate value of *read-bad-json* into read_bad_json flag in parser structure. (parser_init): Initialize read_bad_json_s and register the *read-bad-json* dynamic variable. * parser.h (struct parser): New member, read_bad_json. (read_bad_json_s): Declared. * parser.y (json_val): Support an opt_comma symbol just before the closing bracket or brace. (opt_comma): New nonterminal symbol. Recognizes ',' or nothing. Error is flagged if ',' is recognized, and *read-bad-json* is nil. * y.tab.c.shipped: Updated. * tests/010/json.tl: New tests. * txr.1: Documented.
Diffstat (limited to 'parser.h')
-rw-r--r--parser.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/parser.h b/parser.h
index 3d682daa..69cbf043 100644
--- a/parser.h
+++ b/parser.h
@@ -66,6 +66,7 @@ struct parser {
int tok_idx;
int rec_source_loc;
int read_unknown_structs;
+ int read_bad_json;
};
#endif
@@ -75,7 +76,7 @@ extern const int have_yydebug;
extern const wchar_t *spec_file;
extern val form_to_ln_hash;
extern val parser_s, unique_s, circref_s;
-extern val rec_source_loc_s, read_unknown_structs_s;
+extern val rec_source_loc_s, read_unknown_structs_s, read_bad_json_s;
extern val json_s;
extern struct cobj_class *parser_cls;