Data-E in JSON

From Erights

(Difference between revisions)
Jump to: navigation, search
(Literals: spec change for integers, some notes)
Line 5: Line 5:
==Literals==
==Literals==
-
String literals are copied as-is into JSON (rationale: compactness, readability). The three other types of literals are tagged, since JSON does not have character values and (we assume) JavaScript-based JSON implementations will not distinguish floats from integers.
+
String literals are copied as-is into JSON (rationale: compactness, readability). Characters are tagged since JSON does not have character values. Integers are tagged and written as strings since JavaScript-based JSON implementations will not preserve the values of integers that don't fit in float64.
 +
 
 +
{{XXX}} justify or remove tagging of float64.
 +
 
 +
{{XXX}} review what base/format to write integers in. In particular, if there is such, it should be readily convertible to a the format used by some big-integer-in-JavaScript library.
{|
{|
! !! Data-E Source !! JSON
! !! Data-E Source !! JSON
|-
|-
-
| String || <code>"foo"</code> || <code>"foo"</code>
+
| [[String]] || <code>"foo"</code> || <code>"foo"</code>
|-
|-
-
| Integer || <code>9</code> || <code>["int", 9]</code>
+
| [[Integer]] || <code>9</code> || <code>["int", "9"]</code>
|-
|-
-
| Float64 || <code>9.99</code> || <code>["float64", 9.99]</code>
+
| [[Float64]] || <code>9.99</code> || <code>["float64", 9.99]</code>
|-
|-
-
| Character || <code>'f'</code> || <code>["char", "f"]</code>
+
| [[Character]] || <code>'f'</code> || <code>["char", "f"]</code>
|}
|}

Revision as of 19:42, 16 January 2009

There is interest (2009-01-07) in using CapTP in Cajita systems, with a JSON syntax for the message/serialization layer. Therefore, this page defines a JSON syntax for Data-E.

Except for literals, it is exactly the same as the Data-E in TermL format as implemented by deASTKit.

Contents

Literals

String literals are copied as-is into JSON (rationale: compactness, readability). Characters are tagged since JSON does not have character values. Integers are tagged and written as strings since JavaScript-based JSON implementations will not preserve the values of integers that don't fit in float64.

XXX justify or remove tagging of float64.

XXX review what base/format to write integers in. In particular, if there is such, it should be readily convertible to a the format used by some big-integer-in-JavaScript library.

Data-E Source JSON
String "foo" "foo"
Integer 9 ["int", "9"]
Float64 9.99 ["float64", 9.99]
Character 'f' ["char", "f"]

Import and ibid

Data-E Source JSON
foo ["import", "foo"]
t_9 ["ibid", 9]

Call

Data-E Source JSON
foo.bar(baz...) ["call", foo, "bar", [baz...]]

Define

Data-E Source JSON
def t_9 := bar ["define", 9, bar]
def t_9 := ...t_9... ["defrec", 9, ...["ibid", 9]...]
Personal tools
more tools