DCIR:用于数据交换语言的中间代表
DCIR:用于数据交换语言的中间代表
所谓数据交换语言就是像JSON、XML、YAML这样的用于在程序与程序之间、程序与用户之间进行数据交换的语言;传统的数据交换方式普遍都采用这些数据交换语言来实现。
但是传统的数据交换方式有两大弊端:
1.使用不同数据交换语言的程序之间无法交换数据。
2.为了方便人工编辑,数据交换语言都是可读性很强的文本形式,这种形式不够底层,程序解析起来很麻烦。
为了解决这些弊端,我从LLVM中得到灵感——为什么不设计一种用于数据交换语言的中间代表(Intermediate Representation)?
我将这种IR命名为DCIR(Data Communicating Intermediate Representation)。
DCIR要足够底层,使程序可以很方便地对它进行读写,同时所有数据交换语言都要能够在它们自己和DCIR之间自由转换。
这样一来,所有程序只要能够支持DCIR,就相当于支持了所有的数据交换语言,而且还省去了解析数据交换语言的麻烦。
当然,还要开发出一套工具用来在各种数据交换语言和DCIR之间进行相互转换。
DCIR的初步设计
为了照顾种类繁多的字符编码,DCIR的字符串要用单独的字符串文件保存,非字符串内容则用数据文件保存。
字符串文件
字符串文件的命名格式为name.dcir-str-code。
其中name是源文件名,比如从config.json文件转换来的字符串文件name就是config;code是字符串编码格式名,比如采用UTF-8编码格式保存的字符串文件名就是config.dcir-str-utf-8。
一个DCIR中可以有多个采用不同编码格式的字符串文件。
字符串文件中的每个字符串都以\0结尾,通过由0开始的索引访问。
数据文件
数据文件的命名格式为name.dcir-data。