From 4f0b8d47af36dcd7cc1c41f3314805265250aa95 Mon Sep 17 00:00:00 2001 From: Mark Pulford Date: Tue, 20 Dec 2011 22:42:59 +1030 Subject: Add original JSON parser design outline --- devel/json_parser_outline.txt | 50 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 devel/json_parser_outline.txt diff --git a/devel/json_parser_outline.txt b/devel/json_parser_outline.txt new file mode 100644 index 0000000..01db78d --- /dev/null +++ b/devel/json_parser_outline.txt @@ -0,0 +1,50 @@ +parser: + - call parse_value + - next_token + ? nop. + +parse_value: + - next_token + ? call parse_object. + ? call parse_array. + ? push. return. + ? push. return. + ? push. return. + ? push. return. + +parse_object: + - push table + - next_token + ? push. + - next_token + ? nop. + - call parse_value + - set table + - next_token + ? return. + ? loop parse_object. + +parse_array: + - push table + - call parse_value + - table append + - next_token + ? loop parse_array. + ? ] return. + +next_token: + - check next character + ? { return + ? } return + ? [ return + ? ] return + ? , return + ? : return + ? [-0-9] gobble number. return + ? " gobble string. return + ? [ \t\n] eat whitespace. + ? n Check "null". return or + ? t Check "true". return or + ? f Check "false". return or + ? . return + ? \0 return -- cgit v1.2.3-55-g6feb