2010-10-12 45 views
1

我正在尋找具有分層信息的文本文件的數據格式。這些文件主要由人工輸入(而不是由程序生成)創建,但主要由程序讀取。主要要求如下:跨文件繼承的人機界面數據格式

  1. 非常簡單和整齊的語法。 (例如:由製表符定義的層次級別可以正常工作。)很簡單,整個語言描述將適合頁面。

  2. 清潔和簡潔的心理模型。 (例如:樹的葉子是int,string,float,bool類型的值,key是非葉子節點,比較複雜的模型,比如字典也可以)。

  3. 一種表示任何給定語義的單一方式;即沒有相同含義的等同語法。

  4. 最好容易用python語言解析;或可用於此目的的穩定庫。

  5. 可以允許某種文件之間的繼承。也就是說,我想允許一個文件部分覆蓋另一個文件。理想情況下,我甚至希望允許多重繼承,而傳統的解決衝突的衝突僅僅是通過禁止從多個父項派生任何值來處理。

  6. 不會爲用戶輸入的數據創建任何陷阱(例如,未加引號的文本可以是YAML中的字符串,但是如果它是保留字,則不是)。

有什麼事情可關閉的,現成的或我需要從頭開始構建呢?

YAML不起作用,因爲它不允許在文件之間繼承,如上所述有缺陷,並且有許多可選的語法結構來做同樣的事情。

而且YAML/XML不起作用,因爲兩者的描述都不適用於任何一個頁面。

謝謝!

回答

1

我不知道任何滿足您所有這些要求的數據序列化語言。我非常喜歡JSON和OGDL(因爲它們比XML更容易閱讀),但是它們在允許繼承方面都失敗了(至少)。

PS:維基百科比較流行的數據格式here

PPS:我想你應該考慮寫一個DSL。 A 內部(或)實現不會很難實現,您可以使用Python本身作爲主機語言。

+0

確實,決定去DSL ... – max 2010-10-15 07:08:44