========================================== recovers from top-level errors ========================================== [} --- (ERROR) ========================================== recovers from unexpected tokens ========================================== barf --- (ERROR) ========================================== recovers from errors inside arrays ========================================== [1, , 2] --- (value (array (number) (ERROR) (number))) ========================================== recovers from errors inside objects ========================================== { "key1": 1, oops } --- (value (object (string) (number) (ERROR))) ========================================== recovers from errors inside nested objects ========================================== { "key1": { "key2": 1, 2 }, [, "key3": 3 } --- (value (object (string) (object (string) (number) (ERROR)) (ERROR) (string) (number)))