02.09.2013, 04:32
|
#25
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: TatEngine
Сообщение от jimon
удобнее писать руками, удобнее читать глазами, меньшая избыточность, 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 } ] },
]
|
Чем не:
sprites: [
{ "transform": { "x": 5 } },
{ "transform": { "x": 20 } },
]
?
Сообщение от jimon
еще думаем над всякими плюшками типа 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)
}
и всякие прочие штуки чтобы упростить жизнь и сделать язык от которого оргазмируешь в прямом смысле
|
Это не будет языком, а будет "разметкой".
Да и любая попытка "упростить" требует создание каких либо механик, а они в 90% не оправдываются продакшаном и имеют ограничения. Которые в итоге вынудят других разрабатывать свои велосипеды.
Те же schem'ы, всегда имели % разрабов их не уважающих.
|
(Offline)
|
|