Удобный для восприятия человеком и компьютером формат иерархических данных с наследованием файлов - PullRequest
1 голос
/ 13 октября 2010

Я ищу формат данных для текстовых файлов с иерархической информацией.Эти файлы будут создаваться в основном человеком (а не сгенерированными программами), но будут читаться в основном программами.Основные требования:

  1. Очень простой и незагроможденный синтаксис.(Пример: уровни иерархии, определяемые вкладками, будут работать нормально.) Так просто, что все описание языка поместится на странице.

  2. Чистая и краткая ментальная модель.(Пример: дерево, где листья - это значения типов int, string, float, bool, а ключи - нествольные узлы. Несколько более сложная модель, скажем, со словарями, тоже подойдет).

  3. Единственный способ представить любую данную семантику;то есть, нет эквивалентного синтаксиса с тем же значением.

  4. Предпочтительно легко разбирать на языке, подобном python;или стабильные библиотеки, доступные для этой цели.

  5. Может разрешать какое-то наследование между файлами.То есть я бы хотел, чтобы один файл частично перекрывал другой.В идеале я хотел бы даже разрешить множественное наследование, при этом традиционные конфликты порядка разрешения обрабатываются просто путем запрета получения любого значения более чем от одного родителя.

  6. Не создает никакихПодводные камни для введенных пользователем данных (например, текст без кавычек может быть строкой в ​​YAML, но если это зарезервированное слово, то это не так).

Это то, что доступно сили мне нужно собрать его с нуля?

YAML не работает, потому что не допускает наследования между файлами, имеет недостатки, как описано выше, и имеет много альтернативных синтаксических конструкций для выполнениято же самое.

И YAML / XML не работает, потому что описание ни того, ни другого не поместится на одной странице.

Спасибо!

1 Ответ

1 голос
/ 13 октября 2010

Я не знаю ни одного языка сериализации данных, который бы удовлетворял всем вашим требованиям.

Мне очень нравятся JSON и OGDL (потому что они намного легче читать, чем XML), но они оба не (по крайней мере) допускают наследование.

PS: В Википедии есть сравнение популярных форматов данных здесь .

PPS: Полагаю, вам стоит написать DSL . внутренняя (или слабая ) реализация не будет такой сложной для реализации, и вы можете использовать сам Python в качестве основного языка.

...