Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Формат ZML

30K
22 ноября 2010 года
Ден Зурин
28 / / 17.02.2008
Hi all!
Я придумал простой и удобный формат ZML (Zurin's Markup Language) в качестве альтернативы XML, JSON и другим универсальным форматам.

Преимущества формата ZML:
1) компактность, меньше лишних символов => файлы занимают меньший размер
2) наглядность и читабельность для человека
3) неограниченная расширяемость
4) простота разбора

Обозначения:
 
Код:
{a} - последовательность a, aa, aaa и т.д. (включая пустую)
[a] - необязательное наличие a
a|b|...|z - или a, или b, ..., или z
"text" - текст "text", вводимый без изменений (без кавычек)


Синтаксис:
Код:
LETTER ::= любая буква
CHAR ::= любой выводимый символ, начиная с пробела
SEP ::= пробел, табуляция или перевод строки
ENDTEXTLINE ::= {" "|"\t"} ">" {" "|"\t"}
TEXTLINE ::= любая последовательность CHAR, кроме ENDTEXTLINE
ENDCOMMENTLINE ::= {" "|"\t"} {CHAR} ">#" {" "|"\t"}
COMMENTLINE ::= любая последовательность CHAR, кроме ENDCOMMENTLINE
DIGIT ::= 0|1|2|3|4|5|6|7|8|9
HEXDIGIT ::= DIGIT|A|B|C|D|E|F|a|b|c|d|e|f
LETTERORDIGIT ::= LETTER|DIGIT
IDENTIFIER ::= LETTER {LETTERORDIGIT}
VDECNUM ::= ["-"] DIGIT {DIGIT}
VHEXNUM ::= "0x" HEXDIGIT {HEXDIGIT}
VFLOATNUM ::= ["-"] DIGIT {DIGIT} "." DIGIT {DIGIT}
VCHAR ::= "\'" ["\\"] CHAR "\'"
VSTRING ::= "\"" CHAR {CHAR} "\""
VBOOL ::= "+" | "-"
VENUM ::= IDENTIFIER
VTEXT ::= "<" "\n" [TEXTLINE {"\n" TEXTLINE}] "\n" ENDTEXTLINE
NODE ::= "{" {SEP} LINE {SEP {SEP} LINE} {SEP} "}"
VALUE ::= VDECNUM|VHEXNUM|VFLOATNUM|VCHAR|VSTRING|VBOOL|VENUM|VTEXT|NODE
ONELINECOMMENT ::= "# " {CHAR} "\n"
MUTLILINECOMMENT ::= "#<" [COMMENTLINE {"\n" COMMENTLINE}] ENDCOMMENTLINE
COMMENT ::= ONELINECOMMENT|MULTILINECOMMENT
LINE ::= [IDENTIFIER SEP {SEP} VALUE] [{SEP} COMMENT]
Файл ::= LINE {{SEP} LINE}


И несколько примеров.

Описание конфигурации:
 
Код:
sound + # звук включен
music - # музыка выключена
# графические настройки
screen {
  # ширина и высота экрана
  width 640
  height 480
  bpp 32 # бит/пиксель
  doublebuffer + # включена двойная буферизация
}


Описание формы:
Код:
# форма Form1
form {
  # имя
  name "Form1"
  # заголовок
  title "Main Form"
  # шрифт
  font {
    size 12 # 12 пунктов
    italic - # нет курсива
    bold - # не полужирный
  }
  color red # цвет
  # размеры
  width 400
  height 300
  # обработчики событий
  events {
    onclick "Form1_click"
    onclosing "Form1_closing"
    onpaint "Form1_paint"
  }
}


Описание дерева:
Код:
root {
  # корень "Root"
  # имеет ветви "Wise A", "Wise B" и "Wise C"
  name "Root"
  wise {
    # ветвь "Wise A"
    # имеет подветви "Wise A-1" и "Wise A-2"
    name "Wise A"
    wise {name "Wise A-1"}
    wise {name "Wise A-2"}
  }
  wise {
    # ветвь "Wise B"
    # имеет подветви "Wise B-1" и "Wise B-2"
    name "Wise B"
    wise {
      # ветвь "Wise B-1"
      # имеет подветви "Wise B-1-X" и "Wise B-1-Y"
      name "Wise B-1"
      wise {name "Wise B-1-X"}
      wise {name "Wise B-1-Y"}
    }
    wise {name "Wise B-2"}
  }
  wise {name "Wise C"}
}


Текстовые данные:
Код:
chapter {
#< А это пример
многострочного
#< (кстати, он может быть вложенным) >#
комментария. >#
name "Глава 1"
p <
  Первый абзац
текста.
>
p <
  Второй абзац
текста.
>
}


Думаю добавить еще массивы:
 
Код:
array [element1 element2 elementN]
1
22 ноября 2010 года
kot_
7.3K / / 20.01.2000
и чем же он удобен?
30K
22 ноября 2010 года
Ден Зурин
28 / / 17.02.2008
kot_

Смотри пункт "Преимущества ZML".
Вот пример той же конфигурации на XML:
 
Код:
<sound>+</sound>
<music>-</music>
<screen>
  <width>640</width>
  <height>480</height>
  <bpp> 32</bpp>
  <doublebuffer>+</doublebuffer>
</screen>

Или на JSON:
 
Код:
{
  "sound" : true,
  "music" : false,
  "screen": {
    "width" : 640,
    "height" : 480,
    "bpp": 32,
    "doublebuffer": true
  }
}

Или на YAML:
 
Код:
sound: true
music: false
screen:
  - width: 640
  - height: 480
  - bpp: 32
  - doublebuffer: true

В каком формате файл имеет меньший размер?
В каком формате разбор файла больше, и он будет загружен быстрее?
В каком формате файл легко читается и редактируется человеком?
Очевидно - в формате ZML.
10
22 ноября 2010 года
Freeman
3.2K / / 06.03.2004
Borland DFM с сишными скобками и юниксовыми комментариями. Чем он отличается от оригинала?
1
22 ноября 2010 года
kot_
7.3K / / 20.01.2000
я так подозреваю, что фамилие ТС - Попов.
1
22 ноября 2010 года
kot_
7.3K / / 20.01.2000
и я кстати так и не услышал внятного ответа - на вопрос - "чем удобно"?
11
22 ноября 2010 года
oxotnik333
2.9K / / 03.08.2007
пока не будет написан парсер, который будет быстрее XML-ского работать, говорить об удобстве рано.
7
22 ноября 2010 года
@pixo $oft
3.4K / / 20.09.2006
А мне кажется,этот автор уже где-то создавал тему про этот удобный язык разметки
30K
22 ноября 2010 года
Ден Зурин
28 / / 17.02.2008
Цитата: @pixo $oft
А мне кажется,этот автор уже где-то создавал тему про этот удобный язык разметки



Да. Формат также обсуждается на форуме GameDev.ru:
http://www.gamedev.ru/flame/forum/?id=140660

87
22 ноября 2010 года
Kogrom
2.7K / / 02.02.2008
В целом - нормально. Особенно, если это "just for fun". Но есть некоторые непонятности.
Цитата: Ден Зурин

Текстовые данные:
Код:
chapter {
#< А это пример
многострочного
#< (кстати, он может быть вложенным) >#
комментария. >#
name "Глава 1"
p <
  Первый абзац
текста.
>
p <
  Второй абзац
текста.
>
}


Вот эти текстовые данные как-то вываливаются из общего стиля. html-щина какая-то... Ну и многострочные комментарии с вложениями смотрятся некрасиво. Многие редакторы поддерживают комментирование (разкомментирование) набора строк, так что эта фича не очень актуальна, а читаемость снижает.

Цитата: Ден Зурин
Думаю добавить еще массивы:
 
Код:
array [element1 element2 elementN]



Да. Без этого формат будет унылее, чем, например, JSON.

297
22 ноября 2010 года
koodeer
1.2K / / 02.05.2009
Подавляющему большинству прикладных программистов важно одно: наличие готовых библиотек для своего языка программирования.

Вот пишу я на C#, я просто использую XML, т. к. это изначально встроено в .NET. Если понадобится большая компактность, я заюзаю, например, YAML - библиотеки для него имеются, скачивай и используй.

Для ныне популярных форматов - XML, YAML, HAML, JSON - готовые библиотеки есть для самых разных языков - C#, C++, Java, etc. То есть я могу записать данные на Шарпе, прочитать их на Жаве. Для вашего формата мне сначала придётся самому написать парсеры, а уже потом пользоваться. Не хочу! Лениво...

Вот будут в наличие a) готовые, b) надёжные, c) быстрые библиотеки для вашего формата для многих языков - тогда я обращу на него свой благосклонный взор. А до тех пор - ацтой!
244
22 ноября 2010 года
UAS
2.0K / / 19.07.2006
В вашем случае, в общем, надо коммьюнити собирать, дабы решить то, что обозначил koodeer. Иначе формат умрет
241
22 ноября 2010 года
Sanila_san
1.6K / / 07.06.2005
Формат мёртв изначально. Он делает всё то же самое, что YAML, но различие в изяществе незначительно. Незачем использовать неизвестное новое, если оно незначительно лучше хорошо испытанного старого (и то ещё не доказано строго).

По-моему, автор заслуживает поощрения отзывом за то, что старается что-то сделать. С другой стороны, автор заслуживает и порицания, поскольку изобретает велосипед. И опять же, по-моему изобретать форматы без крайней на то нужды - дело корпораций, а не одиночек: у последних форматы часто оказываются мёртворождёнными. Автор не понимает известного закона продаж: если вещь никому не нужна, её никто не купит.
87
23 ноября 2010 года
Kogrom
2.7K / / 02.02.2008
Цитата: Kogrom
Вот эти текстовые данные как-то вываливаются из общего стиля. html-щина какая-то...



Тут должен быть какой-то список, несортируемое множество, типа:

 
Код:
text (
    p
    i "Тут должен" # текст курсивом
    b "быть какой-то список," # полужирный
    t "несортируемое множество" # обычный текст
    br 4 # 4 перехода на другую строку
)


Как-то так. Обычный словарь не подойдёт, ибо он имеет право менять порядок слов.

Не особо изящно, зато не так уходит от общего стиля.
241
23 ноября 2010 года
Sanila_san
1.6K / / 07.06.2005
Ну вот нафига все эти экзерсисы? Есть же YAML, есть JSON, XML. Нет, я понимаю, конечно, что есть похожие друг на друга Python и Ruby, но они ж не только синтаксисом отличаются. Что такого делает ZML, чего не делают остальные?
241
23 ноября 2010 года
Sanila_san
1.6K / / 07.06.2005
И вообще, автор: не так надо раскручивать проект. Создайте сайт или проект на сурсфорже, выложите библиотеки хотя бы на чём-то одном (C#, Python, Java - не важно), и тогда уже сама жизнь покажет, насколько идея крута.
1
24 ноября 2010 года
kot_
7.3K / / 20.01.2000
Цитата: Sanila_san
Ну вот нафига все эти экзерсисы?


это как раз таки легко объяснить. Достаточно посмотреть на название "формата".
Ранее школота могла проявить свой "глубокий" внутренний мир вырезав на дереве "Здесь был вася", а сейчас меняет копирайты в убунте и создает свои "форматы". Технологии не стоят на месте.

244
24 ноября 2010 года
UAS
2.0K / / 19.07.2006
Как ни странно - но такие работы получают большое одобрение в школьном сообществе. Потому может человек так и стремится к этому.

[offtop]
Просто у меня самого был случай в школе, когда я сделал хороший (для тех времен и моего уровня): анализ веб-технологий, что хорошо, что плохо, статистики всякие.
А опередил меня на регионе (и вышел на Россию) человек, который изобрел "новый браузер". Новый браузер являлся прикручиванием стандартного движка IE через стандартные средства IDE (кидание на форму) - и все прям охали и охали от него и хвалили "новый хороший браузер". Тут походу то же самое, ну если автор школьник)
[offtop]
11
24 ноября 2010 года
oxotnik333
2.9K / / 03.08.2007
Цитата: UAS

[offtop]
Просто у меня самого был случай в школе, когда я сделал хороший (для тех времен и моего уровня) анализ веб-технологий, что хорошо, что плохо, статистики всякие.
А опередил на регионе (и вышел на Россию) человек, который изобрел "новый браузер". Новый браузер являлся прикручивание стандартного движка IE через стандартные средства IDE (кидание на форму) - и все прям охали и охали от него и хвалили "новый хороший браузер". Тут похожу то же самое, ну если автор школьник)
[offtop]


мля, у нас в каждой школе по Попову есть штоли? богата же страна идиотами (больше проверяющими, нежели изобретающими)

241
26 ноября 2010 года
Sanila_san
1.6K / / 07.06.2005
Ну уж ругаться. Идеи-то в воздухе витают, и автору респект за способность описать синтаксис хоть как-нибудь абстрактно. Это уже что-то. Но называть язык своим именем - таки да, с kot_'ом полностью согласен. Оттуда все корни и растут. Не получается сказать новое слово в чём-то весомом, так хоть здесь. И таки да, автор: ну где ссылка на сурсфорже?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог