人与计算机可读的分层数据格式,跨文件继承

时间:2010-10-12 22:15:34

标签: xml parsing schema yaml

我正在寻找具有分层信息的文本文件的数据格式。这些文件主要由人工输入创建(而不是由程序生成),但主要由程序读取。主要要求是:

  1. 非常简单且整洁的语法。 (示例:由制表符定义的层次结构级别可以正常工作。)如此简单,整个语言描述都适合页面。

  2. 清晰简洁的心理模型。 (例如:树是其中类型为int,string,float,bool和keys的值的树是非叶节点。稍微复杂的模型,比如字典,也可以)。

  3. 表示任何给定语义的单一方法;即,没有具有相同含义的等效语法。

  4. 最好用python这样的语言轻松解析;或者用于此目的的稳定库。

  5. 可以允许文件之间的某种继承。也就是说,我想允许一个文件部分覆盖另一个文件。理想情况下,我甚至允许多重继承,传统的解决顺序冲突只是通过禁止从多个父级派生任何值来处理。

  6. 不会为用户输入的数据造成任何陷阱(例如,不带引号的文本可以是YAML中的字符串,但如果它是保留字,则不是)。

  7. 它是现成的还是我需要从头开始构建它?

    YAML不起作用,因为它不允许文件之间的继承,如上所述存在缺陷,并且有许多替代语法结构来执行相同的操作。

    并且YAML / XML不起作用,因为两者的描述都不适合任何一页。

    谢谢!

1 个答案:

答案 0 :(得分:1)

我不知道任何满足您所有这些要求的数据序列化语言。

我非常喜欢JSON和OGDL(因为它们比XML更容易阅读),但它们都(至少)在允许继承方面失败了。

PS:维基百科对热门数据格式here进行了比较。

PPS:我想你应该考虑写一个DSL内部(或)实现并不难实现,您可以使用Python本身作为宿主语言。