Avro
  1. Avro
  2. AVRO-268

Replace lemon-generated JSON parser with simpler recursive descent parser

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: None
    • Fix Version/s: 1.3.0
    • Component/s: c
    • Labels:
      None

      Description

      This is a drop-in replacement for the current JSON parser which is based on lemon (a LALR parser generator).

      This parser

      • 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.

      1. AVRO-268.patch
        253 kB
        Matt Massie

        Activity

        No work has yet been logged on this issue.

          People

          • Assignee:
            Matt Massie
            Reporter:
            Matt Massie
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development