首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比YAML简单,比CSV好

比YAML简单,比CSV好
EN

Stack Overflow用户
提问于 2015-04-29 14:28:52
回答 2查看 1.7K关注 0票数 3

我需要一个非常简单的输入语言来满足我的客户的需求。在我认识的人中(XMLJSONYAMLCSV),XMLJSON不能被使用(“不是人类的可读性”)。

对于我的任务来说,CSV太简单了(有一些层次结构,有些属性可能附加到"items")

YAML太复杂了。(“文件? TL;DR")

是否有什么众所周知的标准可以填补YAMLCSV之间的空白?不然我就得自己做了?

出现这个问题是因为我没有时间重新发明轮子。

UPD:(经过一些讨论)

我的“语言”应该类似于CSV,但不是那么简单。

树结构有一个定义(模式、模板、模式)(有些地方,这不是我的交易)。

我必须为它的数据存储定义人类可读的语言。

各种“模式”的非正式例子:

代码语言:javascript
复制
Class -> kind -> species  
Menu -> submenu -> sub-submenu
Panel -> subpanel -> control

相应内容的示例

代码语言:javascript
复制
animals [cat, dog, elephant {big, gray}],
plants [deciduous [oak, maple, baobab],
      other [fir, cactus]
]

File [New, Open, Save, Remove {disabled}],
View [Text [ANSI {default}, UTF-8],
     Binary, HTML],
Help [On-line, Forum, About]

Header {height:10} [Welcome, Controls [Help Button, Search Pane]],
Main [Teaser, News, Articles [1, 2, ..., N]],
Footer [Status Bar [?, ?], Powered By, Copyright notice {color: gold}]

因此,我对所需语言的初步定义是:

代码语言:javascript
复制
Nodes are delimited by ',' (comma) or \n (line feed)
Node may have optional set of attributes (in curly brackets)
Node may have optional set (array) of subnodes (in square brackets)

如果世界上有类似的东西在使用,那么我应该看到它,以避免陷阱。

否则,我应该为我的新的巧妙的语言申请专利)

EN

回答 2

Stack Overflow用户

发布于 2015-04-29 14:35:20

配置文件有一个RFC出版

格式如下:

代码语言:javascript
复制
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
skip-external-locking
old_passwords = 1
skip-bdb
skip-innodb

它的工作方式如下:

代码语言:javascript
复制
[section_name]
my_variable = my_value

您可以有多个部分,每个部分都可以有任意多个变量。它不如JSONXML强大,因为您可以拥有多个嵌套元素,但您可以这样做:

代码语言:javascript
复制
[section1]
my_var = 2

[section2]
parent_section = section1
my_other_var = 3

当然,您需要编写一些代码来处理这个用例,但是它保持语法相当清晰,并且根据您的需要,这种格式可能就足够了。

我不知道您将使用哪种语言,但是有一个用Python实现 (可能在大多数语言中)

它给出的东西是人类可读的,易于解析,而且相当强大。

编辑:示例来自Python文档(参见上面的链接)。

票数 1
EN

Stack Overflow用户

发布于 2018-01-03 22:22:49

这是个老问题,但我的回答是支持未来的谷歌员工。

您可以使用s-表达式,如in read/lisp,这对于人们来说读/写相当简单,如果经过良好的验证,应该很容易为任何语言找到一个免费的解析器。

python元组非常类似于with /lisp,其缺点是引用更多--冗长,需要昏迷来分隔,而不是空格,但在Python中,它的优点是可以立即解析。

你可以这样证明:

代码语言:javascript
复制
(
    animals
    (
        cat
        dog
        (
            elephant
            (
                big
                gray
            )
        )
    )
)

或者像这样:

代码语言:javascript
复制
(animals
    (cat
    dog
    (elephant
        (big
        gray))))

我自己并没有想到这一点,而是从这里得到了这样的想法:http://jsdelfino.blogspot.com.br/2009/11/simpler-than-json.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29946693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档