关于人类可编辑数据文件格式/解析库的建议

时间:2020-03-05 19:00:04  来源:igfitidea点击:

例如,现在我有一个自己的解决方案,该解决方案使用包含如下块的数据文件:

PlayerCharacter Fighter
  Hitpoints 25
  Strength 10
  StartPosition (0, 0, 0)
  Art
    Model BigBuffGuy
    Footprint LargeFootprint
  end
  InventoryItem Sword
  InventoryItem Shield
  InventoryItem HealthPotion
end
  • 人工可编辑(理想情况下,带有最少的垃圾字符)
  • 对错误具有弹性(很少出现"哇,我现在无法解析任何有用的信息"样式错误,因此我丢失了文件其余部分中的所有数据)-当然,仍然能够识别并报告它们。在我的示例中,唯一完整的失败案例是缺少" end"。
  • 嵌套结构样式数据
  • 数组/列表样式数据
  • 可定制的基础类型
  • 快速地

是否有满足/超过这些要求的知名解决方案?

解决方案

回答

Yaml是一个很好的解决方案,非常接近我们所拥有的。搜索它。

回答

我赞同YAML的建议。它非常容易编辑,可以宽恕错误,并得到广泛支持(尤其是在动态语言中)。

回答

我说最常见的选择是:

  • JSON(官方网站)-非常灵活,尽管标点符号可能会使人们习惯一些
  • INI-超级简单易用,但数据类型有所限制
  • XML-非常灵活,通用,但有时过于冗长

回答

我们可以尝试通过以下网址获取JSON:http://www.json.org/

它最初是为javascript和网络使用而设计的。但是它很干净,并且支持多种语言。

回答

Lua被设计为一种编程语言,在该语言中,语法也使我们可以轻松地将其用作标记语言,从而可以像对待代码一样包含数据文件。许多计算机游戏由于其速度和易用性而将其用于脚本编写,例如《魔兽世界》。但是,它最初是为能源行业设计和维护的,因此有很深厚的背景。

带有S表达式的Scheme也是一种非常不错的数据外观,但外观却不同的语法。最后,我们可以获得大多数入门级开发人员都了解的XML。我们还可以使用一个不错的开发套件(如ANTLR)来滚动自己定义良好且高效的解析器。

回答

我建议使用JSON。

  • 与YAML一样可读/可编辑
  • 如果碰巧用于Web,则可以将eval()放入JavaScript对象
  • 可能像YAML这样的跨语言