データ記述言語
基本的な型と配列(またはリスト)、オブジェクト(または構造体)、SET(集合)などが扱えるもの。
バイナリ版もあるのでデータ記述フォーマットなのかもしれない
プログラミング言語と同じようなパース処理が必要
単純な型と構造型から成る
単純形
null, undefined など特殊な型, 状態
数値
整数型
バイト型、ワードなどバイトの倍数型
byte
short
int
long
ビット型、ビット列型
boolean
bit-string
BigInteger ほぼ上限のない整数型
固定長
16bit
32bit float
64bit double
2進/8進/16進 可変長
10進 可変長 BigDecimal
NaN, infinity
文字型、文字列型
char
String
他
日付、時間型など
型の例はJava
構造と配列
構造は大きくは配列:Listと構造:Map、集合:Setの3つくらいに分けられる
java の例では Collection としてまとめられる
集合 Set 順序を持たない、重複なしの場合があり
配列 List 順序を持つ 比較なし
順列 ソート可能な配列 List
構造 Map 名前を持つ、重複不可、順序なしの場合があり
単純配列もListなどと同じ、class, 構造体も構造と同じ、として見ることができたりするのでこの範囲でまとめられる
構造体にメソッドなどを追加してclassになるとデータ記述言語の範囲を超える
その他
タグ、ラベルなどが扱えるものがある ASN.1でUniversal以外のclass
ブロックサイズに区切られている場合があるかもしれない
テキスト型
ASN.1 X.680系
X.680 型定義 スキーマ記述言語?
XER
JER
GSER
バイナリ型(言語かどうかは不明)
X.690 DER Distinguished Encoding Rule 識別符号化規則 標準的な形式
X.690 CER Canonical Encoding Rule 標準符号化規則 古めの形式
X.690 BER Basic Encoding Rule 基本符号化規則 古めの形式
図?
UML
似たもの
table:比較
言語 JSON JER YAML TOML ASN.1 CBOR Java
NULL null null 無効 NULL NULL null
undefined なし ? - undefined -
Boolean Boolean Bool, on, off true,false BOOLEAN Boolean boolean
ビット列 BIT STRING boolean[] BitSet
整数 Number ○ ○ INTEGER integer, bignum byte, short, int, long, BigInteger
最小 -2^53 (互換) ? 64bit -64bit tag なし? なし
最大 2^53 (互換) ? 64bit 64bit tag なし? なし
浮動小数点 無限? ○ ○ REAL ○ ○ BigDecimal
16bit Number TEXT TEXT ○ -
float Number TEXT TEXT ○ float
double Number TEXT TEXT ○ double
BigDecimal Number (互換外) TEXT REAL(TEXT) tag? BigDecimal
NaN - .NAN nan ○ NaN
Infinity - .inf -.inf +.inf inf, +inf, -inf ○ ○
binary BASE64 ? OCTETSTRING byte string ○
timestamp - ○ ○ UTCTime GeneralizedTime tag ○
TEXT String ○ ○ UTF8String PrintableStringなど text string String
Array / List Array 配列型 ○ SEQUENCE OF (同型) array Array / List
Map / Object Object ハッシュ型 ○ SEQUENCE map Map / Object
Set - ○? - SET / SET OF /- Set
Tag - - - ○ tag -
コメント - ○ # ○ - ○
シーケンス JSON Text Sequence ○ CBOR Sequence