Сообщение от moka
Какие преимущества у GML над JSON'ом?
|
удобнее писать руками, удобнее читать глазами, меньшая избыточность, lazy syntax, ну и да - комментарии в коде
разделителем может быть : или , или ; или его вообще может и не быть
например :
// gml
sprite { transform { x: 5 } }
sprite { transform { y: 20 } }
// json
[
{ "type" : "sprite", "childrens" : [ { "type" : "transform", "x" : 5 } ] },
{ "type" : "sprite", "childrens" : [ { "type" : "transform", "x" : 20 } ] },
]
еще думаем над всякими плюшками типа string literals и raw strings (как в C++), что позволит писать GML в UTF-8, а на выходе получать строку в UTF-16 или 32, а raw strings позволит не экранировать символы в теле строки и писать там скрипты любой сложности прям внутри GML файла
например :
script
{
text : R"(
// lua script
print("wow");
)"
}
стараемся упростить все до предела чтобы на нем именно ХОТЕЛОСЬ писать, есть много красивых инструментов, а любимых очень мало
так же в schema-driven будет много экспериментальных вещей : lazy types, lazy nested objects, lazy scripts и тд, но это не относится к синтаксису языка
например :
/* сам объект sprite по schema требует чтобы к нему был присоединен объект типа transform, у sprite для этого есть дефолтное поле с именем transform которое принимает ссылку (bind в терминологии qml) на объект с типом transform */
sprite
{
// но если мы опишем объект с типом transform в теле sprite то gml сам его подхватит и прилинкует к полю transform
transform { }
}
sprite
{
transform { id: a }
transform { id: b }
transform : a // спрайт будет двигаться трансформом A
}
sprite
{
transform : transform { x : 5 } // nested objects
}
spr // вместо указания полного типа можно указывать только первые буквы, да и еще убирая гласные (эксперимент)
{
trn { x: 5 }
}
spr
{
trn.x : 5 // можно обращаться к полям объекта через поля-ссылки
}
spr
{
trn.x := math.sin(t) * 50 // если вместо : написать = или := то парсер будет ожидать nested script, выражение с = выполнится во время загрузки, выражение с := будет выполнятся каждый кадр (reactive programming)
}
и всякие прочие штуки чтобы упростить жизнь и сделать язык от которого оргазмируешь в прямом смысле