================================================================================
Test01
================================================================================

module a.b.c {};

--------------------------------------------------------------------------------

(adl (scoped_name))

================================================================================
Test B
================================================================================

module test2 {
  struct S0{};
};

--------------------------------------------------------------------------------

(adl (scoped_name) (struct (name)))

================================================================================
JSON Arrays
================================================================================

@A [
  345,
  10.1,
  10,
  -10,
  null,
  true,
  false,
  { "stuff": "good" }
] module a.d.c {};

--------------------------------------------------------------------------------

(adl (annon (scoped_name) (json
  (array
    (number)
    (number)
    (number)
    (number)
    (null)
    (true)
    (false)
    (object
      (pair
        (key)
        (string)
      )
    )
  )
)) (scoped_name))

================================================================================
JSON String content
================================================================================

@A [
  "",
  "abc",
  "def\n",
  "ghi\t",
  "jkl\f",
  "//",
  "/**/"
] module a {};

--------------------------------------------------------------------------------

(adl (annon (scoped_name) (json
  (array
    (string)
    (string
      )
    (string
        (escape_sequence))
    (string
        (escape_sequence))
    (string
        (escape_sequence))
    (string)
    (string)
  )
)
) (scoped_name))

================================================================================
JSON Top-level numbers
================================================================================

@A -1 module a {};

--------------------------------------------------------------------------------

(adl (annon (scoped_name) (json
  (number))
) (scoped_name))

================================================================================
JSON Top-level null
================================================================================

@A null module a {};

--------------------------------------------------------------------------------
(adl (annon (scoped_name)
(json
  (null))
) (scoped_name))

================================================================================
JSON Object
================================================================================

@A {
  "a": 1,
  "b": "2",
  "c": [3,"d"]
} module a {};

--------------------------------------------------------------------------------

(adl (annon (scoped_name)
(json
  (object
    (pair
      (key)
      value: (number))
    (pair
      (key)
      value: (string))
    (pair
      (key)
      value: (array (number) (string))
    )
  )
)
) (scoped_name))
