|
介绍 Doge Serialized Object Notation
|
- object
- such wow
such members wow
- members
- pair
pair , members
pair . members
pair ! members
pair ? members
- pair
- string is value
- array
- so many
so elements many
- elements
- value
value and elements
value also elements
- value
- string
number
object
array
yes
no
empty
- string
- ""
" chars "
- chars
- char
char chars
- char
- any-Unicode-character-
except-"-or-\-or-
control-character
\"
\\
\/
\b
\f
\n
\r
\t
\u six octal-digits
- number
- int
int frac
int exp
int frac exp
- int
- digit
digit1-7 digits
- digit
- digit1-7 digits
- frac
- . digits
- exp
- very digits
- digits
- digit
digit digits
- very
- very
very+
very-
VERY
VERY+
VERY-
DSON (Doge Serialized Object Notation) 是一种数据交换格式,
易于柴犬阅读和编写,同时也易于机器解析和生成。它被设计成与
DogeScript 编程语言 非常相似。
DSON 并没有采用独立于语言的文本格式,并使用了各种日本犬种的习惯。
这些特性使得 DSON 成为理想的涉及到所有与柴犬相关通信的数据交换语言。
下面这些例子展示了 DSON 的语法还有和 JSON 相对应的语法:
such "foo" is "bar". "doge" is "shibe" wow // {"foo": "bar", "doge": "shibe"}
such "foo" is such "shiba" is "inu", "doge" is yes wow wow // {"foo": {"shiba": "inu", "doge": true}}
such "foo" is so "bar" also "baz" and "fizzbuzz" many wow // {"foo": ["bar", "baz", "fizzbuzz"]}
such "foo" is 42, "bar" is 42very3 wow // {"foo": 34, "bar": 17408}
像 JSON 一样,DSON 构建于两种结构:
- “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object)、
纪录(record)、结构(struct)、字典(dictionary)、哈希表(hash table)、
有键列表(keyed list),或者关联数组 (associative array)。
- 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)、
向量(vector)、集合(list),或者序列(sequence)
这些都是常见的数据结构。事实上大部分现代的犬类的编程语言都以某种形式支持它们。
这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
所有 DSON 使用的关键字都是大小写敏感的并且必须是小写字母。
JSON 具有以下这些形式:
对象 是一个无序的 “‘名称/值’对” 集合。
一个对象以 such 开始,以 wow 结束。每个“名称”后跟一个 is。
“‘名称/值’对” 之间使用 ,(逗号)、. (句号) 或 ! 或 ? 分隔。
数组 是 值(value)的有序集合。一个数组以 so 开始,以 many 结束。
值之间使用 and 或 also 分隔。
值(value) 可以是双引号括起来的 字符串(string)、数值(number)、
yes、no、empty、对象(object)或者数组(array)。这些结构可以嵌套。
字符串(string) 是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。
一个字符(character)即一个单独的字符串(character string)。
字符串(string) 与C或者Java的字符串非常相似。
数值(number) 也与 C 或者 Java 的数值非常相似。除去现在方便犬类使用的八进制格式。
空白可以加入到任何符号之间。以下描述了完整的语言。wow。
DSON 类库、解析器与一些有关的开源软件:
-
ANTLR4:
- such-dson: DSON grammar plugin (by sidfarkus)
-
C:
- cdson: Parser/Serializer (by frozencemetery)
-
C++:
- libDSON: Parser (by TheRabbitologist)
-
Clojure:
-
DogeScript:
- DSON.djs: Parser/Serializer (by remixz, the god of DogeScript himself) [shibe approves!]
-
JavaScript:
- dson2.js: Parser/Serializer, based on JSON2 (by paul_miner)
- DogeONtoJSON: Converter with tests and examples (by baseketball)
- dogeon: Parser/Serializer for Node.js (by kpdecker)
- dson_parser: Parser based on PEGjs (by JDeuce)
-
Go:
- dson2json: Converter (by gabstv)
- dson.go: Parser/Serializer (by muhammadmuzzammil1998)
-
Haskell:
-
.NET:
-
Perl 6:
-
PHP:
- dson-php: Parser/Serializer (by Gurrewe)
-
Python:
-
Scala:
- VeryDogeon: Parser/Serializer with Java wrapper (by erosas)