This is a drop-in replacement for the current JSON parser which is based on lemon (a LALR parser generator).
- reads and returns a single JSON_value and its nested children (using recursive descent parsing)
- allows you to process JSON from streams in addition to static memory buffers
- correctly processes unicode \u escaping including surrogates
- distinguishes between integer and real number representations
- provides information about the line and character in JSON that failed to parse
- is much simpler to understand and maintain (less lines of code and source files)
- is written to allow error recovery to be added later
This patch also adds more unit tests.