DCIR:用于數(shù)據(jù)交換語言的中間代表
DCIR:用于數(shù)據(jù)交換語言的中間代表
所謂數(shù)據(jù)交換語言就是像JSON、XML、YAML這樣的用于在程序與程序之間、程序與用戶之間進行數(shù)據(jù)交換的語言;傳統(tǒng)的數(shù)據(jù)交換方式普遍都采用這些數(shù)據(jù)交換語言來實現(xiàn)。
但是傳統(tǒng)的數(shù)據(jù)交換方式有兩大弊端:
1.使用不同數(shù)據(jù)交換語言的程序之間無法交換數(shù)據(jù)。
2.為了方便人工編輯,數(shù)據(jù)交換語言都是可讀性很強的文本形式,這種形式不夠底層,程序解析起來很麻煩。
為了解決這些弊端,我從LLVM中得到靈感——為什么不設計一種用于數(shù)據(jù)交換語言的中間代表(Intermediate Representation)?
我將這種IR命名為DCIR(Data Communicating Intermediate Representation)。
DCIR要足夠底層,使程序可以很方便地對它進行讀寫,同時所有數(shù)據(jù)交換語言都要能夠在它們自己和DCIR之間自由轉換。
這樣一來,所有程序只要能夠支持DCIR,就相當于支持了所有的數(shù)據(jù)交換語言,而且還省去了解析數(shù)據(jù)交換語言的麻煩。
當然,還要開發(fā)出一套工具用來在各種數(shù)據(jù)交換語言和DCIR之間進行相互轉換。
DCIR的初步設計
為了照顧種類繁多的字符編碼,DCIR的字符串要用單獨的字符串文件保存,非字符串內容則用數(shù)據(jù)文件保存。
字符串文件
字符串文件的命名格式為name.dcir-str-code。
其中name是源文件名,比如從config.json文件轉換來的字符串文件name就是config;code是字符串編碼格式名,比如采用UTF-8編碼格式保存的字符串文件名就是config.dcir-str-utf-8。
一個DCIR中可以有多個采用不同編碼格式的字符串文件。
字符串文件中的每個字符串都以\0結尾,通過由0開始的索引訪問。
數(shù)據(jù)文件
數(shù)據(jù)文件的命名格式為name.dcir-data。