Better tag assignment, emphasising that Embeddeds are real Values
This commit is contained in:
parent
8bb3f329a2
commit
3baade843d
|
@ -31,7 +31,7 @@ For a value `v`, we write `«v»` for the binary encoding of `v`.
|
||||||
e(v, d) = [v + d] if v < 128
|
e(v, d) = [v + d] if v < 128
|
||||||
e(v / 128, 0) ++ [(v % 128) + d] if v ≥ 128
|
e(v / 128, 0) ++ [(v % 128) + d] if v ≥ 128
|
||||||
|
|
||||||
«#!V» = [0xBF] ++ «V»
|
«#!V» = [0xAB] ++ «V»
|
||||||
|
|
||||||
The functions `binary32(F)` and `binary64(D)` yield big-endian 4- and
|
The functions `binary32(F)` and `binary64(D)` yield big-endian 4- and
|
||||||
8-byte IEEE 754 binary representations of `F` and `D`, respectively.
|
8-byte IEEE 754 binary representations of `F` and `D`, respectively.
|
||||||
|
@ -50,4 +50,4 @@ decoder knows when to stop.
|
||||||
already be annotated) with some sequence of `Value`s `[v_1, ..., v_m]`,
|
already be annotated) with some sequence of `Value`s `[v_1, ..., v_m]`,
|
||||||
surround `r` as follows:
|
surround `r` as follows:
|
||||||
|
|
||||||
[0xBE] ++ len(|r|) ++ r ++ len(|«v_1»|) ++ «v_1» ++...++ len(|«v_m»|) ++ «v_m»
|
[0xBF] ++ len(|r|) ++ r ++ len(|«v_1»|) ++ «v_1» ++...++ len(|«v_m»|) ++ «v_m»
|
||||||
|
|
|
@ -178,25 +178,25 @@ The functions `binary32(F)` and `binary64(D)` yield big-endian 4- and
|
||||||
### Embeddeds.
|
### Embeddeds.
|
||||||
|
|
||||||
The `Repr` of an `Embedded` is the `Repr` of a `Value` chosen to
|
The `Repr` of an `Embedded` is the `Repr` of a `Value` chosen to
|
||||||
represent the denoted object, prefixed with `[0xBF]`.
|
represent the denoted object, prefixed with `[0xAB]`.
|
||||||
|
|
||||||
«#!V» = [0xBF] ++ «V»
|
«#!V» = [0xAB] ++ «V»
|
||||||
|
|
||||||
### Annotations.
|
### Annotations.
|
||||||
|
|
||||||
To annotate a `Repr` `r` with some sequence of `Value`s `[v_1, ...,
|
To annotate a `Repr` `r` with some sequence of `Value`s `[v_1, ...,
|
||||||
v_m]`, surround `r` as follows:
|
v_m]`, surround `r` as follows:
|
||||||
|
|
||||||
[0xBE] ++ len(|r|) ++ r ++ len(|«v_1»|) ++ «v_1» ++...++ len(|«v_m»|) ++ «v_m»
|
[0xBF] ++ len(|r|) ++ r ++ len(|«v_1»|) ++ «v_1» ++...++ len(|«v_m»|) ++ «v_m»
|
||||||
|
|
||||||
The `Repr` `r` *MUST NOT* already have annotations; that is, it must not begin with `0xBE`.
|
The `Repr` `r` *MUST NOT* already have annotations; that is, it must not begin with `0xBF`.
|
||||||
|
|
||||||
For example, the `Repr` corresponding to textual syntax `@a@b[]`, i.e.
|
For example, the `Repr` corresponding to textual syntax `@a@b[]`, i.e.
|
||||||
an empty sequence annotated with two symbols, `a` and `b`, is
|
an empty sequence annotated with two symbols, `a` and `b`, is
|
||||||
|
|
||||||
«@a @b []»
|
«@a @b []»
|
||||||
= [0xBE] ++ len(|«[]»|) ++ «[]» ++ len(|«a»|) ++ «a» ++ len(|«b»|) ++ «b»
|
= [0xBF] ++ len(|«[]»|) ++ «[]» ++ len(|«a»|) ++ «a» ++ len(|«b»|) ++ «b»
|
||||||
= [0xBE, 0x81, 0xA8, 0x82, 0xA6, 0x61, 0x82, 0xA6, 0x62]
|
= [0xBF, 0x81, 0xA8, 0x82, 0xA6, 0x61, 0x82, 0xA6, 0x62]
|
||||||
|
|
||||||
## Security Considerations
|
## Security Considerations
|
||||||
|
|
||||||
|
@ -274,11 +274,11 @@ undetermined number of `Value`s across, say, a TCP/IP connection:
|
||||||
A9 - Set
|
A9 - Set
|
||||||
AA - Dictionary
|
AA - Dictionary
|
||||||
|
|
||||||
(Ax) RESERVED AB-AF
|
AB - Embedded
|
||||||
|
|
||||||
(Bx) RESERVED B0-BD
|
(Ax) RESERVED AC-AF
|
||||||
BE - Annotations. {BE Lval val Lann0 ann0 Lann1 ann1 ...}
|
(Bx) RESERVED B0-BE
|
||||||
BF - Embedded
|
BF - Annotations. {BF Lval val Lann0 ann0 Lann1 ann1 ...}
|
||||||
|
|
||||||
## Appendix. Binary SignedInteger representation
|
## Appendix. Binary SignedInteger representation
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue